Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CheckBox в DBGrid 
:(
    Опции темы
Poseidon
Дата 18.5.2005, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 3
Всего: 133



Код
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; 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1018 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.