Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 28.03.2012
Сообщений: 97

Помощь c CheckListBox. TDBCheckBox в TDBGrid.

27.09.2012, 17:10. Показов 1954. Ответов 7

Студворк — интернет-сервис помощи студентам
Я подключился к БД вывел в CheckListBox1 поле name вот как мне сделать так что бы при клики на любую строку выводилось в memo его id

Добавлено через 43 минуты
ну помогите пожалуйста!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2012, 17:10
Ответы с готовыми решениями:

Отмеченные строки ChecklistBox'a вывести в другой ChecklistBox
Собственно вопрос в заголовке. Код по сути написан: void __fastcall TForm1::CheckListBox1ClickCheck(TObject *Sender) { int i; ...

TDBGrid
Подскажите плиз..есть компонент TDbGrid в DataControl, но его нет у меня на стандартной панеле, как мне вывести его туда или установить??...

TDBGrid.
Как в TDBGrid добавить значение?

7
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
27.09.2012, 17:24
А почему TDBCheckListBox не используется? - Он, собственно, специально предназначен для работы с БД.
0
0 / 0 / 1
Регистрация: 28.03.2012
Сообщений: 97
27.09.2012, 22:42  [ТС]
Цитата Сообщение от Mawrat Посмотреть сообщение
А почему TDBCheckListBox не используется? - Он, собственно, специально предназначен для работы с БД.
Я не нашел этот компонент можно как нибудь в CheckListBox

Добавлено через 4 часа 53 минуты
что не кто не может помочь?
0
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
28.09.2012, 00:44
Delphi
1
2
3
4
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
  Memo1.Lines.Add(CheckListBox1.Items[CheckListBox1.ItemIndex]);
end;
1
0 / 0 / 1
Регистрация: 28.03.2012
Сообщений: 97
28.09.2012, 08:06  [ТС]
Цитата Сообщение от Nutserus Посмотреть сообщение
Delphi
1
2
3
4
procedure TForm1.CheckListBox1Click(Sender: TObject);
begin
  Memo1.Lines.Add(CheckListBox1.Items[CheckListBox1.ItemIndex]);
end;
Это замечательно но у меня выводится name при клике, а мне надо что бы при клике на чекбокс программа получала его id из БазыДанных (MySQL )
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.09.2012, 08:26
Сейчас напишу, как сделать...
0
0 / 0 / 1
Регистрация: 28.03.2012
Сообщений: 97
28.09.2012, 08:31  [ТС]
Буду очень благодарен
0
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
28.09.2012, 13:36
max-tver, я вечером сегодня напишу. - Сейчас времени совсем нет...
---
Задержался я с ответом...
---
Вот способ, где TDBCheckBox прикручен прямо к TDBGrid. Проект в архиве DBCheckBoxInDBGrid.rar.
Delphi
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
uses
  StrUtils;
 
//Создание экземпляра формы.
procedure TForm1.FormCreate(Sender: TObject);
const
  Fn = 'Db\db-01.mdb';
var
  FileName : String;
begin
  //Полный путь к файлу базы данных. Этот файл располагается в папке "Db".
  //А папка "Db" расположена в той же папке, где лежит исполняемый файл программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  //Проверяем существование файла.
  if not FileExists(FileName) then begin
    MessageBox(
      0
      ,'Файл с именем "' + Fn + '" не найден. Подключение к базе данных не настроено.'
      ,'Ошибка!'
      ,MB_OK + MB_ICONERROR + MB_APPLMODAL
    );
    Exit;
  end;
  //Добавляем в строку соединения сведения о пути к файлу базы данных.
  ADOTable1.ConnectionString :=
    ADOTable1.ConnectionString + ';Data Source=' + FileName;
end;
 
//Закрытие формы.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not (ADOTable1.Active and ADOTable1.Modified) then Exit;
 
  ADOTable1.Post;
  ADOTable1.Close;
end;
 
//Кнопка соединения/отключения с базой данных.
procedure TForm1.Button1Click(Sender: TObject);
var
  Btn : TButton;
begin
  Btn := Sender as TButton;
  ADOTable1.Active := not ADOTable1.Active;
  if ADOTable1.Active then
    Btn.Caption := 'Отключить'
  else
    Btn.Caption := 'Подключить';
  DBCheckBox1.Visible := False;
end;
 
//Прорисовка ячейки.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Dbg : TDBGrid;
begin
  //Если на ячейке не установлен фокус ввода, то выходим.
  if not (gdFocused in State) then Exit;
 
  Dbg := Sender as TDBGrid;
  //Если ячейка принадлежит тому полю, с которым связан DBCheckBox1.
  if Column.FieldName = DBCheckBox1.DataField then begin
    //Вписываем DBCheckBox1 в область ячейки.
    DBCheckBox1.Left := Dbg.Left + Rect.Left + 2;
    DBCheckBox1.Top := Dbg.Top + Rect.Top + 2;
    DBCheckBox1.Height := Rect.Bottom - Rect.Top;
    DBCheckBox1.Width := Rect.Right - Rect.Left;
    //Выводим значение поля.
    DBCheckBox1.Caption := DBCheckBox1.Field.AsString;
    //Делаем DBCheckBox1 видимым.
    DBCheckBox1.Visible := True;
  end;
end;
 
//Уход фокуса ввода с ячейки.
procedure TForm1.DBGrid1ColExit(Sender: TObject);
var
  Dbg : TDBGrid;
begin
  Dbg := Sender as TDBGrid;
  if Dbg.SelectedField.FieldName = DBCheckBox1.DataField then
    DBCheckBox1.Visible := False; //Прячем DBCheckBox1.
end;
 
//Обработка нажатий клавиш в DBGrid1.
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Dbg : TDBGrid;
begin
  Dbg := Sender as TDBGrid;
  if Dbg.SelectedField.FieldName <> DBCheckBox1.DataField then Exit;
 
  //Если нажата клавиша, не связанная с навигацией, то передаём нажатие
  //в DBCheckBox1.
  case Key of
    VK_TAB, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT : ;
    else
      SendMessage(DBCheckBox1.Handle, WM_CHAR, Integer(Key), 0);
  end;
end;
 
//Щелчок на DBCheckBox1.
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
  if SendMessage(DBCheckBox1.Handle, BM_GetCheck, 0, 0) = 0 then
    DBCheckBox1.Caption := 'Нет'
  else
    DBCheckBox1.Caption := 'Да';
  //Возвращаем фокус ввода на DBGrid1.
  DBGrid1.SetFocus;
end;
---
Копирование данных между набором данных и списком типа TCheckListBox. Проект в архиве BdAndTCheckListBox.rar.
Delphi
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
uses
  StrUtils;
 
//Создание экземпляра формы.
procedure TForm1.FormCreate(Sender: TObject);
const
  Fn = 'Db\db-01.mdb';
var
  FileName : String;
begin
  //Полный путь к файлу базы данных. Этот файл располагается в папке "Db".
  //А папка "Db" расположена в той же папке, где лежит исполняемый файл программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  //Проверяем существование файла.
  if not FileExists(FileName) then begin
    MessageBox(
      0
      ,'Файл с именем "' + Fn + '" не найден. Подключение к базе данных не настроено.'
      ,'Ошибка!'
      ,MB_OK + MB_ICONERROR + MB_APPLMODAL
    );
    Exit;
  end;
  //Добавляем в строку соединения сведения о пути к файлу базы данных.
  ADOTable1.ConnectionString :=
    ADOTable1.ConnectionString + ';Data Source=' + FileName;
end;
 
//Закрытие формы.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not (ADOTable1.Active and ADOTable1.Modified) then Exit;
 
  ADOTable1.Post;
  ADOTable1.Close;
end;
 
//Кнопка соединения/отключения с базой данных.
procedure TForm1.Button1Click(Sender: TObject);
var
  Btn : TButton;
begin
  Btn := Sender as TButton;
  ADOTable1.Active := not ADOTable1.Active;
  if ADOTable1.Active then
    Btn.Caption := 'Отключить'
  else
    Btn.Caption := 'Подключить';
end;
 
//Кнопка "Скопировать в список".
procedure TForm1.Button2Click(Sender: TObject);
var
  Tbl : TADOTable;
  Chl : TCheckListBox;
  Bm : TBookmark;
  i : Integer;
begin
  Tbl := ADOTable1;
  Chl := CheckListBox1;
  Chl.Clear;
  if not Tbl.Active then Exit;
 
  //Ставим закладку в текущем месте набора данных.
  Bm := Tbl.GetBookmark;
  //Отключаем показ данных на время перебора записей.
  ADOTable1.DisableControls;
  //Копируем данные из набора данных в чеклист.
  Tbl.First;
  while not Tbl.Eof do begin
    //Добавляем в список пару: строка-объект, где под видом указателя на объект
    //передаём значение из поля "id".
    i := Chl.Items.AddObject(
      Tbl.FieldByName('family').AsString
        + ' ' + Tbl.FieldByName('name').AsString
        + ' ' + Tbl.FieldByName('fname').AsString
      ,TObject(Tbl.FieldByName('id').AsInteger)
    );
    Chl.Checked[i] := Tbl.FieldByName('check').AsBoolean;
    Tbl.Next;
  end;
  //Возвращаемся к закладке.
  Tbl.GotoBookmark(Bm);
  //Включаем показ данных.
  ADOTable1.EnableControls;
end;
 
//Кнопка "Скопировать в базу".
procedure TForm1.Button3Click(Sender: TObject);
var
  Tbl : TADOTable;
  Chl : TCheckListBox;
  Bm : TBookmark;
  i : Integer;
begin
  Tbl := ADOTable1;
  Chl := CheckListBox1;
  if not Tbl.Active then Exit;
 
  //Ставим закладку в текущем месте набора данных.
  Bm := Tbl.GetBookmark;
  //Отключаем показ данных на время перебора записей.
  ADOTable1.DisableControls;
  //Копируем данные списка в набор данных.
  Tbl.First;
  while not Tbl.Eof do begin
    i := Chl.Items.IndexOfObject( TObject(Tbl.FieldByName('id').AsInteger) );
    if i <> -1 then begin
      Tbl.Edit;
      Tbl.FieldByName('check').AsBoolean := Chl.Checked[i];
    end;
    Tbl.Next;
  end;
  //Возвращаемся к закладке.
  Tbl.GotoBookmark(Bm);
  //Включаем показ данных.
  ADOTable1.EnableControls;
end;
Вложения
Тип файла: rar DBCheckBoxInDBGrid.rar (322.3 Кб, 13 просмотров)
Тип файла: rar BdAndTCheckListBox.rar (323.6 Кб, 8 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2012, 13:36
Помогаю со студенческими работами здесь

Сортировка TDBGrid
Здравствуйте подскажите !PLEASE! как сделать так чтобы при нажатии на TButton содержимое TDBGrid сортировалось по алфавиту.:help:

вопрос по TDBGrid
как сделать чтобы в TDBGrid были показаны только определенные элементы из БД например те в которых вторая буква - &quot;ж&quot; ?

Настройка TDBGrid
Есть форма и модуль данных (TDM1). На TDM1 лежат TSQLite3Connection, TSQLTransaction, TSQLQuery и TDataSource, соединенные между собой. На...

компонента TDBGrid
У меня возникло несколько проблем: 1) Как осуществить печать выделеного поля таблици?? 2) Как сделать так чтобы выделялась не вся...

Работа с TDBGrid
помогите, я не пойму как сделать нужно когда мы вводим или меняем значение для определенной колонки в других колонках ставились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru