![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выпадающий список в DBGrid [D7, XP]
ZiTrAX © (2006-11-03 00:26:00)Как реализовать выпадающий список в ячейке DBGrid (или DBGridEh)? Есть вариант - поверх ячейки помещать ComboBox в момент получения фокуса, но это слишком трудоёмкий для меня процесс (нужно находить координаты ячейки, динамически создавать ComboBox и т.д.). Мне интересно, а как это реализовано в IBExpert?
ZiTrAX (2006-11-24 20:37:00) [1]to EIen: Большое спасибо за подробное объяснение. Теперь вроде разобрался.
to Sergey13: Что за долбаная привычка всех опускать??? Не знаешь ответа, не можешь ответить, не хочешь отвечать - так не отвечай вообще. Прочитал, мысленно выругался и оставил своё мнение при себе!!!
EIen (2006-11-24 09:35:00) [2]Можно примерно так:
1. Дважды щелкнуть на DBGrid
2. Добавить колонку
3. Указать поле которое будет показываться (свойство FieldName)
4. Заполнить список (свойство PickList)
А можно в место заполнения списка подключить сразу таблицу?
Да можно, Вам нужно в компоненте данных сделать Lookup поле.
1. Дважды щелкнуть мышкой на допустим TTable появится редактор полей
2. В редакторе полей правой кнопкой и New Field
3. Появится диалог в нем тип поля Lookup, настоить остальные св-ва
(если надо подробнее про другие свойства пишите).
Если не затруднит, то от описания я бы не отказался
Итак, есть две таблицы, одна из них содержит ссылку (числовой ID)
на вторую, где есть текствое описание чего-либо. Допустим - это таблица
человек и его специальность.
Наша цель - сделать так, чтобы при вводе/редактировании ФИО человека итд
в DBGrid из выпадающего списка можно было выбрать специальность.
Таблица человек --> Table1
Таблица специальности --> Table2
Путь решения - создание Lookup поля в Table1. Этапы
1. Вызываем редактор полей Table1, Click мышой
2. В редакторе полей правой кнопкой и New Field -> видим диалог
3. В диалоге
Name --> Profession (или как Вы его обзовете)
Type --> String
Size --> длина наименования профессии в Table2
FieldType --> Lookup
KeyFields --> имя числового поля Table1, в которое связывает нас с
Table2 (например prof_id)
Dataset --> откуда мы будем брать строки описания, т.е Table2
LookupKeys --> Ключевое поле Table2
ResultField --> наименование профессии из Table2
Жмем ОК
Теперь в DBGrid для Table1 данное поле будет содержать выпадающий список
с профессиями из Table2
Sergey13 (2006-11-24 08:48:00) [3]> [11] ZiTrAX © (24.11.06 00:27)
Чукча не читатель, чукча писатель? Или кнопка Ф1 начисто отсутствует? Так за 3 недели !!!можно было и клавиатуру поменять.
ZiTrAX (2006-11-24 00:27:00) [4]Народ! Помогите с этими лукапными полями!!! Сижу, как баран, перед исходником и не могу понять, в каком месте задаётся этот выпадающий список в DBGridEh. В датасете я ничего не нашёл ( а мож, плохо искал). Ну подскажите, плиззззззззз, как с ними бороться. А то я крышей так двинусь:-(((
Desdechado (2006-11-11 19:05:00) [5]Лукапные поля там же, где и остальные поля - в датасете, а не в гриде. Грид - это просто рамка для визуализации датасета.
Примеры лукапов можно найти здесь
"C:\Program Files\Borland\Delphi7\Demos\Db\"
И не забывать нажимать F1 на непонятных словах :)
ZiTrAX (2006-11-11 17:10:00) [6]"Библия программиста"- а где можно найти эту книгу в электронном варианте (желательно, чтоб весила не много).
А теперь вопрос по поводу DBGridEh: где там находятся эти LookUp-поля? И если не трудно, подскажите, где в исходнике DEMO1 находится обработчик выпадающего списка в DBGridEh1 на PageControl1 (колонка VendorName)? Или как его обрабатывать? Что там надо делать? Я уже весь исходник просмотрел, но не могу понять, как оно делается :-(((. Мож, кто в нете видел конкретный разобранный пример работы с этим компонентом.
Помогите, PLEASE!
Chort (2006-11-03 20:58:00) [7]
> ZiTrAX © (03.11.06 19:59) [6]
>
> > Если список, который выпадает - данные из другой таблицы,
>
> > то это можно сделать через лукап-поля.
>
> Сорри за глупый вопрос, а можно поподробнее здесь?
"Библия программиста"-решение и подробное описание такой задачи.
Desdechado (2006-11-03 20:33:00) [8]Lookup Fields + F1
ZiTrAX (2006-11-03 19:59:00) [9]
> Если список, который выпадает - данные из другой таблицы,
> то это можно сделать через лукап-поля.
Сорри за глупый вопрос, а можно поподробнее здесь?
Sergey13 (2006-11-03 08:32:00) [10]> [0] ZiTrAX © (03.11.06 00:26)
Если список, который выпадает - данные из другой таблицы, то это можно сделать через лукап-поля.
unknown (2006-11-03 02:39:00) [11]
> Германн © (03.11.06 01:45) [3]
> А на чём собсс-но основывается данное утверждение?
Я знаком с компонентами DevExpress, по этому определил визуально :)
Можно, конечно и в ресурсах программы посмотреть:
object Grid: TdxDBGrid
...
object gcFile: TdxDBGridButtonColumn
...
object gcSize: TdxDBGridSpinColumn
и т.д.
Германн (2006-11-03 01:45:00) [12]
> unknown © (03.11.06 01:20) [2]
>
>
> > ZiTrAX © (03.11.06 00:26)
> > Мне интересно, а как это реализовано в IBExpert?
>
> В IBExpert используются компоненты DevExpress.
А на чём собсс-но основывается данное утверждение?
unknown (2006-11-03 01:20:00) [13]
> ZiTrAX © (03.11.06 00:26)
> Мне интересно, а как это реализовано в IBExpert?
В IBExpert используются компоненты DevExpress.
Как сделать в DBGridEh можно посмотреть в демке.
Германн (2006-11-03 01:09:00) [14]Как в IBExpert не знаю, а для DBGrid есть PickList.
DBGrid.Columns.Items[].PickList