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 DBGrid (https://www.delphipraxis.net/152480-dbgrid.html)

-187- 23. Jun 2010 23:57

DBGrid
 
Ich war vergebens auf der Suche nach einer TopRow Eigenschaft von DBGrid. Leider gibt es sowas nicht. Hat jemand ne Idee wie ich das DBGrid on Button Click zum letzten Datensatz scrollen lassen kann ?

Sir Rufo 24. Jun 2010 00:11

AW: DBGrid
 
Die Steuerung erfolgt hierbei über das Dataset.

Delphi-Quellcode:
DBGrid1.DataSource.DataSet.Last;

-187- 24. Jun 2010 05:36

AW: DBGrid
 
Alles klar, danke :)

-187- 24. Jun 2010 10:57

AW: DBGrid
 
Hm eine Sache ist mir noch aufgefallen:

Immer wenn der DataSource einen neuen Eintrag erhält dann wird das DBGrid komplett neu gezeichnet. In meiner Situation ist das ein bisschen blöd denn:

Ich kriege aus einem anderen Thread permanent Einträge rein und so ist das arbeiten am DBGrid während dieses Vorgangs unmöglich. Das DBGrid ist fast nur am flimmern ...

Ich hoffe das könnt ihr nachvollziehen ;) Kann man da irgnedwas machen ?

Bernhard Geyer 24. Jun 2010 11:13

AW: DBGrid
 
Schmeiß die DB-Sensitiven Controls raus und arbeite ohne diese. Ab einer bestimmten komplexität des Programms bereiten diese eigentlich nur noch Probleme.

-187- 24. Jun 2010 12:02

AW: DBGrid
 
Mir als Neuling sagt das nicht viel :) Meinst du ich soll die DataSource Property für das DBGrid entfernen ?

Hansa 24. Jun 2010 12:11

AW: DBGrid
 
Nein, Du sollst das DBGrid selber rausschmeissen. Verwende einfach normales Stringgrid und dafür dann eben öfter FieldByName, AsString & Co. Im Endeffekt produziert das DBGrid mehr Probleme, als dass es nützlich ist.

-187- 24. Jun 2010 12:26

AW: DBGrid
 
Ohje :D Mir wurde extra vorgeschlagen ein DBGrid zu nehmen.. Hm ne andere Möglichkeit gibts da nicht?

Ansonsten könnt ich nur noch nen Refresh Button einbauen und das DBGrid on Button1.Click zeichnen...

Hansa 24. Jun 2010 12:41

AW: DBGrid
 
Wer hat das vorgeschlagen ? Tja, auf den ersten Blick könnte man ja meinen, so was wie DBGrid wäre gut. Hört sich ja schon sinnvoll an. Aber : zumindest für mich zu unflexibel. 1. Baue Dir eine Form mit Universal-Stringgrid zusammen, welches immer benötigte Grundfunktionalität besitzt (Zellenausrichtung, Zahlenformatierung, OnClick etc.). 2. Schiebe dieses Teil in die Objektablage, damit es immer verfügbar ist und fertig. Diese Vorarbeiten sind zwar je nachdem recht umfangreich, aber im Endeffekt lohnend. Sollte es nur um 1 Programm, 1 Form gehen, dannn ist man eventuell mit DBGrid-Kompromissen und Trickserei etwas schneller am Ziel. Betonung liegt hier bei 'eventuell'.

Stevie 24. Jun 2010 12:52

AW: DBGrid
 
DB-Sensitiven Controls an sich sind super, nur das TDBGrid ist nicht wirklich toll (nicht umsonst gibts da mehrere große Drittanbieter für)

-187- 24. Jun 2010 13:11

AW: DBGrid
 
Na gut, weil es das einzigste Manko ist werde ich erstmal die Refresh Variante versuchen. Ansonsten werd ich an einem Umbau nicht vorbei kommen.

-187- 26. Jun 2010 23:27

AW: DBGrid
 
Hm ich habe keinen schönen Weg gefunden das DBGrid manuell zu refreshen.

Die einzigste Möglichkeit die ich gesehen habe war das Transaction.Commit manuell aufzurufen. Dann wird aber auch die DB erst geschrieben wenn ich Commit aufrufe. Das hat viele Nachteile...

Ich möchte die DB ganz normal schreiben aber das DBGrid soll sich erst auf zb Button1.Click zeichnen.

Ich habe im DBGrid keine passende Eigenschaft gefunden. Ich habe es zwar mal mit DataSet.Active False / True versucht aber leider auch Erfolglos.

Jemand eine Idee?

mkinzler 27. Jun 2010 07:04

AW: DBGrid
 
Zitat:

Das hat viele Nachteile...
Kann aber auch Vorteile haben ( Datenänderungsbläcke entweder/oder, Geschwindigkeit, ...)

-187- 27. Jun 2010 09:44

AW: DBGrid
 
Naja alles wird seine Vor- und Nachteile haben. Ich denke der größte Nachteil wäre hier ein Datenverlust wenn das Programm abschmiert und man vorher nicht manuell commit aufgerufen hat..

Habs immernoch nicht geschafft... :P

idefix2 27. Jun 2010 10:56

AW: DBGrid
 
Mittels Dataset.active sollte das eigentlich funktionieren. Was geht da genau nicht?

-187- 27. Jun 2010 11:51

AW: DBGrid
 
Hm ne ich habe das DataSet des DBGrid sogar default Active:=False;

Code:
DBGrid1.DataSource.DataSet.Active:=False;
Das DBGrid füllt sich trotzdem ...Hm es scheint als würde irgendein Ereignis diese Eigenschaft auf True setzen...


Edit: Ok "IBTable1.Active:=True;" setzt DBGrid1.DataSource.DataSet.Active=True; Kann das sein ?

Edit2: Hm okay das Problem ist wenn ich "DBGrid1.DataSource.DataSet.Active:=False;" setzt dann "merkt" sich das DBGrid nicht die vorhandenen Einträge sondern leer alles.

Also muss ich die Einträge zwischenspeichern können..

-187- 27. Jun 2010 17:48

AW: DBGrid
 
Okay jetzt gehts, hab ne 2te Table Komponente benutzt.


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