was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1541)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (126)
Strings (83)
System (266)
VCL (242)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

14 Visitors Online


 
...eine StringGrid-Spalte der Textbreite anpassen?
Autor: Thomas Stutz
[ Tip ausdrucken ]  

Tip Bewertung (17):  
     


{1.}

procedure SetGridColumnWidths(Grid: TStringGrid;
  const Columns: array of Integer);
{
  When you double-Click on a Column-Header the Column
  autosizes to fit its content

  Bei Doppelklick auf eine fixierte Spalte passt sich
  die Spaltenbreite der Textgrösse an
}

  
procedure AutoSizeGridColumn(Grid: TStringGrid; column, min, max: Integer);
    { Set for max and min some minimal/maximial Values}
    { Bei max and min kann eine Minimal- resp. Maximalbreite angegeben werden}
  
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);
  { by P. Below }
  
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  }

 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners