![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: MyDac
Spaltenbreite im TDBGrid
hallo zusammen,
wenn ich daten aus einer datenbank abfrage und diese über ein datasource in meinem dbgrid anzeigen lasse, dann wird als spaltenbreite auf die länge des datenbank feldes angepasst... gibt es auch eine möglichkeit die spaltenbreite an den längsten wert des feldes anzupassen? also so etwas ähnliches wie im excel... dort heißt es glaub "autofit" |
Re: Spaltenbreite im TDBGrid
so für alle die des auch suchen...
so kann man en autofit für alle spalten auf sein dbgrid machen:
Delphi-Quellcode:
ob des die beste lösung is... kp... aufjedenfall funktionierts
procedure TForm1.Button4Click(Sender: TObject);
var iMaxTextLength : Integer; i, j : Integer; begin //Columns For i := 0 To dbgrid_layout.Columns.Count -1 Do Begin //Row per Column iMaxTextLength := 0; For j := 1 To dbgrid_layout.DataSource.DataSet.RecordCount Do Begin dbgrid_layout.DataSource.DataSet.RecNo := j; If dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Field.DisplayText) > iMaxTextLength Then Begin iMaxTextLength := dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Field.DisplayText); End; End; //Check Title Text longer then Item Text If dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Title.Caption) > iMaxTextLength Then Begin dbgrid_layout.Columns[i].Width := dbgrid_layout.Canvas.TextWidth(dbgrid_layout.Columns[i].Title.Caption) + 10; End Else Begin dbgrid_layout.Columns[i].Width := iMaxTextLength + 10; End; End; dbgrid_layout.Repaint; end; Edit: Source Code aktualisiert |
Re: Spaltenbreite im TDBGrid
Es gibt noch die Property "DisplayWidth" ;-)
|
Re: Spaltenbreite im TDBGrid
inwieweit würde die mir helfen?
|
Re: Spaltenbreite im TDBGrid
Damit kannst Du bestimmen, wie breit ein Feld bei der Anzeige sein soll.
Da Du nun aber sowieso ein eigenes AutoFit gemacht hast, brauchst Du das nicht mehr. |
Re: Spaltenbreite im TDBGrid
ok... aber damit ich displaywidth nutzen kann müsste ich ja erst mal wissen wie lang der längste text in der spalte ist... oder gibt mir display width genau den zurück?
|
Re: Spaltenbreite im TDBGrid
jetzt hab ich aber folgendes problem...
der obige source gibt mir manchmal die fogende fehlermeldung aus: EInvalidPointer "Ungültige Zeigeroperation" aber die fehlermeldung kommt nicht immer... hatt jemand eine idee woran das liegen kann??? |
Re: Spaltenbreite im TDBGrid
Hallo,
ich habe deinen Code nicht getestet, aber mich stutzt ein wenig deine Schleife
Delphi-Quellcode:
Warum ab 0? Wenn Du keine Datensätze hast, dann wird das trotzdem durchlaufen und deine .RecNo=0 müsste auch scheitern.
For j := 0 To dbgrid1.DataSource.DataSet.RecordCount Do
Begin dbgrid1.DataSource.DataSet.RecNo := j; Ist das vielleicht dein Problem? Ciao Frank |
Re: Spaltenbreite im TDBGrid
Zitat:
aber selbst wenn ich bei 1 beginne tritt der fehler auf... |
Re: Spaltenbreite im TDBGrid
*push*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 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