2012-01-05 4 views
5

То, что я пытался достичь, это как установить ItemIndex на -1, как в обычном ComboBox, чтобы выбранный элемент был очищен.DBLookupComboBox - Как очистить выбранный элемент?

Нет элемента ItemIndex для DBLookupComboBox, а свойство Text - только для чтения. Итак, как очистить выбранный элемент? Пожалуйста помоги. Спасибо заранее.

PS: Закрытие и повторное открытие DBLookupComboBox-> ListSource DataSet не помогает.

+0

Я решил проблему с DBLookupComboBox-> KeyValue = „“; поскольку тип данных в ListFields имеет тип String. Спасибо Куцоффу и Джону Изли за то, что он дал мне ключ к решениям. :) –

ответ

1

двумя способами:

1) во время выполнения: DbLookupComboBox.KeyValue: = NULL;

2) при расчетном времени: установить свойство DbLookupComboBox.NullValueKey для DEL (или любой другой ключ, который вы хотите использовать, чтобы обнулить значение во время выполнения)

+0

1) Выбрасывает EVariantTypeCastError. 2) Вызывает нарушение доступа. Спасибо в любом случае. –

+0

1) обычно происходит, когда ключ поиска и ключевые поля не совпадают. Если ваше ключевое поле является строкой, то да, вы можете назначить ''. 2) Я никогда не испытывал этого .... –

2

DBLookupComboBox представляет собой значение поля базы данных. Поэтому вам нужно очистить/изменить значение поля, чтобы очистить/изменить значение DBLookupComboBox по коду.

2

Вы можете использовать

DBLookupComboBox.KeyValue := -1;
+0

Настройка KeyValue выполняет сброс выбранного элемента, но вызывает исключение EVariantTypeCastError. Я использую C++ Builder 2009, не уверен, что это имеет какое-то отношение к исключению. Спасибо, в любом случае. –

0

если первый раз, когда вы установите dblokupcombobox KEYFIELD в собственности «город '// пример

, если вы хотите, чтобы очистить выбранный элемент, который вы можете использовать этот

procedure TFtreset.BitBtn6Click(Sender: TObject); 
begin 
    dblookupcombobox2.KeyValue:='city'; 
end; 
Смежные вопросы