Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: StringGrid Spalten Zentrieren, Linksbündig,Rechtsbündig

  Alt 4. Aug 2009, 19:51
Hallo,
Delphi-Quellcode:
{
  Name:
    GetMaxColWidth
  Zweck:
    maximale Breite der Spalte ermitteln
  Parameter:
    theGrid - das Grid
    theCol  - spalte, deren maximale Breite ermittelt werden soll
  Return-Parameter:
  Return:
    die maximale Breite der Spalte
  Hinweis:
}

function GetMaxColWidth(theGrid: TStringGrid; theCol: Longint): Longint;
var
  MaxLen: Integer;
  CurLen: Integer;
  CurRow: Longint;
begin
  MaxLen:=0;

  if theGrid.Owner<>NIL then
  begin
    for CurRow:=0 to theGrid.RowCount-1 do
    begin
      CurLen:= theGrid.Canvas.TextWidth(theGrid.Cells[theCol,CurRow]);
      if CurLen>MaxLen then MaxLen:= CurLen;
    end;
    Inc(MaxLen,5);
  end;

  Result:= MaxLen;
end; { GetMaxColWidth }


procedure Grid_SetColWidth(theGrid: TStringGrid; theCol: Longint);
var
  MaxLen: Integer;
begin
  if theCol=-1 then Exit;

  if (theCol<theGrid.ColCount) then
  begin
    { ohne diese Zeile funktioniert der Aufruf nicht in
    FormCreate oder FormActivate }

  {$IFDEF WIN32}
    Application.ProcessMessages;
  {$ENDIF}

    MaxLen:= GetMaxColWidth(theGrid, theCol);

   { Spaltenbreite nur ändern, wenn die neue Breite
     breiter ist }

  {  if (theGrid.ColWidths[theCol]<MaxLen)
      then }
theGrid.ColWidths[theCol]:= MaxLen;
  end;
end; { Grid_SetColWidth }

Heiko
Heiko
  Mit Zitat antworten Zitat