Помощь - Поиск - Пользователи - Календарь
Полная версия: Раскрывающийся список - список записей базы данных
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Bill Gates
Есть база данных BDE, в программе, работающей с ней нужно сделать следующее так, чтобы одно из текстовых полей базы данных отображалось в виде выпадающего списка (как tComboBox) и чтобы пунктами этого списка были все записи этого поля (в нем содержится имя), упорядоченные в алфавитном порядке. Причем, чтобы при выборе нужного имени и все остальные параметры этой записи также загружались в остальные компоненты (например, возраст, и т.д.). Ко всему этому нужно, чтобы DBNavigator также позволял перемещаться по базе данных. smile.gif
Какие мысли будут?
Бродяжник
Как будто можно применить DBLookupComboBox. Только нужно сделать две пары компонентов TTable/TDataSource, ссылающихся на одну и ту же базу. И позаботиться об их синхронизации при выборе из комбобокса.
Короче, должно быть где-то так:
DBLookupCombobox1.DataSource := DataSource1;
DBLookupCombobox1.ListSource := DataSource2;

DBLookupCombobox1.DataField, DBLookupCombobox1.ListField и DBLookupCombobox1.KeyField ссылаются на одно и то же поле базы данных.
DataSource1 ссылается на Table1.
DataSource2 ссылается на Table2.
Table1 и Table2 ссылаются на одну и ту же таблицу на диске.
И наконец:
procedure TForm1.DBLookupComboBox1CloseUp(Sender: TObject);
begin
Table1.GotoCurrent(Table2);
end;
Bill Gates
2 Бродяжник
Спасибо большое!!! Правда присходят некоторые лаги - при после нескольких выборов значения все пункты DBLookupCombobox'а становятся равны последнему полю, но буду разбираться, еще раз спасибо. Я уж хотел было через MySQL-запросы делать выбор поля...smile.gif
Бродяжник
Насчет лагов ничего не скажу, я этот пример написал "навскидку" и всерьез не тестировал.
(а вообще мне все эти DBLookupComboBox'ы не нравятся. Они как-то не так работают, как я от них ожидаю). dry.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.