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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 05:49   #1
Mihailhome
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 10
По умолчанию checkbox & dbgrid

Привет всем!!!
у меня такой вопрос:
Можно ли в dbgrid вставить checkbox(ну или на подобии эго) в любое поле, не применяя дополнительные модули.чтобы можно было поставить галочку. И какой тип должен быть у этого поля???? У меня Table - Paradox
Смотрел примеры, но не разобрался.
Mihailhome вне форума Ответить с цитированием
Старый 17.05.2009, 12:06   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Естественно можно. Вот пример взятый из DelphiWorld

Цитата:
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;

Поле 'Weight' и есть поле с галочкой.
Данный код раньше использовал, но сейчас все таки удобнее когда это в компоненте DBGrid прописано.
Кстати как это реализовать в компоненте, есть исходный код на сайте delphisource.ru в разделе Базы данных -> компонент cyDBGrid.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 19.05.2009, 07:28   #3
Mihailhome
Пользователь
 
Регистрация: 16.05.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от ArtInt Посмотреть сообщение
Естественно можно. Вот пример взятый из DelphiWorld



Поле 'Weight' и есть поле с галочкой.
Данный код раньше использовал, но сейчас все таки удобнее когда это в компоненте DBGrid прописано.
Кстати как это реализовать в компоненте, есть исходный код на сайте delphisource.ru в разделе Базы данных -> компонент cyDBGrid.
Спасибо за это. Но ведь методом прорисовки, а так чтобы прямо checkbox в поле
Mihailhome вне форума Ответить с цитированием
Старый 19.05.2009, 08:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а так чтобы прямо checkbox в поле
Ну вообще-то оно все прорисовкой...
Если очень нужно можно взять сторонние компоненты типа EHLib.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2009, 08:42   #5
Rekky
Форумчанин
 
Аватар для Rekky
 
Регистрация: 14.01.2009
Сообщений: 312
По умолчанию

А что значит в любое поле? логические поля, отображающиеся ComboBox-ом (галочками) можно отображать в cxGrid из пакета DevExpress. К сожалению, прикрепить файл не могу,много весит, поищи в инете,там точно есть))) Раз воспользовавшись этим компонентом о простом гриде можно забыть навсегда...
Никому не поставить нас на колени! Мы лежали и будем лежать!
Rekky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag & Drop в DBGrid Mishechka Помощь студентам 33 26.03.2009 15:01
C++ && eval() in PHP Saniok Общие вопросы C/C++ 12 05.11.2008 17:55
DB checkbox Arsench PHP 6 09.10.2008 16:01
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14
Delphi & Access & Ole vodila БД в Delphi 0 15.07.2008 11:11