whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

31 Visitors Online


 
...resize the columns of a TStringGrid / TDrawGrid to fit the text?
Autor: Thomas Mueller
Homepage: http://www.s2h.cx
[ Print tip ]  

Tip Rating (4):  
     


{   This will resize the columns of a TStringGrid / TDrawGrid (text
    only!) so the text is completely visble. To save some time,
    it uses the first 10 rows only, but that should be easy to fix,
    if you need more. }

// we need this to access protected methods
type
  
TGridHack = class(TCustomGrid);

procedure ResizeStringGrid(_Grid: TCustomGrid);
var
  
Col, Row: integer;
  Grid: TGridHack;
  MaxWidth: integer;
  ColWidth: integer;
  ColText: string;
  MaxRow: integer;
  ColWidths: array of integer;
begin
  
Grid := TGridHack(_Grid);
  SetLength(ColWidths, Grid.ColCount);
  MaxRow := 10;
  if MaxRow > Grid.RowCount then
    
MaxRow := Grid.RowCount;
  for Col := 0 to Grid.ColCount - 1 do
  begin
    
MaxWidth := 0;
    for Row := 0 to MaxRow - 1 do
    begin
      
ColText  := Grid.GetEditText(Col, Row);
      ColWidth := Grid.Canvas.TextWidth(ColText);
      if ColWidth > MaxWidth then
        
MaxWidth := ColWidth;
    end;
    if goVertLine in Grid.Options then
      
Inc(MaxWidth, Grid.GridLineWidth);
    ColWidths[Col]      := MaxWidth + 4;
    Grid.ColWidths[Col] := ColWidths[Col];
  end;
end;


 

Rate this tip:

poor
very good


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