![]() |
AW: Spaltenbreite DBGrid automatisch anpassen
Hallo Leute
Hab das StringGrid von ![]() genommen. Ist genial, damit kannn man alles machen. Mit einer einfachen Programmzeile:
Code:
Werden die Spalten automatisch an die Textgrösse angepasst.
AdvStringGrid1.AutoSizeColumns(True, 4);
Ist nicht ganz billig, aber wenn man die Zeit fürs "Rumwursteln" rechnet. Bestimmt nicht die schlechteste Wahl. |
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. |
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; |
AW: Spaltenbreite DBGrid automatisch anpassen
Zitat:
|
AW: Spaltenbreite DBGrid automatisch anpassen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr. |
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-2025 by Thomas Breitkreuz