Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > Форум Форум программистов > Форум C++ > Форум C++ Builder > Форум C++ Builder и базы данных
Восстановить пароль Регистрация

Ответ Создать новую тему
 
16.12.2013, 19:21   #1
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid / C++ Builder и базы данных

ппц это сплошная печаль, подскажите пожалуйста как сделать выпадающие списки для определенных столбцов, но что-бы в них добавлялись введенные ранее значения, и возможность вставки галочек (поле да/нет в ацессе галка стоит, а в дбгриде true/false прямым тексом написано..). И возможность вставки запроса в таблицу, например сумма какого-то столбца. Как в дбгиде или другим компонентом сделать так? :
Миниатюры
Добавление ComboBox и CheckBox в DBGrid  
16.12.2013, 19:21
AdAgent
Объявления
18.12.2013, 18:20   #11
Sasha
Форумчанин
Регистрация: 05.06.2008
Сообщений: 5,679
Репутация: 4200 (1889)
Записей в блоге: 3
Лучшие ответы: 73
Добавление ComboBox и CheckBox в DBGrid / C++ Builder и базы данных

Цитата Сообщение от helsik Посмотреть сообщение
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void __fastcall TForm1::DrawGridCheckBox(TCanvas * Canvas,TRect Rect,bool Checked)
{
 int DrawFlags;
 Canvas->TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
 DrawFrameControl(Canvas->Handle, &Rect, DFC_BUTTON, DFCS_BUTTONPUSH | DFCS_ADJUSTRECT);
 DrawFlags = DFCS_BUTTONCHECK | DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
 if (Checked)
 {
 DrawFlags = DrawFlags | DFCS_CHECKED;
 }
 DrawFrameControl(Canvas->Handle, &Rect, DFC_BUTTON, DrawFlags);
}
void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
 const TRect &Rect, int DataCol, TColumn *Column,
 TGridDrawState State)
{
if (Column->FieldName == "Remind")
 {
if (Column->Field->AsInteger !=1)
 {
DrawGridCheckBox(DBGrid2->Canvas, Rect, true);
 }
 else
 {
 DrawGridCheckBox(DBGrid2->Canvas, Rect, false);
 }
 }
} //конец кода с чекбоксом
Вынеси это в сpp-файл
18.12.2013, 18:55  [ТС]   #12
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid

Цитата Сообщение от Sasha Посмотреть сообщение
Вынеси это в сpp-файл
вынес, теперь ошибки
Код C++
1
2
[C++ Error] Unit1.cpp(62): E2316 '_fastcall TForm1::DrawGridCheckBox(TCanvas *,TRect,bool)' is not a member of 'TForm1'
[C++ Error] Unit1.cpp(81): E2316 '_fastcall TForm1::DBGrid1DrawColumnCell(TObject *,const TRect &,int,TColumn *,TGridDrawState)' is not a member of 'TForm1'
Миниатюры
Добавление ComboBox и CheckBox в DBGrid  
Другие темы раздела
Выполнение запроса по таймеру C++ Builder БД
что-то я накуралесил.. короче хотел вывести результат sql запроса в Label, но так чтоб результат там постоянно был виден, а вышло только по клику: void __fastcall TForm1::Label1Click(TObject *Sender) { DataModule2->ADOQuery1->Active=False; DataModule2->ADOQuery1->SQL->Clear();...
Вывод в комбобокс дбгрида столбцов другой таблицы C++ Builder БД
Прочел очень много тем, но ответа так и не нашел, нужно чтобы в выпадающем списке дбгрида, отображалось 2 колонки, а при клике на строку состоящую из двух колонок в ячейке выбиралось только значение первого столбца. Что у меня вышло: (делал в 2 варианта результат один) void __fastcall...
18.12.2013, 19:48  [ТС]   #13
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid

написал пустой void__DrawGridCheckBox() в h файл, реакции 0.. что можно сделать?
18.12.2013, 21:17  [ТС]   #14
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid

Короче разобрался со всеми ошибками, теперь такой вопрос,
вот код:
Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
void __fastcall TForm1::DrawGridCheckBox(TCanvas * Canvas,TRect Rect,bool Checked)
{
   int DrawFlags;
   Canvas->TextRect(Rect, Rect.Left + 1, Rect.Top + 1, ' ');
   DrawFrameControl(Canvas->Handle, &Rect, DFC_BUTTON, DFCS_BUTTONPUSH | DFCS_ADJUSTRECT);
   DrawFlags = DFCS_BUTTONCHECK | DFCS_ADJUSTRECT;// DFCS_BUTTONCHECK
   if (Checked)
   {
     DrawFlags = DrawFlags | DFCS_CHECKED;
   }
   DrawFrameControl(Canvas->Handle, &Rect, DFC_BUTTON, DrawFlags);
 
}
void __fastcall TForm1::DBGrid2DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
if (DataModule2->ADOTable2->FieldByName("Remind")->AsInteger==1)
      {
       DBGrid2->Canvas->Brush->Color = cl3DLight;
       DBGrid2->Canvas->Font->Color = clHotLight;
      }
    DBGrid2->DefaultDrawColumnCell( Rect, DataCol, Column, State );
//чекбоксы вставка
if (Column->FieldName == "Remind")
  {
 
    if (Column->Field->AsInteger !=1)
    {
 
     DrawGridCheckBox(DBGrid2->Canvas, Rect, true);
    }
    else
    {
        DrawGridCheckBox(DBGrid2->Canvas, Rect, false);
    }
  }
    //конец кода с чекбоксом
}
выводится чекбокс на дбгрид, но при попытке поставить галочку ничего не происходит, а если сделать даблклик то такой вид :
Миниатюры
Добавление ComboBox и CheckBox в DBGrid  
18.12.2013, 21:17
AdAgent
Объявления
19.12.2013, 00:24   #15
Sasha
Форумчанин
Регистрация: 05.06.2008
Сообщений: 5,679
Репутация: 4200 (1889)
Записей в блоге: 3
Лучшие ответы: 73
Добавление ComboBox и CheckBox в DBGrid

А в коде который у тебя отвечает за Чекбокс так и написано, что если ставишь 1, то чекбокс true, а если 0, то false.
19.12.2013, 02:22  [ТС]   #16
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid

Цитата Сообщение от Sasha Посмотреть сообщение
А в коде который у тебя отвечает за Чекбокс так и написано, что если ставишь 1, то чекбокс true, а если 0, то false.
я уже можете подсказать как поправить чтоб работали как чекбоксы, код кстати брал с вашего сообщения как приладить CheckBox
19.12.2013, 10:24   #17
Sasha
Форумчанин
Регистрация: 05.06.2008
Сообщений: 5,679
Репутация: 4200 (1889)
Записей в блоге: 3
Лучшие ответы: 73
Добавление ComboBox и CheckBox в DBGrid

Этот код подсказал UI поэтому лучше спросить у него
19.12.2013, 16:54  [ТС]   #18
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid

короче наткнулся на идентичный код, но только на делфи, прочел синтаксис, и переправил под билдер:
Код C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::DBGrid2ColEnter(TObject *Sender)
{
 
   if (DBGrid2->SelectedField->FieldName == "Remind"){
   DBGrid2->Options = (DBGrid2->Options << dgEditing);} else {
   DBGrid2->Options = (DBGrid2->Options >> dgEditing);}
 
}
по идее этот код должен был решить проблему, но он тупо не пашет.. как было так и осталось... что делаю не так? может там где-то еще опцию какую-то выбрать надо?

Добавлено через 8 минут
ппц.. уже сделал по другом всеравно не помогает:
Код C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::DBGrid2ColEnter(TObject *Sender)
{
 
   if (DBGrid2->SelectedField->FieldName == "Remind"){
   DBGrid2->Options = TDBGridOptions(DBGrid2->Options) << dgEditing;}
   /*DBGrid2->Options = (DBGrid2->Options << dgEditing);}*/ else {
   /*DBGrid2->Options = (DBGrid2->Options >> dgEditing)*/
   DBGrid2->Options = TDBGridOptions(DBGrid2->Options) >> dgEditing;}
 
}
19.12.2013, 18:02   #19
Sasha
Форумчанин
Регистрация: 05.06.2008
Сообщений: 5,679
Репутация: 4200 (1889)
Записей в блоге: 3
Лучшие ответы: 73
Добавление ComboBox и CheckBox в DBGrid

У меня работает
19.12.2013, 18:04  [ТС]   #20
helsik
Форумчанин
Регистрация: 09.12.2013
Сообщений: 85
Репутация: 8 (8)
Лучшие ответы: 1
Добавление ComboBox и CheckBox в DBGrid / C++ Builder и базы данных

поставил >> dgEditing первым, а в else << dgEditing, теперь мой столбец с чекбоксами, не доступен для редактирования, НО и при клике на него ГАЛОЧКИ НЕ СТАВЯТСЯ! Что я упустил?
19.12.2013, 18:04
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Delphi БД: DBGrid(CheckBox)
Вечер добрый форумчане! Возникла необходимость реализовать механизм - выбор одной ли нескольких записей в DBGrid (dxDBGrid) checkbox'ом для последующей их обработки (Insert/Edit/Remove) Пользователь в Grid-е отмечает одну или несколько строк "галочкой" (checkbox), дальше в цикле проходимся по...
Delphi и базы данных Miravild 15.03.2014 23:32
C++ Builder БД: [C++ builder XE] DBGrid. Удаление/добавление/изменение БД mysql через DBGrid
Здравствуйте! Возможно тема заезженная, но не чего путнего не нашел(может так искал!) Нужна помощь в добавлении и изменении данных в таблице БД mysql через DBGrid. На форме есть: TSQLConnectionSQLQuerySQLTableSimpleDataSetDataSource
C++ Builder и базы данных Infinity3000 02.05.2012 15:06
VBA: Добавление элемента CheckBox в элемент ComboBox
По большому счёту фантастика, увидел пример в сети, у меня не получилось, не подскажите пример кривой или это не возможно, или ... _________________________________ Данный пример покажет, как можно вставить элемент CheckBox внутрь элемента ComboBox. Добавьте на форму 1 ComboBox и 1 CheckBox. ...
VBA Ципихович Эндрю 07.09.2011 11:43
C++ Builder: TreeView с checkbox`ами и DBGrid c combobox`ами
Здравствуйте, посдкажите, пожалуйста, как реализовать checkbox`ы в компоненте TreeView и combobox`ы в компоненте DBGrid, которые будут отображаться при клике на заголовок столба. Собственно, нужно сделать так, чтобы при клике на заголовок столба в компоненте DBGrid можно было прописать какое-то...
C++ Builder Mr. T 16.05.2011 19:33
Delphi БД: CheckBox на DbGrid-e
В акцесовской таблице есть логическое поле. В гриде это поле отображается как true или false. Хотелось бы видеть там галочки, как в чекбоксе. Пользователю в гриде ничего менять не придется, это надо для корректного отображения.
Delphi и базы данных НикоН 30.01.2010 12:11
Опции темы

Текущее время: 13:17. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.