- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 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: 1009
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  
 
 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -