DBGrid Position merken
Hallo, ich suche nach einer Möglichkeit wie man sich die Selected Row merken kann sodass man nach einem Refresh diese Row wieder selektieren kann. Habe mir mal .GetBookmark angeschaut aber damit hat es nicht geklappt. Jemand einen Idee?
|
AW: DBGrid Position merken
Zitat:
Frank |
AW: DBGrid Position merken
Hallo...
Willst du den gleichen Datensatz wieder markieren auch bei geänderter Datenmenge ? Dann vorher die ID des Datensatzes merken und danach mit Locate wieder drauf setzen. Ich glaube die Bookmarks sind nach einem Refresh wieder zurückgesetzt. |
AW: DBGrid Position merken
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Im Anhang ein Beispiel mit Delphi Bordmitteln. Frank |
AW: DBGrid Position merken
Hm also ich hatte es so versucht:
Code:
Wie merk ich mir die ID ? Ich bin ein blutiger Anfänger was Datenbanken angeht :)
var
Bookmark: Pointer; begin Bookmark:=DBGrid1.DataSource.DataSet.GetBookmark; ...Mach irgendwas mit der DB... DBGrid1.DataSource.DataSet.GotoBookmark(Bookmark); end; |
AW: DBGrid Position merken
Ich hab mir die Demo jetzt nicht angeschaut...
Vieleicht ist das http://delphi.about.com/b/2010/09/16...w-position.htm das gleiche. |
AW: DBGrid Position merken
Hm das funktioniert nicht, Es wird keine Row selektiert.
|
AW: DBGrid Position merken
Ok ich hab das Problem jetzt anders gelöst. Ich merke mir den String Wert der UNIQUE ist und suche den dann mit Locate wieder. Soweit so gut, jedoch wird die Row dann ganz unten im sichtbaren Bereich des DBGrids angezeigt und die Row ist nicht selektiert. Wie selektiere ich die Row und wie krieg ichs hin das Sie oben steht.
Code:
E: Ok, das die Row danach wieder selektiert ist habe ich auch hingekriegt, bleibt noch das Problem das die Row ganz oben erscheinen soll. Im StringGrid gibt es TopRow oder so, gibt's da was vergleichbares fürs DBGrid bzw DataSource ?
Cell:=DBGrid1.SelectedField.AsString;
... ... DBGrid1.DataSource.DataSet.Locate('NUMBER',Cell,[loPartialKey,loCaseInsensitive]); |
AW: DBGrid Position merken
Push
|
AW: DBGrid Position merken
Die Reihenfolge der Datensätze wird ausschlieslich vom darunterliegenen Dataset bestimmt.
Entweder sind die Daten nach dem Primärschlüsselfeld sortiert oder es gibt eine ORDER By Klausel in der SQL-Abfrage. **) Möchte man an einer bestimmter Stelle einen Datensatz einfügen, dann darf man das Dataset nicht schliesen. Nach einem Refresh bzw. Schliesen/Öffnen springt dieser Datensatz an die Stelle, die durch **) definiert wird. |
AW: DBGrid Position merken
Daraus bin ich jetzt nicht wirklich schlau geworden. Das Problem ist das ich im OnClickTitle die Spalte sortiere. Vorher merk ich mir halt die Row und spring nach dem Sortieren mit Locate wieder in die Row. Leider wird diese Row nun aber aber ganz unten im DBGrid angezeigt und nicht ganz oben ...
|
AW: DBGrid Position merken
Wenn ich das richtig verstehe, erwartest du dass der aktuelle Datensatz im
DBGrid ganz oben steht? Es geht also darum, den angezeigten Ausschnitt im DBGrid entsprechen zu scrollen? Also für das DBGrid ist offiziell nichts vorgehen, aber du kannst ja mal versuchen 20 Datensätze nach hinten zu gehen und dann wieder zurück.
Delphi-Quellcode:
// 20 Zeilen vorwärts gehen
// und dann wieder zurückgehen Dataset.MoveBy(-Dataset.MoveBy(20)); |
AW: DBGrid Position merken
Okay ich denke das hat mir erstmal was gebracht. Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz