Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Определить номер строки в TDBGrid

Delphi , Компоненты и Классы , TDBGrid

Определить номер строки в TDBGrid

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
 I did not found property to know the rownumber of a TDBGrid, 
 so I will try this in the OnDrawColumnCell of a DBGrid: 
}

 procedure TformX.DBGridXDrawColumnCell(Sender: TObject; const
   Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
 var
   RowNo : Integer;
 begin
   RowNo := Rect.Bottom div TStringGrid(DBGridX).DefaultRowHeight
   //so, RowNo has the Row to be draw in the moment 
  ...
 end;

Here's the translation of the content into Russian:

Код для определения номера строки в компоненте TDBGrid Delphi. Автор DeeCo не смог найти встроенную свойство, которое предоставляет эту информацию, и вместо этого реализовал ее вручную с помощью события OnDrawColumnCell.

Работает следующим образом:

  1. Событие OnDrawColumnCell тригерируется всякий раз, когда grid требует нарисовать ячейку.
  2. Внутри этого события параметр Rect содержит прямоугольник, где будет нарисована ячейка.
  3. Номер строки рассчитывается как дно прямоугольника разделенное на высоту строки по умолчанию grid.

Эта APPROACH работает потому, что каждая строка в grid имеет конкретную высоту (определенную свойством DefaultRowHeight), и разделив дно прямоугольника на эту величину, можно определить, какой строке сейчас рисуется.

Вот улучшенная версия кода с дополнительными комментариями и предложениями:

procedure TformX.DBGridXDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  RowNo: Integer;
begin
   // Рассчитайте номер строки, разделив дно прямоугольника на высоту строки по умолчанию
  RowNo := Rect.Bottom div TStringGrid(DBGridX).DefaultRowHeight;

   // Теперь вы можете использовать RowNo для доступа или манипуляции данными в grid
  ...
end;

Альтернативное решение:

Если вам нужно только знать текущий номер строки для каких-то конкретных целей, вы можете рассмотреть другой подход. Например, если вы пытаетесь настроить внешний вид каждой строки, вы можете использовать событие OnDrawColumnCell и рассчитать номер строки вручную, как показано выше.

Однако, если вам нужно доступ или манипуляцию данными в grid на основе текущего номера строки, вам может быть полезно использовать отдельную переменную или свойство, которое отслеживает текущую строку. Этот подход может быть более эффективным и легче поддерживать, чем рассчитывать номер строки каждый раз, когда событие OnDrawColumnCell тригерируется.

Вот пример:

type
  TMyForm = class(TForm)
    DBGridX: TDBGrid;
     ...
  private
    FCurrentRowNo: Integer;
  end;

procedure TMyForm.DBGridXDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
   // Используйте FCurrentRowNo для доступа или манипуляции данными в grid
  ...
end;

В этом примере FCurrentRowNo - это приватная переменная, которая отслеживает текущий номер строки. Вы можете обновлять эту переменную всякий раз, когда вам нужно знать текущий номер строки, и затем использовать ее в вашем коде, как вам нужно.

Определить номер строки в TDBGrid можно с помощью свойства RowNo в процедуре OnDrawColumnCell, где RowNo является целым числом, равным количеству строк, отсчитываемому начиная от верхней части ячейки.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: TDBGrid ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 16:27:51/0.010233879089355/2