автоматическое изменение ширини колонки TDBGrid

miss.mate
Дата: 30.05.2011 10:31:38
Добрый всем день, подскажите есть ли у TDBGrid свойства которое бы автоматически меняло размер ширини колонки в зависимости от данных которые в нее подскатляются? если нет, то как это можно сделать?
Anatoly Podgoretsky
Дата: 30.05.2011 11:08:29
Меняй сам в любом подходящем обратотчике. Columns.Items[i].Width
miss.mate
Дата: 30.05.2011 11:12:48
Anatoly Podgoretsky
Меняй сам в любом подходящем обратотчике. Columns.Items[i].Width


наверное надо менять на прорисовки грида на GridDrawColumnCell , вот только как мне узнать какого размера данные что бы передать этот размер в Columns.Items[i].Width
Anatoly Podgoretsky
Дата: 30.05.2011 11:23:33
Лучше на уровне датасета AfterOpen
Vladimir2009
Дата: 30.05.2011 11:31:09
miss.mate
Добрый всем день, подскажите есть ли у TDBGrid свойства которое бы автоматически меняло размер ширини колонки в зависимости от данных которые в нее подскатляются? если нет, то как это можно сделать?


зачем? может создать редактор свойств гриды, и пусть юзер сам себе выставляет какие колонки и какой ширины ему нужны
если дефолтные ему не нравятся

да и автоподбор ширины нужен в основном для текстовых данных, для чисел и дат можно позаботится самому.
Ega
Дата: 30.05.2011 11:32:23
miss.mate
Anatoly Podgoretsky
Меняй сам в любом подходящем обратотчике. Columns.Items[i].Width


наверное надо менять на прорисовки грида на GridDrawColumnCell , вот только как мне узнать какого размера данные что бы передать этот размер в Columns.Items[i].Width


var
  currWidth, MaxWidth: Integer;
  bm: TBookmark;
begin
  MaxWidth := 0;

  DataSet.DisableControls;
  try
    bm := DataSet.GetBookmark;
    DataSet.First;  
    while not DataSet.Eof do
    begin 
      currWidth := Canvas.TextWidth(DataSet.TextField);
      if currWidth > MaxWidth then
        MaxWidth := currWidth;
      DataSet.Next;
    end;
    DataSet.GotoBookmark(bm)  ;
  finally
    DataSet.EnableControls;
  end;
miss.mate
Дата: 30.05.2011 11:38:12
Спасибо всем большое за ответы