xrenok |
Отправлено: 09.03.2004, 14:30 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
Позволяет ли TDBLookupComboBox вводить произвольные значения? У меня возможен только выбор из списка заданного в свойстве ListSource.
|
|
olegenty |
Отправлено: 09.03.2004, 16:56 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Ну будет надо — введёшь. Например, на Событие OnCloseUp добавишь, если ввод произвольного значения в поле возможен. Одна беда, тебе придётся обновить соответствующие наборы данных. Например, если в разных транзакциях работаешь.
Грязно, но это будет примерно так:
CODE | void __fastcall LookupCloseUp(TObject *Sender)
{
if (<Функция, проверяющая наличие значения (Lookup->Text.Trim())>)
{
1 Вывести диалог, если он необходим при вводе для уточнения неких значений
2 Вставить запись
3 Обновить наборы данных после коммита, даже если всё происходит в контексте одной транзакции (это уж тебе виднее, как и что)
}
} |
|
|
xrenok |
Отправлено: 09.03.2004, 18:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
То есть, не позволяет?
Мне требуется ввести в текущее поле таблицы значение, которое является одним из введенных ранее значений в это поле. Т.е. запрос для ListSource выглядит так
select POLE1 from TBL1 group by POLE1 order by POLE1
и в поле POLE1 мне и требуется ввести значение. Либо одно из введенных ранее, либо новое. |
|
olegenty |
Отправлено: 10.03.2004, 08:21 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Я это делаю иначе, чем ты. Я не пользуюсь TDBLookupComboBox, у меня просто текстовое поле и проверка, написанная программно. В данном случае (у меня), речь идёт о документе. Если такой есть, я подставляю возвращаемый функцией проверки идентификатор. Иначе, возникает форма ввода документа, вводятся дополнительные реквизиты и подставляется идентификатор вновь созданного документа. Минус — я прописал это руками (то есть потратил время), и, каждый раз идёт запрос на сервер (потому что буферизирующую классовую прослойку я ещё не написал). Плюс — я вынес метод в некий утилитный класс, и пользуюсь им везде, где мне нужно проверить наличие документа по коду.
|
|
xrenok |
Отправлено: 10.03.2004, 11:37 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 19
|
У меня задача иная и более простая. Выбрать одно из существующих значений данного поля в таблице.
Пришлось использовать DBComboBox и заполнять его элементами в цикле.
Но возникла другая проблема. Значение выбранное в DBComboBox сохраняется только при потере фокуса DBComboBox . Но если просто закрыть окно (крестиком), то сохранение в базе не происходит. Не подскажешь как сохранить изменения сразу после выбора из списка в DBComboBox? |
|
olegenty |
Отправлено: 10.03.2004, 13:21 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
Подскажу. Воспользуйся TRxLookupEdit — он это сделает...
|
|