سؤال

حسنا، نوع من السؤال n00b مني. لقد متجول على شبكة الإنترنت، ومماثلة الأسئلة هنا ولكن لم يتم العثور على أي الأجوبة الصحيحة لهذه بسيطة (كما اعتقدت) مشكلة.

ولدي DBGrid. I تحديد صف واحد وجعل بعض الإجراءات مع بيانات أخرى مرتبطة بهذا الخلاف. بعد أن انتهيت يا DBGrid يجري تحديثها وإعادة تعيين إلى أول الصف المحدد. أريد أن أحصل على نفس الصف المحدد الذي تم تحديده قبل تحديث البيانات DBGrid. أي اقتراحات؟

هل كانت مفيدة؟

المحلول

وقبل منعش، حفظ التحديد الحالي مجموعة البيانات مرتبطة باعتبارها المرجعية، ثم استعادة المرجعية بعد ذلك.

نصائح أخرى

ويهدف هذا الجواب كمكمل طفيفة في ماسون، وليس بديلا. واضاف لقد كان فقط لأنه قد بدا إجابة أخرى، مما يشير، بشكل غير صحيح المنظمة البحرية الدولية، واستخدام خاصية RECNO مجموعة البيانات و. ليس كل نسل TDataSet تنفيذ RECNO موثوق أو على الإطلاق. بعض أحفاد فقط بإرجاع قيمة ثابتة مثل 0 لRECNO الصفوف الحالية والقيام بأي شيء عند تعيين قيمة له.

procedure TMyForm.DoSomethingWithDataSet(ADataSet : TDataSet);
var
  Bookmark : TBookmark;
begin
  Bookmark := ADataSet.GetBookmark; // Save your place in ADataSet

  try
    Screen.Cursor := crSqlWait;  // Show the user that something is happening
    Update;  // update the form to make sure screen cursor updates
    ADataSet.DisableControls;
    // do something with ADataSet here  e.g.
    ADataSet.First;
    while not ADataSet.Eof do begin
      // do something with current row here, then
      ADataSet.Next;
    end;
  finally
    ADataSet.GotoBookmark(Bookmark);  // Return to where you were at outset
    ADataSet.FreeBookmark(Bookmark);
    ADataSet.EnableControls;
    Screen.Cursor := crDefault;  // Let the user see you're done
  end;
end;
RecKey:=DmFRM.ViewTBL.RecNo;
          with DmFRM.ViewTBL do
               begin
                  Active:=false;
                  Active:=True;
                  RecNo:=RecKey;
               end;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top