Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.31;
Скачать: CL | DM;

Вниз

TDBGrid и Ширина столбца. Все что мне посоветовали это здорово но как реально это сделать...   Найти похожие ветки 

 
777   (2001-12-26 03:03) [0]

Есть компонент TDBGrid и хотел чтобы Ширина столбца должна соответствовать максимальной длине строки в отображаемой части набора данных, другими словами я хочу чтобы размер колонок соответствовал максимальному размеру текста в колонке.
Вот то, до чего я дошел...

procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var i, MaxW: integer;

begin
MaxW := 0;
{По моему где то здесь собака порылась}
with DBGrid1.DataSource.DataSet do
for i := 0 to FieldCount - 1 do
if visible then begin
if MaxW < Length(Column.Field.AsString)*DBGrid1.Font.Size then
MaxW := Length(Column.Field.AsString)*DBGrid1.Font.Size;
end;

{Здесь сравнение найденого? максимума и ширины колонки
можно конечно и defaultwidth написать но не в это дело}
if Length(Column.Field.AsString)*DBGrid1.Font.Size > Length(Trim(Column.Title.Caption))*DBGrid1.Font.Size then
Column.Width := MaxW
else
Column.Width := Length(Trim(Column.Title.Caption))*DBGrid1.Font.Size;

dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
// Panel1.Refresh;

end;

Вот. С начала все идет окей, но когда при прокрутке грида появляется строка больше или меньше...тут все и начинает дергаться...


 
gek   (2001-12-26 07:41) [1]

Ну и правильно дергаться будет.
Надо сначала по всем записям пройтись
а в этом цикле и по полям всем.
И выбрать наибольшее значение, ну а потом и устанавливать ширину


 
Desdechado   (2001-12-26 10:27) [2]

ну и обработчик тут явно не тот - на прорисовку каждой клетки выполняется!!! ты предварительно все рассчитай (в TDataSet.AfterOpen, например) ширины и подкорректируй свой грид. только учти, что колонки могут оказаться шире самого грида :))



Страницы: 1 вся ветка

Текущий архив: 2002.01.31;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
6-100023
pan
2001-11-09 12:05
2002.01.31
NMPOP3 Упорно не работает OnPacketRecvd !


6-100034
wHammer
2001-11-06 11:43
2002.01.31
Как просканировать доступные ресурсы на сетевой машине?


4-100104
Romul
2001-12-02 10:59
2002.01.31
Узнать количество файлов с помощью API


3-99898
Nemesis
2001-12-28 11:43
2002.01.31
Поднимая вопрос об отчетах ...


1-100008
Gilbert
2002-01-14 08:44
2002.01.31
Компонент Label который показывает системное время