Frage

Nun ja, eine Art von n00b Frage von mir. Ich habe die Netto-und ähnliche Fragen hier gesurft, aber haben keine richtigen Antworten für solche einfachen gefunden (wie ich dachte) Problem.

Ich habe eine DBGrid. Ich wähle eine Zeile und einige Aktionen mit weiteren Daten zu dieser Zeile verknüpft werden. Nachdem ich fertig ist, wird mein DBGrid aktualisiert und ausgewählte Zeile setzt zunächst. Ich möchte die gleiche Zeile ausgewählt erhalten, die vor dem Auffrischen DBGrid Daten ausgewählt wurde. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Vor erfrischend, die verknüpfte Datenmenge aktuelle Auswahl als Lesezeichen speichern, dann danach das Lesezeichen wiederherstellen.

Andere Tipps

Diese Antwort ist eine kleinere Ergänzung zu Masons beabsichtigt, keine Alternative. Ich habe es nur hinzugefügt, weil eine andere Antwort hat sich gezeigt, was darauf hindeutet, falsch imo, die Nutzung der RecNo Eigenschaft des Datensatzes. Nicht alle Nachkommen von TDataSet RecNo zuverlässig oder überhaupt umzusetzen. Einige Nachkommen zurückkehren nur einen konstanten Wert z.B. 0 für die aktuellen Zeilen des RecNo und nichts zu tun, wenn Sie einen Wert zuweisen.

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top