Другой кибернетик придумал робота-андроида и настроил его на оптимальное выполнение задач. В качестве теста приказал ему принести 5 тысяч долларов. Робот вернулся через 2 минуты со страховкой маленького сына кибернетика.
Скомпилируйте это, и вы получите новый компонент с нужными свойствами:
unit RowGrid;
interfaceuses
WinTypes, WinProcs, Classes, Grids, DBGrids;
type
TRowDBGrid = class(TDBGrid)
publicproperty Row;
property RowCount;
property VisibleRowCount;
end;
procedureRegister;
implementationprocedureRegister;
begin
RegisterComponents('Data Controls', [TRowDBGrid]);
end;
end.
{вот небольшой испытательный демо-проект.. мы
поместили на форму нашу сетку-наследницу, 3 компонента
EditBox и поместили следующий код в обработчик события
ondrawdatacell вашего TRowGrid}procedure TForm1.RowDBGrid1DrawDataCell(Sender: TObject; const Rect:
TRect; Field: TField; State: TGridDrawState);
begin
eb_row.text := inttostr(rowdbgrid1.row);
eb_rowcount.text := inttostr(rowdbgrid1.rowcount);
eb_visiblerowcount.text := inttostr(rowdbgrid1.visiblerowcount);
end;
Вот перевод текста на русский язык:
Проект Delphi по созданию пользовательского компонента grid
Цель проекта - продемонстрировать, как создать новый компонент grid, который может отображать информацию о текущей строке, общем количестве строк и видимых строках.
Единица RowGrid
TRowDBGrid - класс, наследующийся от TDBGrid. Он добавляет три публичных свойства: Row, RowCount и VisibleRowCount.
Процедура Register регистрирует пользовательский компонент grid в Delphi, чтобы он мог быть использован в будущих проектах.
Имплементация
Процедура Register вызывается дважды. Это потому, что Delphi ожидает отдельный раздел implementation для процедуры Register.
В первой вызове Register пользовательский компонент grid регистрируется в категории "Data Controls".
Демо-проект
Демо-проект включает форму с экземпляром пользовательского компонента TRowDBGrid (именованным RowDBGrid1).
Три текстовых поля (eb_row, eb_rowCount и eb_visiblerowcount) размещены на форме.
Обработчик события DrawDataCell реализован для компонента grid. Это событие вызывается, когда клетка должна быть нарисована.
В обработчике события DrawDataCell, текст каждого текстового поля обновляется информацией о текущей строке:
eb_row.text устанавливается в значение RowDBGrid1.Row.
eb_rowCount.text устанавливается в значение RowDBGrid1.RowCount.
eb_visiblerowcount.text устанавливается в значение RowDBGrid1.VisibleRowCount.
Альтернативное решение
Если вы хотите отображать более информации о каждой строке, например, содержимое строки или дополнительные метаданные, вы можете модифицировать обработчик события DrawDataCell, чтобы получить эту информацию из связанного dataset компонента grid. Например:
В этом коде получается значение текущей строки и конкатенируется с именем поляusing двоеточие (:). Результатирующий текст затем отображается в текстовом поле.
В статье рассматривается создание компонента DBGrid с номером строки, а также пример использования его в приложении на языке Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.