Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi .NET
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.03.2014, 11:57
Miravild Miravild вне форума
Прохожий
 
Регистрация: 15.03.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию DBGrid (CheckBox)

День добрый форумчане!
Возникла необходимость реализовать механизм - выбор одной ли нескольких записей в DBGrid (dxDBGrid) checkbox'ом для последующей их обработки (Insert/Edit/Remove)
К примеру: в Grid-е есть поле (checkbox), в котором можно было поставить галочку (или несколько галочек), а потом, все это обработать поля, которые были отмечены пользователем. Это не сложный dbgrid. В запрос добавляется фиктивное поле , скажем 0 as checkbox и выводится первым столбцом.
Ответить с цитированием
  #2  
Старый 15.03.2014, 12:25
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А в чём собсно вопрос-то хоть, как всунуть птису в таблицу что-ли? Заведите в ней логическое поле, а дальше смотрим в DRKB (00388):

CheckBox в 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;// 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;
Действительно, "Это не сложный dbgrid"
Ответить с цитированием
  #3  
Старый 15.03.2014, 13:06
Miravild Miravild вне форума
Прохожий
 
Регистрация: 15.03.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Что не понятного? Есть dbGrid в нём один из столбцов (checkbox). Пользователь может выбрать одно или несколько строк, отметив "галочкой" нужные поля.
P.S. Кстати как сделать проверку отмечены поля или нет. К примеру:
Код:
if dmMain.qFindSubscribers.FieldByName('checked').Value <> 1 then
  begin
    MessageBox(Application.Handle,
                PAnsichar('Не выбрано ни одного поля'),
                PAnsiChar(Self.Caption),
                MB_OK + MB_ICONINFORMATION);
    dbgFindSub.SetFocus;
    Exit;
  end;
Ответить с цитированием
  #4  
Старый 15.03.2014, 13:25
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот пример, почти то, что надо, разбирайтесь на здоровье
Ответить с цитированием
  #5  
Старый 15.03.2014, 14:00
Miravild Miravild вне форума
Прохожий
 
Регистрация: 15.03.2014
Сообщения: 3
Версия Delphi: Delphi XE5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Вот пример, почти то, что надо, разбирайтесь на здоровье
Спасибо за пример Alegun (хоть мне он и известен ) и за ответы
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter