Delphi — ComboBox/ПоискComboBox

У меня проблема с ComboBox/LookupComboBox. Это что-то действительно идиотское, но я не знаю, как найти это через Google, чтобы исправить это. У меня есть таблица в моей базе данных, которая сохраняет «Y/N» для записи, чтобы указать, является ли она активной (Y) или неактивной (N). Но в моем приложении я хотел бы показать пользователю «ДА/НЕТ», а не просто одно слово, может ли кто-нибудь мне помочь?

Спасибо!


person user3633580    schedule 05.05.2015    source источник
comment
Используйте свойство ListSource TDBLookupComboBox в сочетании с KeyField и ListField. Сопоставьте KeyField с Y или N и ListField с Да или Нет, для этого добавьте 2 записи в ListField's DataSet, первая будет выглядеть как Y - Да, вторая как N - Нет. Вы можете добавить оба значения во время выполнения, в форме создать Например.   -  person EProgrammerNotFound    schedule 05.05.2015
comment
Это одна из проблем, я не хочу создавать набор данных listfield, я помню, как однажды пытался поместить конвейер или что-то в элементы поиска для указания KeyField и DisplayField, но я не помню, как это сделать больше. Спасибо за ответ   -  person user3633580    schedule 05.05.2015
comment
Тогда используйте DBCheckBox. Как упоминал @SpeedFreak.   -  person EProgrammerNotFound    schedule 05.05.2015
comment
Я не хочу создавать набор данных listfield. В чем техническая проблема с ним?   -  person EProgrammerNotFound    schedule 05.05.2015
comment
Техническая проблема в том, что мой начальник не разрешил мне это сделать :( Спасибо за помощь   -  person user3633580    schedule 05.05.2015
comment
Это не техническое. Для вас есть 2 встроенных варианта TDBCheckBox или TDBLookupComboBox. Кроме того, вы всегда можете придумать новый компонент, который облегчит вам задачу.   -  person EProgrammerNotFound    schedule 05.05.2015


Ответы (1)


Если вы используете TDBLookupComboBox, вам нужно указать два источника данных. Один указывает, где хранится значение (свойства DataSource и DataField), а другой указывает значения поиска (свойства ListSource, KeyField и ListField). DataField и KeyField указывают на столбцы, содержащие значения Y/N, а ListField указывают на столбец, содержащий значения YES/NO. Вы можете использовать набор данных в памяти, например TClientDataset, для значений поиска.

Лично я бы использовал вместо этого TDBCheckBox и установил свойства ValueChecked и ValueUnchecked на «Y» и «N». Флажок намного лучше представляет логическое значение.

person SpeedFreak    schedule 05.05.2015
comment
Вот так. Я бы тоже пошел с TDBCheckBox. - person EProgrammerNotFound; 05.05.2015