Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Delphi: Маленькие хитрости arrow Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)
25.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell) Печать E-mail
Автор megabax   
30.04.2011 г.
New Page 1

Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)

Сегодня мы научимся отображаться CheckBox-ы в компоненте DBGrid. И так, кладем на форму компоненты TTable:

Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)

Затем TDataSource:

Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)

И, наконец, саму TDBGrid:

Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)

Соединяем компоненты между собой, если не знаете как, то загляните в этот урок по Delphi. В этом же уроке описано, как создавать Alias-ы. Дело  в том, что для реализации тестового примера этого урока нам потребуется база данных docs.db из Алиаса StorePrj. Собственно говоря, вы можете взять любую другую базу данных, а можете и вот эту(docs.db), которая была создана вот на этом уроке по Delphi

А теперь займемся программированием. 

Если уж вы взяли именно вот эту базу данных, то для наглядности давайте откорректируем заголовок столбца DocType, замени его на "Это приход". Для этого напишем вот такой обработчик создания формы

procedure TfrmCheckBoxGridTest.FormCreate(Sender: TObject);

begin

   dbgTest.Columns[3].Title.Caption:='Это приход';

end;

Теперь опишем процедуру отрисовки CheckBox-а:

procedure DrawGridCheckBox(Canvas: TCanvas; Rect: TRect; Checked: boolean);

var

  DrawFlags: Integer;

begin

  Canvas.TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');

  DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONPUSH or DFCS_ADJUSTRECT);

  DrawFlags := DFCS_BUTTONCHECK or DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK

  if Checked then

    DrawFlags := DrawFlags or DFCS_CHECKED;

  DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);

end;

Теперь пишем обработчики событий OnColEnter и OnDrawColumnCell нашего компонента TDbGrid:

procedure TfrmCheckBoxGridTest.dbgTestColEnter(Sender: TObject);

begin

with TDBGrid(Sender) do

    if UpperCase(SelectedField.FieldName) = 'TYPEDOC' then // Модифицируйте под себя

      Options := Options - [dgEditing]

    else

      Options := Options + [dgEditing]

end;

 

procedure TfrmCheckBoxGridTest.dbgTestDrawColumnCell(Sender: TObject;

  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

  if UpperCase(Column.FieldName) = 'TYPEDOC' then // Модифицируйте под себя

    if Column.Field.AsInteger = 1 then

      DrawGridCheckBox((Sender as TDBGrid).Canvas, Rect, true)

    else

      DrawGridCheckBox((Sender as TDBGrid).Canvas, Rect, false)

end;

Все, запускаем программу и видим результат:

Delphi. Маленькие хитрости: CheckBox в DBGrid (TDbGrid, Canvas, Cell)


Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями  в  программного продукта "Tubro Delphi", авторское право на который принадлежит Borland® Delphi®. 


 

 

Последнее обновление ( 16.11.2011 г. )
 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги