Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
ВнизДаже самому смешно:) Найти похожие ветки
← →
Slimer © (2007-02-23 18:18) [0]Привет всем!
Есть DBGrid с записями. Естественно они разные по длинне, поэтому написал процедуру для выравнивания ширины колонок по максимальному значению в этой колонке.
procedure TForm1.Button3Click(Sender: TObject);
var c, d: integer;
begin
for c:=0 to Table1.Fields.Count-1 do
begin
if Table1.Fields[c].Visible then //вот этот ИФ поидее должен пропускать
begin //невидимую колонку
d:=0;
Table1.First;
while not Table1.Eof do
begin
if (d>DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].AsString)) and
(d>DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].DisplayLabel)) then
Table1.Next
else
begin
if DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].DisplayLabel)>DBGrid1.Canvas.TextWidt h(DBGrid1.Fields[c].AsString) then
d:=DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].DisplayLabel)
else
d:=DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].AsString);
Table1.Next;
end;
end;
DBGrid1.Columns.Items[c].Width:=d+5;
end;
end;
Table1.First;
end;
но почему-то выдает ошибку при обращении к канвасу ДБГрида, а именно на строке
if (d>DBGrid1.Canvas.TextWidth(DBGrid1.Fields[c].AsString)) and
Подскажите что исправить? А то я что-то вообще ничего не могу понять
← →
Ega23 © (2007-02-23 18:37) [1]Ужас...
← →
RASkov (2007-02-23 18:43) [2]
var N, J, W: Integer;
begin
Table1.DisableControls;
try
for N := 0 to DBGrid1.Columns.Count-1 do begin
Table1.First; W:=0;
while not Table1.Eof do begin
J:=DBGrid1.Canvas.TextWidth(DBGrid1.Columns[N].Field.AsString);
if J>W then W:=J+5;
Table1.Next;
end;
DBGrid1.Columns[N].Width:=W;
end;
finally
Table1.EnableControls;
end;
end;
← →
RASkov (2007-02-23 18:50) [3]Но этот метод не будет правильно работать если имет место быть OnDrawColumnCell и в нем имеются изменения размера шрифта...
← →
RASkov (2007-02-23 18:55) [4]С учетом названий колонок немного изменить:
.....
for N := 0 to DBGrid1.Columns.Count-1 do begin
Table1.First; W:=DBGrid1.Canvas.TextWidth(DBGrid1.Columns[N].Title.Caption)+5;
while not Table1.Eof do begin
.......
← →
Slimer © (2007-02-23 19:10) [5]RASkov, спасибо!
Все ок. Работает на ура!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c