Содержание материала

У меня тоже имееются свои причины использования TStringGrid. Вот мой код, который загружает данные из отфильтрованной таблицы. Он не очень изящен, т.к. реально является лишь черновиком. У меня это работает, а большего мне и не нужно. Работает очень быстро, даже в случае сотни загруженных колонок. Есть много ссылок на внешние переменные. Надеюсь что они не слишком заумные.

Code:

procedure TformLookupDB.FillCells;

var

Row, i: INTEGER;

w: INTEGER;

grid: TStringGrid;

begin

doGrid.RowCount := 0;

if not ASSIGNED(fDB) then

   EXIT;

Row := 0;

for i := LOW(fColWidths) to HIGH(fColWidths) do

   fColWidths[i] := 100

   // Данный временный объект-сетка используется для предохранения от огромного

   // количества подразумеваемых событий Application.ProcessMessages,

   // инициируемых базой данных, и вызывающих противное моргание объекта

   // doGrid. Итак, мы загружаем данные в объект-сетку

   // и затем копируем их в стобцы, начиная с верхней части.

 

   grid := TStringGrid.Create(Self);

grid.Visible := FALSE;

with fDB do

try

 

   grid.ColCount := fFields.Count;

   DisableControls;

   // Фильтр был установлен с помощью свойства Self.Filter

   First;

   while not EOF do

   try

     grid.RowCount := Row + 1;

     for i := 0 to grid.ColCount - 1 do

     begin

       grid.Cells[i, Row] :=

         FieldByName(fFields.Strings[i]).AsString

         w := doGrid.Canvas.TEXTWIDTH(grid.Cells[i,

         Row]);

       if fColWidths[i] < w then

         fColWidths[i] := w;

     end

       INC(Row);

   finally

     Next;

   end

finally

   doGrid.RowCount := grid.RowCount;

   doGrid.ColCount := grid.ColCount;

   for i := 0 to grid.ColCount - 1 do

   begin

     doGrid.Cols[i] := grid.Cols[i];

     doGrid.ColWidths[i] := fColWidths[i] + 4

   end

     grid.Free;

   EnableControls

end

end;

 

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить