Недавно добавленные исходники

•  TDictionary Custom Sort  538

•  Fast Watermark Sources  904

•  3D Designer  1 830

•  Sik Screen Capture  1 478

•  Patch Maker  1 486

•  Айболит (remote control)  1 410

•  ListBox Drag & Drop  1 177

•  Доска для игры Реверси  21 940

•  Графические эффекты  1 357

•  Рисование по маске  1 297

•  Перетаскивание изображений  1 096

•  Canvas Drawing  971

•  Рисование Луны  814

•  Поворот изображения  771

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  619

•  Заборы и коммивояжеры  850

•  Игра HIP  557

•  Игра Go (Го)  527

•  Симулятор лифта  549

•  Программа укладки плитки  509

•  Генератор лабиринта  565

•  Проверка числового ввода  524

•  HEX View  600

•  Физический маятник  528

•  Задача коммивояжера  560

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



StringGrid как DBGrid



Ну это может выглядеть приблизительно так (возможно нужна некоторая доработка, написал от руки, не проверяя):


table.first;
row := 0;
grid.rowcount := table.recordCount;
while not table.eof do 
begin
  for i := 0 to table.fieldCount-1 do
    grid.cells[i,row] := table.fields[i].asString;
  inc (row);
  table.next;
end;

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


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;





Похожие по теме исходники

DBLookupComboBox in StringGrid

Cell hint in StringGrid

CheckBox in StringGrid

Components in StringGrid

 

Сапер StringGrid

StringGrid Decoration

TStringGridCheker

TQGRID Perfect StringGrid

 

OwnerDraw StringGrid

cyDBGrid

Cell Hint in DBGrid

Примеры оформления DBGrid

 

Пример использования DBGrid




Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram