Delphi-PRAXiS
Seite 3 von 3     123   

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/)
-   -   Spaltenbreite DBGrid automatisch anpassen (https://www.delphipraxis.net/158331-spaltenbreite-dbgrid-automatisch-anpassen.html)

andydp 10. Okt 2012 14:57

AW: Spaltenbreite DBGrid automatisch anpassen
 
Hallo Leute

Hab das StringGrid von

http://www.tmssoftware.com/site/advgrid.asp


genommen. Ist genial, damit kannn man alles machen.
Mit einer einfachen Programmzeile:

Code:
AdvStringGrid1.AutoSizeColumns(True, 4);
Werden die Spalten automatisch an die Textgrösse angepasst.
Ist nicht ganz billig, aber wenn man die Zeit fürs "Rumwursteln" rechnet. Bestimmt nicht die schlechteste Wahl.

Furtbichler 10. Okt 2012 19:02

AW: Spaltenbreite DBGrid automatisch anpassen
 
Das Argument, das das Ganze bei 12 Mio Datensätzen vielleicht doch etwas länger dauert kann man dadurch begegnen, das man einfach vorgibt, das die Messung der Spaltenbreite nach X Zeilen beendet wird. So macht das DevExpress. Dann werden nur die ersten (z.B.) 500 Zeilen eingelesen per Canvas.GetTextWidth ausgemessen. Das reicht eigentlich immer, denn wer scrollt schon 500 Zeilen nach unten.

Das dynamische Anpassen hatte ich mal gemacht, als ich paging implementiert habe. Man freut sich, das es so schön funktioniert, aber irgendwie nervt es nach ner WEile.

Perlsau 11. Okt 2012 08:31

AW: Spaltenbreite DBGrid automatisch anpassen
 
Ich lasse gewöhnlich den Anwender entscheiden, wie breit er seine Spalten haben möchte, und speichere die Abmessungen in einer extra Tabelle, in der nur solche Anwender-Daten hinterlegt werden. Meine DBGrids starten meist – d.h. wenn es so viele Felder in der Tabelle gibt, daß sie auch auf einem sehr breiten Screen nicht alle gleichzeitig darstellbar sind – mit einer Standard-Spaltenbreite, die sich nicht an der möglichen Länge der Tabellen-Inhalte orientiert, sondern an der Länge des Spalten-Titels. Der Anwender kann sich dann seine bevorzugten Spaltenbreiten selber einstellen, seine Einstellungen werden beim Beenden des Programms (oder auch, wenn man will, nach jeder Spaltenbreiten-Änderung) in der DB gespeichert und bei Programmstart wieder eingelesen und angewendet:

Delphi-Quellcode:
// Spaltenbreiten DBGrid_V_Artikel in FormMain
     z := FormMain.DBGrid_V_Artikel.Columns.Count -1;
     FOR i := 0 TO z DO
     BEGIN
          Aus := IntToStr(i);
          IF i < 10 THEN Aus := N + Aus;
          Aus := 'TAB_ARTIKEL_' + Aus;
          FormMain.DBGrid_V_Artikel.Columns[i].Width := DatMod.Dset_Tabellen.FieldByName(Aus).AsInteger;
     END;

joachimd 12. Okt 2012 08:22

AW: Spaltenbreite DBGrid automatisch anpassen
 
Zitat:

Zitat von Perlsau (Beitrag 1186616)
Ich lasse gewöhnlich den Anwender entscheiden, wie breit er seine Spalten haben möchte, und speichere die Abmessungen in einer extra Tabelle, in der nur solche Anwender-Daten hinterlegt werden.

Dito, nur streame ich die DBGrid.Columns in ein Blob-Feld. Damit spart man sich das Iterieren und hat aber auch gleich andere Eigenschaften (wie zB Lookup-Listen u.ä.) mit drin.

Perlsau 12. Okt 2012 08:26

AW: Spaltenbreite DBGrid automatisch anpassen
 
Zitat:

Zitat von joachimd (Beitrag 1186719)
Zitat:

Zitat von Perlsau (Beitrag 1186616)
Ich lasse gewöhnlich den Anwender entscheiden, wie breit er seine Spalten haben möchte, und speichere die Abmessungen in einer extra Tabelle, in der nur solche Anwender-Daten hinterlegt werden.

Dito, nur streame ich die DBGrid.Columns in ein Blob-Feld. Damit spart man sich das Iterieren und hat aber auch gleich andere Eigenschaften (wie zB Lookup-Listen u.ä.) mit drin.

Die Einstellungen in ein Blobfeld zu streamen ist mir noch nicht in den Sinn gekommen, scheint aber eine gute Idee zu sein. Muß ich bei Gelegenheit mal ausprobieren. Vielen Dank für deine Anregung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.
Seite 3 von 3     123   

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