Thema: Delphi DBGrid Column autosize

Einzelnen Beitrag anzeigen

Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#2

Re: DBGrid Column autosize

  Alt 18. Dez 2003, 01:23
Hallo BenjaminHelbig,

ich verwende zur Lösung dieses Problems folgende Prozedur, getestet und funktionsfähig:

Code:
procedure UP_MinTabRow(Tab : TTable; dbg : TDBGrid);
const
  chkanz = 300; // CHecK ANZahl von Datensätzen zur Beschränkung des Zeitaufwandes
  maxfldanz = 100; // max. Anz. der Felder, die betrachtet werden
  minwidth = 20; // min. Breite
  korrwidth = 10; // Korr. der Spaltenbreite wg. besserer Optik
var
  i,
  fcnt,  // Field-Count
  aktrec,
  zel,
  len : integer;
  farr : array[0..maxfldanz] of integer;
begin
  // Tab1 - TTable
  if not Tab.Active then exit;
  Tab.DisableControls;

  aktrec := Tab.RecNo;
  zel := 0;
  for i:=0 to maxfldanz do farr[i] := minwidth;

  Tab.First;
  fcnt := Tab.FieldCount;
  if fcnt > maxfldanz then fcnt := maxfldanz;
  while (not Tab.EOF) and (zel < chkanz) do begin
    for i:=0 to fcnt-1 do begin
      len := dbg.Canvas.TextWidth(dbg.Columns.Grid.Fields[i].Text);
      if len > farr[i] then farr[i] := len;
    end;
    Tab.Next;
    inc(zel);
  end;
  for i := 0 to fcnt-1 do begin
    try
      dbg.Columns[i].Width := farr[i] + korrwidth;
    except
      dbg.Columns[i].Width := dbg.Columns[i].Width;
    end;
  end;
  Tab.RecNo := aktrec;
  Tab.EnableControls;
end;
mfg
eddy
  Mit Zitat antworten Zitat