Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Jak spravně nastavit StringGrid v Delphi

Po načteni dat do tabulka ve FormShow volam proceduru AutoSizeCol.

procedure TForm1.FormShow(Sender: TObject);
Begin
NactiSeznam(StringGrid1, 'data.ini');
StringGrid1.ColWidths[0] := 25;    
    AutoSizeCol(StringGrid1, 1);       
    AutoSizeCol(StringGrid1, 2);       
    AutoSizeCol(StringGrid1, 3);       
    AutoSizeCol(StringGrid1, 4);       
    AutoSizeCol(StringGrid1, 5);       
    AutoSizeCol(StringGrid1, 6);       
    AutoSizeCol(StringGrid1, 7);  

Pak jsem spočital šiřky sloupcu.
Když se však zobrazi Scrollbar je šiřka jina než bez něj. 

sirkasloupcu:= StringGrid1.ColWidths[0]
             + StringGrid1.ColWidths[1]
             + StringGrid1.ColWidths[2]
             + StringGrid1.ColWidths[3]
             + StringGrid1.ColWidths[4]
             + StringGrid1.ColWidths[5]
             + StringGrid1.ColWidths[6]
             + StringGrid1.ColWidths[7];
     


procedure TForm1.AutoSizeCol(Grid: TStringGrid; Column: integer);
var
  i, W, WMax: integer;
begin
  WMax := 0;
  for i := 0 to (Grid.RowCount - 1) do begin
    W := Grid.Canvas.TextWidth(Grid.Cells[Column, i]);
    if W > WMax then
      WMax := W;
  end;
  Grid.ColWidths[Column] := WMax + 15;    {šiřka sloupce}
end;

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny