Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   DBGrid Position merken (https://www.delphipraxis.net/154965-dbgrid-position-merken.html)

-187- 3. Okt 2010 18:25

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?

dataspider 3. Okt 2010 18:43

AW: DBGrid Position merken
 
Zitat:

Zitat von -187- (Beitrag 1053505)
Habe mir mal .GetBookmark angeschaut aber damit hat es nicht geklappt.

Damit sollte es aber gehen. Zeig doch mal deinen Code...

Frank

haentschman 3. Okt 2010 18:55

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.

dataspider 3. Okt 2010 19:26

AW: DBGrid Position merken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von haentschman (Beitrag 1053514)
Ich glaube die Bookmarks sind nach einem Refresh wieder zurückgesetzt.

Normalerweise nicht. Man kann auch die Datenmenge schliessen und wieder öffnen.
Im Anhang ein Beispiel mit Delphi Bordmitteln.

Frank

-187- 3. Okt 2010 19:53

AW: DBGrid Position merken
 
Hm also ich hatte es so versucht:

Code:
var
  Bookmark: Pointer;
begin
  Bookmark:=DBGrid1.DataSource.DataSet.GetBookmark;

  ...Mach irgendwas mit der DB...

  DBGrid1.DataSource.DataSet.GotoBookmark(Bookmark);
end;
Wie merk ich mir die ID ? Ich bin ein blutiger Anfänger was Datenbanken angeht :)

haentschman 3. Okt 2010 20:53

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.

-187- 3. Okt 2010 21:23

AW: DBGrid Position merken
 
Hm das funktioniert nicht, Es wird keine Row selektiert.

-187- 3. Okt 2010 21:52

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:
  Cell:=DBGrid1.SelectedField.AsString;
...
...
  DBGrid1.DataSource.DataSet.Locate('NUMBER',Cell,[loPartialKey,loCaseInsensitive]);
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 ?

-187- 4. Okt 2010 13:34

AW: DBGrid Position merken
 
Push

shmia 4. Okt 2010 13:51

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.

-187- 4. Okt 2010 14:20

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 ...

shmia 4. Okt 2010 15:51

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));

-187- 4. Okt 2010 16:34

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