Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2016, 19:31   #1
liggth
Новичок
Джуниор
 
Регистрация: 07.03.2016
Сообщений: 1
По умолчанию Создание CheckBox в DBGrid

Всем привет.
Многие знают способ извращения создания чекбокса в ячейки DBGrid
Код:
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;
  if Checked then
    DrawFlags := DrawFlags or DFCS_CHECKED;
  DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, DrawFlags);
end;

procedure TForm4.sDBGrid1ColEnter(Sender: TObject);
begin
  with TDBGrid(Sender) do
    if SelectedField.FieldName = 'using' then // Модифицируйте под себя
      Options := Options - [dgEditing]
    else
      Options := Options + [dgEditing]
end;

procedure TForm4.sDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.FieldName = 'using' then // Модифицируйте под себя
    if Column.Field.AsInteger = 1 then
      DrawGridCheckBox((Sender as TDBGrid).Canvas, Rect, true)
    else
      DrawGridCheckBox((Sender as TDBGrid).Canvas, Rect, false)
end;
Все отлично выводится, только вот не пойму, как реализовать, чтобы при нажатии галочка ставилась/снималась в этом чекбоксе?
liggth вне форума Ответить с цитированием
Старый 10.08.2016, 20:32   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

рисование/НЕрисование зависит от ЭТОГО кода
Цитата:
Код:
    if Column.Field.AsInteger = 1 then
стало быть чтобы поставить/снять "галочку" НАДО установить правильное(соответствующее) значение у этого поля для нужной(текущей) записи.

DBGrid показывает ровно то что есть в ассоцированном наборе данных
и менять надо там(в наборе данных).
Код:
Column.Field.Asinteger:=1{|0};
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.08.2016 в 20:34.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DbGrid + TreeView + CheckBox tarakan1983 БД в Delphi 13 03.12.2015 22:45
Вывод CheckBox в DBGrid ramsesjol БД в Delphi 0 14.06.2013 14:25
В 2-ух столбцах DBGrid Checkbox Zofk Общие вопросы Delphi 0 13.06.2012 19:21
CheckBox в DBGrid Impuls1989 Общие вопросы Delphi 4 07.08.2010 14:27
Проблемы с CheckBox в DBGrid Aleksandr Общие вопросы Delphi 2 19.02.2010 15:21