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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2010, 22:12   #1
waw
 
Регистрация: 09.04.2010
Сообщений: 8
По умолчанию типа checkbox в dbgrid

доброе время суток
такой вопрос как можно сделать в dbgrid сделать ячейки для установки "птичек" (не знаю как их dbgride назвать),т.е. для указания значений TRUE, FALSE.
БД SQL подключена через database
waw вне форума Ответить с цитированием
Старый 05.08.2010, 03:21   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Установите DBGridEh из библиотеки EhLib. Затем киньте на форму DBGridEh1, нажмите на нем 2 раза и создайте колонку, затем нажмите 1 раз на созданную колонку и в инспекторе свойств в свойстве Checkboxes поставьте True.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.08.2010, 20:12   #3
waw
 
Регистрация: 09.04.2010
Сообщений: 8
По умолчанию

спасибо. уже качаю библиотеку
waw вне форума Ответить с цитированием
Старый 13.08.2010, 16:06   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Взято из DelphiWorld 6...
Код:
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;

На событие OnDrawColumnCell повесьте вызов процедуры DrawGridCheckBox(): 

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if Column.FieldName = 'WEIGHT' then // Модифицируйте под себя
    if Column.Field.AsInteger > 10 then
      DrawGridCheckBox(DBGrid1.Canvas, Rect, true)
    else
      DrawGridCheckBox(DBGrid1.Canvas, Rect, false)
end;


Кроме этого, для скрытия текста в ячейках с CheckBox-ом от отображения значения при вводе с клавиатуры определите реакцию на событие OnColumnEnter: 

procedure TfrmMain.DBGrid1ColEnter(Sender: TObject);
begin
  with TDBGrid(Sender) do
    if SelectedField.FieldName = 'Weight' then // Модифицируйте под себя
      Options := Options - [dgEditing]
    else
      Options := Options + [dgEditing]
end;
checkbox_in_dbgrid.jpg
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В ячейках DBGrid изображается поле типа text как (Memo) belartvlad29 БД в Delphi 2 18.07.2010 14:36
Проблемы с CheckBox в DBGrid Aleksandr Общие вопросы Delphi 2 19.02.2010 15:21
Запись числа типа инт в ячейку двумерного массива типа char AxenicX Помощь студентам 1 25.09.2009 00:35
CheckBox в множестве полей DBGrid dn-3 Помощь студентам 2 19.08.2009 19:14
checkbox & dbgrid Mihailhome БД в Delphi 4 19.05.2009 08:42