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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 08:31   #1
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию DbGridEh и DropDownBox помогите разобраться.

Привет всем. В общем проблема может показаться пустяковой, но все-таки. Ковырял все свойства и никак не получается.
Есть табличка в базе MS Access с перечислением едениц измерения "ЕD". Есть табличка товаров "TOVARY", в которой есть поле (еденицы измерения) в общем в это поле нужно вставить данные из таблицы с перечислением этих едениц "ED". Хочу сделать чтобы при нажатии на ячейку в DBGridEh, в ней появлялся низпадающий список с перечислением едениц измерений. Положил на форма ADOQuery, которая выбирает значения из таблицы едениц измерения, затем положил datasource, связал их между собой. Ковырялся в DBGridEh, но никак не могу сделать так чтобы список выпадал со значениям. Сама кнопка со срелкой вниз в ячейке есть, но при нажатии ничего не происходит и никакой список не появляется. Подскажите что я сделал не так? Может что-то где-то не указал?

Если вдруг кто не понял, то вот пример в 1С, а мне нужно это сделать в DBGridEh.



Заранее спасибо.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 19.08.2009, 13:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не знаю как в EhLib а в обычном ДБГриде есть так называемый PickList который нужно при открытии БД наполнять из нее значениями. Это собственно и будет выпадающим списком. Поищи в свойствах DBGridEh такое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2009, 08:14   #3
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, в том то и дело, что в DbGridEh, это можно сделать вручную в Инспекторе объектов, без написания кода. С написанием кода все понятно, но раз уж есть это свойство, то хотелось бы им пользоваться.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 20.08.2009, 08:36   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну дык что останавливает?
Вот смотри:
Код:
var   s:TStringList;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
 s:=TStringList.Create;
 Table1.Active:=true;
 Table1.First;
 s.Sorted:=true;
 s.Duplicates:=dupIgnore;
 while not Table1.Eof do begin
  s.Add(Table1.fieldbyname('category').AsString);
  Table1.Next;
 end;
 Table1.First;
 DBGrid1.Columns[1].PickList:=s;
end;
Этот код пройдется по таблице и составит список из нужного поля без дубликатов, а потом список этот присваивается свойству PickList той колонки, которая отвечает за отображение этого поля.
Уяснил суть момента?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2009, 09:57   #5
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, дя я то давно все уяснил, это ты меня не можешь понять. Я еще раз говорю, я знаю как сделать с помощью кода. Мне не нужен код, мне нужно сделать это с помощью свойств в Инспекторе Объектов, а такие свойства у DBGridEh там есть. Вот только колдовал я с ними долго, и ниче не получилось.

Кстати, мой код, немного другой:
Код:
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select ED_NAME from ED');
adoquery3.Active:=true;
dbgrideh1.Columns[2].PickList.Clear;
adoquery3.First;
while not adoquery3.Eof do
   begin
      dbgrideh1.Columns[2].PickList.Add(adoquery3['ED_NAME']);
      adoquery3.Next;
   end;
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 20.08.2009, 10:33   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне не нужен код, мне нужно сделать это с помощью свойств в Инспекторе Объектов, а такие свойства у DBGridEh там ест
Так делай
Тогда не понимаю проблемы если у тебя все получается, в чем вопрос то?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2009, 10:37   #7
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, ладно проехали.

Осталось несколько вопросов по DBGridEh:
1. Как сделать чтобы при нажатии на Enter принимал фокус следующий столбец Grad'a?
2. Как сделать, чтобы при получении фокуса, столбец, у которого есть PickList, автоматически появлялся выпадающий список?
3. Как сделать так, чтобы при нажатии на Ins и при появлении новой строчки, фокус принимал первый столбец в Grid'e?

Опять же хорошим примером для более полного понимания моих вопросов может послужить 1С, когда забиваешь табличную часть в документе.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 20.08.2009, 11:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
1. Как сделать чтобы при нажатии на Enter принимал фокус следующий столбец Grad'a?
Код:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
 if key=#13 then
  DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;
end;
Цитата:
3. Как сделать так, чтобы при нажатии на Ins и при появлении новой строчки, фокус принимал первый столбец в Grid'e?
Соответственно:
DBGrid1.SelectedIndex:=0;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2009, 12:31   #9
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Stilet, ок, спасибо большое, а по поводу 2-го вопроса не подскажешь????
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 20.08.2009, 14:28   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а по поводу 2-го вопроса не подскажешь?
Извини, не страдаю таким проносным, как DB контролы
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
покраска dbgrideh artemavd БД в Delphi 1 16.06.2009 12:47
автопоиск в DBGridEh furstenberg Компоненты Delphi 4 18.02.2008 12:49
Вопрос по DBGridEh Cyn4uk Компоненты Delphi 1 01.01.2008 11:19
Выкрутасы с DBGridEh Killer_djon БД в Delphi 6 12.11.2007 11:08
из DBGridEh в Exel Abay БД в Delphi 3 18.09.2007 09:10