![]() |
DBGrid anpassen der Weite der Spalte automatisch
Hallo Leute,
ich habe hier diesen Code von ![]() habe es vielleicht richtig ausgebessert, doch es klappt immer noch nicht. Meine Spalten werden nicht mit MAX size der DATEN pro Spalte automatisch angepasst.
Delphi-Quellcode:
Weiß wer Rat wie man sowas richtig macht? Denke das Problem ist schon öfters gelöst worden. Habe Delphi Berlin.
procedure tform1.FixDBGridColumnsWidth(const DBGrid: TDBGrid);
var i : integer; TotWidth : integer; VarWidth : integer; ResizableColumnCount : integer; AColumn : TColumn; begin//total width of all columns before resize TotWidth := 0; //how to divide any extra space in the grid VarWidth := 0; //how many columns need to be auto-resized ResizableColumnCount := 0; for i := 0 to -1 + DBGrid.Columns.Count do begin TotWidth := TotWidth + DBGrid.Columns[i].Width; if DBGrid.Columns[i].Field.Tag <>0 then Inc(ResizableColumnCount); end; //add 1px for the column separator lineif dgColLines in DBGrid.Options then TotWidth := TotWidth + DBGrid.Columns.Count; //add indicator column widthif dgIndicator in DBGrid.Options then TotWidth := TotWidth + IndicatorWidth; //width vale "left" VarWidth := DBGrid.ClientWidth - TotWidth; //Equally distribute VarWidth //to all auto-resizable columnsif ResizableColumnCount > 0 then VarWidth := varWidth div ResizableColumnCount; for i := 0 to -1 + DBGrid.Columns.Count do begin AColumn := DBGrid.Columns[i]; if AColumn.Field.Tag <> 0 then begin AColumn.Width := AColumn.Width + VarWidth; if AColumn.Width <> 0 then AColumn.Width := AColumn.Field.Tag; end; end; end; (*FixDBGridColumnsWidth*) DANKE mfg ws |
AW: DBGrid anpassen der Weite der Spalte automatisch
if AColumn.Width <> 0 then
AColumn.Width := AColumn.Field.Tag; Erschliesst sich mir nicht. Wie ist denn das genaue Fehlerbild? Wie wird Tag verwendet? TAG=0 die Breite wird nicht geändert? oder TAG enthält eine feste Breite? |
AW: DBGrid anpassen der Weite der Spalte automatisch
alles columns haben alles die gleiche breite.
auf der www site steht: Zitat:
|
AW: DBGrid anpassen der Weite der Spalte automatisch
Ich mache nichts mit Daten, aber da sind ein paar Stellen, wo dir die Kopie von der website mit dem code fehlgeschlagen ist, aufgrund der schlunzigen Formatierung da:
An einigen Stellen ist dir code in den Kommentar gerutscht. Die letzten beiden Zeilen sollten wahrscheinlich sein
Delphi-Quellcode:
denn in dem .Tag sollte doch die Minimalweite stehen.
if AColumn.Width <= 0 then
AColumn.Width := AColumn.Field.Tag; Hab' ich nicht getestet, denn wie gesagt ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:57 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