Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Justera kolumner i en TStringGrid
|
Kategori: Komponenter
Inlagt: 2006-04-01
Läst: 1266
Inlagt av: Staffan Berg
|
Beskrivning |
Justera kolumnbredderna automatiskt (autosize) så att de passar innehållet.
|
Kod |
procedure SetGridColumnWidths(Grid: TStringGrid; const Columns: array of Integer); //When you double-Click on a Column-Header the Column autosizes to fit its content procedure AutoSizeGridColumn(Grid: TStringGrid; column, min, max: Integer); //Set for max and min some minimal/maximial Values var i: Integer; temp: Integer; tempmax: Integer; begin tempmax := 0; for i := 0 to (Grid.RowCount - 1) do begin temp := Grid.Canvas.TextWidth(Grid.cells[column, i]); if temp > tempmax then tempmax := temp; if tempmax > max then begin tempmax := max; break; end; end; if tempmax < min then tempmax := min; Grid.ColWidths[column] := tempmax + Grid.GridLineWidth + 3; end; procedure TForm1.StringGrid1DblClick(Sender: TObject); var P: TPoint; iColumn, iRow: Longint; begin GetCursorPos(P); with StringGrid1 do begin P := ScreenToClient(P); MouseToCell(P.X, P.Y, iColumn, iRow); if P.Y < DefaultRowHeight then AutoSizeGridColumn(StringGrid1, iColumn, 40, 100); end; end; //2. procedure TForm1.Button1Click(Sender: TObject); const DEFBORDER = 8; var max, temp, i, n: Integer; begin with Grid do begin Canvas.Font := Font; for n := Low(Columns) to High(Columns) do begin max := 0; for i := 0 to RowCount - 1 do begin temp := Canvas.TextWidth(Cells[Columns[n], i]) + DEFBORDER; if temp > max then max := temp; end; //For if max > 0 then ColWidths[Columns[n]] := max; end; //For end; //With end; //SetGridColumnWidths
|
|
|