AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein DBGrid anpassen der Weite der Spalte automatisch
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid anpassen der Weite der Spalte automatisch

Ein Thema von wschrabi · begonnen am 23. Mai 2022 · letzter Beitrag vom 23. Mai 2022
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#1

DBGrid anpassen der Weite der Spalte automatisch

  Alt 23. Mai 2022, 06:17
Hallo Leute,
ich habe hier diesen Code von www.thoughtco.com/auto-fix-dbgrid-column-widths-4077417 der ja ein wenig bugg ist.
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:
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*)
Weiß wer Rat wie man sowas richtig macht? Denke das Problem ist schon öfters gelöst worden. Habe Delphi Berlin.
DANKE
mfg
ws
  Mit Zitat antworten Zitat
KarstenK

Registriert seit: 4. Dez 2007
Ort: Bärenthal
29 Beiträge
 
Delphi 2009 Enterprise
 
#2

AW: DBGrid anpassen der Weite der Spalte automatisch

  Alt 23. Mai 2022, 07:08
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?
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
437 Beiträge
 
#3

AW: DBGrid anpassen der Weite der Spalte automatisch

  Alt 23. Mai 2022, 09:49
alles columns haben alles die gleiche breite.
auf der www site steht:

Zitat:
Before you begin, in the OnCreate event for the Form object containing the DBGrid, specify what columns need to be auto-resized by assigning a non-zero value for the Tag property of the corresponding TField object.
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DBGrid anpassen der Weite der Spalte automatisch

  Alt 23. Mai 2022, 23:11
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:
if AColumn.Width <= 0 then
 AColumn.Width := AColumn.Field.Tag;
denn in dem .Tag sollte doch die Minimalweite stehen.

Hab' ich nicht getestet, denn wie gesagt ...
Renate

Geändert von Renate Schaaf (23. Mai 2022 um 23:20 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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