사용예에
어디서 호출하란 말이 없네요..
..
procedure AutoSizeDBGridColumn(Grid : TDBGrid; column : integer);
var
temp : integer;
max : integer;
begin
max := 0;
Grid.DataSource.DataSet.DisableControls;
Grid.DataSource.DataSet.First;
temp := Grid.Canvas.TextWidth(grid.Columns[column].Title.Caption); //DBGrid의 타이틀 길이.
max := temp;
try
while not Grid.DataSource.DataSet.Eof do begin
// Grid Canvas를 기준으로한 지정한 Column의 각 row의 width중
// 최대값을 구하여 column의 width로 결정한다
temp := Grid.Canvas.TextWidth(grid.Columns[column].Field.DisplayText); //해당 셀의 글자 너비를 구함
if temp > max then
max := temp;
Grid.DataSource.DataSet.Next;
end;
Grid.Columns[column].Width := max + 1 + 10;
finally
Grid.DataSource.DataSet.First;
Grid.DataSource.DataSet.EnableControls;
end;
end;
사용예)
for i := 0 to DBGrid1.Columns.Count - 1 do
AutoSizeDBGridColumn(DBGrid1,i);