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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2014, 18:22   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию Как сделать в ячейке DBGrid возможность выбора только из списка?

В базе данных, при редактировании значений появляются выпадающие списки с возможными вариантами. Делал это так:

DBGrid1.Columns[1].PickList.loadfromfile('column1.txt ' );

Подскажите, как сделать так, чтобы в ячейку нельзя было ввести никакое другое значение, а выбирать можно было только варианты из списка?
Dux вне форума Ответить с цитированием
Старый 19.09.2014, 18:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так можно, не даст ввести ничего, кроме того, что в PickList есть
Код:
procedure TForm1.ClientDataSet1a1SetText(Sender: TField; const Text: String);
begin
  if DBGrid1.Columns.Items[0].PickList.IndexOf(Text)=-1 then Exit;
  DBGrid1.Columns.Items[0].Field.Value:=Text;
end;
Это событие OnSetText на редактируемом TField датасета
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.09.2014, 07:21   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Это событие OnSetText на редактируемом TField датасета
Немного не понял. Мне нужно добавить компонент ClientDataSet? Если да, то в его событиях OnSetText не нашел..
Dux вне форума Ответить с цитированием
Старый 20.09.2014, 09:04   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ClientDataSet не нужен, то пример на нем, вместо него любой датасет. Событие не датасета, а его поля. См. TField
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.09.2014, 10:15   #5
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ClientDataSet не нужен, то пример на нем, вместо него любой датасет. Событие не датасета, а его поля. См. TField
Что-то я туплю...



На форме DBGrid, ADOConnection, ADOQuery, DataSource.

Что за TField? и где искать его свойства? Разъясните пожалуйста.
Dux вне форума Ответить с цитированием
Старый 20.09.2014, 11:06   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Dux
Клацни дважды по компоненту ADOQuerу. Если там будет список полей, которые ты объявил в запросе и в дизайне э то и есть список вышеупомянутых TField. Для нужного поля и смотри событие.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2014, 11:30   #7
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Клацни дважды по компоненту ADOQuerу. Если там будет список полей, которые ты объявил в запросе и в дизайне э то и есть список вышеупомянутых TField. Для нужного поля и смотри событие.
Кликаю по ADOQuery появляется окно:



Какие поля?

Список полей появляется при двойном клике на DBGrid, но там в событиях только PopupMenu

Объясните, please. Очень нужно
Dux вне форума Ответить с цитированием
Старый 20.09.2014, 14:41   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Может лучше установить библиотека DevExpress и там есть cxGrid

Код:
  cxGrid1DBTableView1.OptionsView.GroupByBox := false;  // отключить Groupbox
  cxGrid1DBTableView1.OptionsSelection.CellSelect := false; // cxgrid запретить редактирование
Изображения
Тип файла: jpg 1.jpg (39.2 Кб, 138 просмотров)
Тип файла: jpg 2.jpg (44.5 Кб, 146 просмотров)
Тип файла: jpg 3.jpg (45.6 Кб, 152 просмотров)
Тип файла: jpg 4.jpg (39.0 Кб, 161 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 20.09.2014, 14:42   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Проект cxGrid
Вложения
Тип файла: rar cxgrid.part01.rar (500.0 Кб, 11 просмотров)
Тип файла: rar cxgrid.part02.rar (500.0 Кб, 8 просмотров)
Тип файла: rar cxgrid.part03.rar (500.0 Кб, 7 просмотров)
Тип файла: rar cxgrid.part04.rar (500.0 Кб, 6 просмотров)
Тип файла: rar cxgrid.part05.rar (500.0 Кб, 7 просмотров)
xxbesoxx вне форума Ответить с цитированием
Старый 20.09.2014, 14:44   #10
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Это архив тоже его
Вложения
Тип файла: rar cxgrid.part06.rar (500.0 Кб, 6 просмотров)
Тип файла: rar cxgrid.part07.rar (500.0 Кб, 8 просмотров)
Тип файла: rar cxgrid.part08.rar (500.0 Кб, 7 просмотров)
Тип файла: rar cxgrid.part09.rar (500.0 Кб, 7 просмотров)
Тип файла: rar cxgrid.part10.rar (500.0 Кб, 9 просмотров)
xxbesoxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как установить возможность выбора только bmp-файлов в Picture Editor? Наки Компоненты Delphi 2 14.04.2011 22:03
как можно оздать панель инструментов, на которой реализовать возможность выбора гарнитуры шрифта, для выб Лелич Компоненты Delphi 2 17.02.2011 10:58
Как убрать программы из списка выбора программ evgenii0494 Операционные системы общие вопросы 8 15.02.2010 20:35
Как сделать возможность выбора размещения алисаса? artemavd БД в Delphi 4 25.03.2009 22:57
Как осуществить возможность выбора БД в процессе работы программы Cabyrc БД в Delphi 9 21.03.2009 08:30