Delphi-PRAXiS
Seite 1 von 2  1 2      

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 - Scrollbar (https://www.delphipraxis.net/72746-tdbgrid-scrollbar.html)

Andy U 6. Jul 2006 09:18


TDBGrid - Scrollbar
 
Hallo,

ich habe ein Problem mit der vertikalern Scrollbar in der TDBGrid-Klasse. Die Kennt nämlich nur 3 Positionen (oben, mitte, unten). Sie soll aber wie eine "normale" ScrollBar anzeigen, wo ich mich in etwa befinde. Ich habe jetzt einige Zeit gesucht aber nichts gefunden, wo man das einstellen koennte.

Noch eine Frage: Kann man einstellen, dass nach dem Einlesen der Daten die erste und nicht die letzte Zeile angezeigt wird?


Vielen Dank schon mal.

Andy U

Thanatos81 6. Jul 2006 09:22

Re: TDBGrid - Scrollbar
 
Zitat:

Zitat von Andy U
Hallo,

ich habe ein Problem mit der vertikalern Scrollbar in der TDBGrid-Klasse. Die Kennt nämlich nur 3 Positionen (oben, mitte, unten). Sie soll aber wie eine "normale" ScrollBar anzeigen, wo ich mich in etwa befinde. Ich habe jetzt einige Zeit gesucht aber nichts gefunden, wo man das einstellen koennte.

Was benutzt du für eine Datenmenge? AFAIR tritt das Phänomen dann auf, wenn der Datset gefiltert ist, also z.B. TTable.Filtered := true;

Zitat:

Zitat von Andy U
Noch eine Frage: Kann man einstellen, dass nach dem Einlesen der Daten die erste und nicht die letzte Zeile angezeigt wird?


Vielen Dank schon mal.

Andy U

Du könntest im OnAfterOpen deiner Datenmenge ein Datenmenge.First; aufrufen.

Andy U 6. Jul 2006 09:30

Re: TDBGrid - Scrollbar
 
Hi,

also TTable.Filtered ist false
(Was habi ich unter Datenmenge zu verstehen? TTable-Objekt?)

OnAfterOpen finde ich nicht...

Thanatos81 6. Jul 2006 09:35

Re: TDBGrid - Scrollbar
 
Zitat:

Zitat von Andy U
Hi,

also TTable.Filtered ist false
(Was habi ich unter Datenmenge zu verstehen? TTable-Objekt?)

Genau, TTAble ist ein Nachkomme von TDataset, hätte ja auch sein können, dass du TQuery oder andere als die BDE-Komponenten benutzt. Machst du vielleicht ein SetRange, oder irgendetwas anderes, was die Datenmenge einschränkt?

Zitat:

Zitat von Andy U
OnAfterOpen finde ich nicht...

Dann nimmste einfach AfterOpen ;-)

Andy U 6. Jul 2006 09:50

Re: TDBGrid - Scrollbar
 
nö, hab nichts gefunden. Die Tabelle wird aus einer einfachen DBase-Datei gelesen und angezeigt.

(Ich ändere hier ein Programm, das ich nicht selbst geschrieben habe, deshalb muss ich manchmal erst suchen, weil auswendig kenne ich es dann doch nicht)

sh17 6. Jul 2006 09:55

Re: TDBGrid - Scrollbar
 
Das Problem liegt wahrscheinlich an der Table-Komponente, die von TDataset erbt. Ich hab das gleiche Problem mit der Datenbank TurboDB und noch keine gute Lösung gefunden.

Andy U 6. Jul 2006 10:04

Re: TDBGrid - Scrollbar
 
Zitat:

Zitat von sh17
Das Problem liegt wahrscheinlich an der Table-Komponente, die von TDataset erbt. Ich hab das gleiche Problem mit der Datenbank TurboDB und noch keine gute Lösung gefunden.

Was mich halt irgendwie wundert, ist dass das Ganze horizontal funktioniert...



Zitat:

Zitat von Thanatos81
Dann nimmste einfach AfterOpen ;-)

Wenn man sich zu dumm anstellt... (wenigstens das geht jetzt! danke.)

Peinhard 8. Jul 2006 11:15

Re: TDBGrid - Scrollbar
 
Kurze und ernüchternde Anwort: TDBGrid kann das nicht für TDataset-Abkömmlinge, die nicht 'sequenced' sind (TDataset.IsSequenced), da diese keine korrekte Implementation von RecNo haben - und die braucht man natürlich, um die Position anzuzeigen. Es läßt sich also auch nicht 'einstellen', man kann es nur 'nachrüsten' - entweder in einem TTable-Abkömmling (elegant) oder direkt in TDBGrid.UpdateScrollbar (weniger elegant, aber die Lektüre der Prozedur ist 'problemerhellend'). Mit dBase-Dateien und BDE ist man aber auch da aufgeschmissen, da die BDE-Funktion dbiGetSeqNo vom dBase-Treiber nicht unterstützt wird.

peinhard

Andy U 10. Jul 2006 10:32

Re: TDBGrid - Scrollbar
 
Zitat:

Zitat von Peinhard
Mit dBase-Dateien und BDE ist man aber auch da aufgeschmissen, da die BDE-Funktion dbiGetSeqNo vom dBase-Treiber nicht unterstützt wird. peinhard

Wenn ich also dBase-Dateien und BDE benutze muesste ich quasi ein eigenes Objekt haben, dass die Tabelle darstellt, die "Zeilennummern" auslesen kann und dementsprechend eine anstaendige ScrollBar anbieten kann. Oder?

Peinhard 10. Jul 2006 11:02

Re: TDBGrid - Scrollbar
 
Radio Eriwan - im Prinzip ja. Allerdings unterstützt der dBase-Treiber der BDE eben keine sequentiellen, sondern nur die 'festen' RecNo des dBase-Formats. Das ginge noch gut, solange die Tabelle in ihrer ursprünglichen, 'physischen' Sortierung vorläge. Sobald sie aber zB durch einen Index sortiert vorliegt, sind auch die festen RecNo der einzelnen Datensätze uU wild durcheinandergeworfen und die Scrollbar würde ziemlich wilde Tänze aufführen, da in einer Index-Sortierung zB die RecNo 3582 direkt nach 41 und direkt vor 793 stehen könnte... Langer Rede kurzer Sinn - mit dBase und BDE lautet der Bescheid 'vergiß es' (been there, done that...). Mit Paradox dagegen wäre es implementierbar.

peinhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz