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/)
-   -   Delphi TDBGrid, TBookmarkList (https://www.delphipraxis.net/55217-tdbgrid-tbookmarklist.html)

Thanatos81 18. Okt 2005 08:06


TDBGrid, TBookmarkList
 
Guten Morgen DP!

Ich hab hier ein Projekt mit nem TDBGrid mit MultiSelect := true. Die Benutzer können nun mehrere Berichte markieren und eine Auswertung darüber erhalten oder Massenänderungen vornehmen.

Jetzt ist allerdings der unangenehme Effekt, dass beim GotoBookmark der Sprung im DBGrid sichtbar ist. Und diese Anzeige kostet bei ca. 10.000 Datensätze natürlich Zeit und sieht auch nicht wirklich schick aus.

Ausschalten per DBGrid.DataSource.DataSet.DisableControls oder DBGrid.DataSource := nil ist natürlich auch nicht möglich, da die TBookMarkList ja vom DBGrid gehalten wird.

Gibt es einige Möglichkeit aus DBGrid.SelectedRows.Items[i] Informationen über den Datensatz zu beziehen, ohne ihn zum aktuellen zu machen? Die RecNo würde mir ja schon reichen, oder ein Feldwert....

Danke im Voraus,

Sourcemaker 18. Okt 2005 09:54

Re: TDBGrid, TBookmarkList
 
Vielleicht wäre es eine Möglichkeit die Datenbank ein zweites Mal zu öffnen
und die Sprünge in dieser Datenbank vorzunehmen.
Vorraussetzung ist natürlich das die 2. Db etwas mit den Bookmark der 1 Db anzufangen
weiß.

Grüße

Frank

Thanatos81 18. Okt 2005 10:15

Re: TDBGrid, TBookmarkList
 
Ich habe es gerade folgendermaßen gelöst: ich setze einfach DBGrid.Visible auf false, dadurch hab ich eine Beschleunigung um ca. 20 Sekunden erreicht.

Danke für deine Antwort Soulmaker, ich hatte erst auch an eine zweite TTable gedacht, da aber das Netzwerk beim Kunden fast dauernd unter Volllast steht, wollte ich die Daten kein zweites Mal abrufen. Aber eventuell wird dort demnächst ein neues Netzwerk installiert, dann wäre das eine Überlegung wert.

Sourcemaker 18. Okt 2005 10:27

Re: TDBGrid, TBookmarkList
 
Wenn Du sagst die Bookmarklist geht verloren nachdem Du DisableControls
ausgeführt hast könntest Du die Bookmarklist (Grid.SelectedRows) vorher
sichern.

Gruß

Frank

Thanatos81 18. Okt 2005 10:31

Re: TDBGrid, TBookmarkList
 
Das hab ich schon versucht, allerdings muss beim Create einer TBookMarkList ein DBGrid übergeben werden. Und wenn ich mir DBGrid.SelectedRows.Items[i] (ist ein String) anschaue, ist dieser immer leer, selbst wenn alle Datensätze markiert sind...

Sourcemaker 18. Okt 2005 10:52

Re: TDBGrid, TBookmarkList
 
Als Alternative:
Bei meiner Db kann ich den RecNo direkt über:

Delphi-Quellcode:
nRecNo := integer(Pointer(DBGrid.SelectedRows.Items[i])^)
ermitteln.

Gruß

Frank

Thanatos81 18. Okt 2005 11:15

Re: TDBGrid, TBookmarkList
 
Ui! Das wäre genial, ich probiers mal nach der Mittagspause aus, Danke!

marsupilami79 18. Okt 2005 13:15

Re: TDBGrid, TBookmarkList
 
So 'ne Bookmark ist doch eigentlich auch nur 'n String. Sichere das ganze doch in 'nem dynamischen Array oder 'ner TStringList und mach dann DisableControls.

VizeTE 30. Nov 2005 11:03

Re: TDBGrid, TBookmarkList
 
Zitat:

Zitat von marsupilami79
So 'ne Bookmark ist doch eigentlich auch nur 'n String. Sichere das ganze doch in 'nem dynamischen Array oder 'ner TStringList und mach dann DisableControls.

Ich habe genau das selbe Problem und habe es wie vorgeschlagen gelöst. Das funktioniert soweit auch. Aber irgendwie kommt mir die Lösung etwas wacklig vor. Irgendwer wird sich ja sicherlich etwas dabei gedachte haben die Bookmark-Liste zu löschen falls die Controls deaktiviert werden.

Kann jemand etwas zu dieser Variante sagen (ist stabil/nicht stabil) oder hat vielleicht jemand einen anderen Lösungsansatz?

Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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