2012-01-05 13 views
5

Quello che ho cercato di ottenere è come impostare ItemIndex su -1 come nel normale ComboBox, in modo che l'elemento selezionato venga cancellato.DBLookupComboBox - Come cancellare l'elemento selezionato?

Non esiste alcun ItemIndex per DBLookupComboBox e la proprietà Text è di sola lettura. Quindi, come posso cancellare l'elemento selezionato? Per favore aiuto. Molte grazie in anticipo.

PS: chiusura e riapertura di DBLookupComboBox-> ListSource DataSet non aiuta.

+0

ho risolto il problema con DBLookupComboBox-> KeyValue = ''; poiché il tipo di dati nei ListField è di tipo String. Grazie a Kutsoff e John Easley per avermi dato un'idea delle soluzioni. :) –

risposta

1

due modi:

1) in fase di esecuzione: DbLookupComboBox.KeyValue: = null;

2) in fase di progettazione: impostare la proprietà DbLookupComboBox.NullValueKey a DEL (o qualsiasi altra cosa che si desidera utilizzare su null il valore in fase di esecuzione)

+0

1) Genera EVariantTypeCastError. 2) Causa una violazione di accesso. Grazie comunque. –

+0

1) di solito si verifica quando la chiave di ricerca e i campi chiave non corrispondono. Se il tuo keyfield è una stringa, allora sì, puoi assegnare ''. 2) Non l'ho mai provato .. scusami .. –

2

DBLookupComboBox rappresenta il valore di un campo di un database. Quindi è necessario cancellare/modificare il valore del campo per cancellare/modificare il valore di DBLookupComboBox in base al codice.

2

È possibile utilizzare

DBLookupComboBox.KeyValue := -1;
+0

L'impostazione KeyValue reimposta l'elemento selezionato, ma genera l'eccezione EVariantTypeCastError. Sto usando C++ Builder 2009, non sono sicuro che questo abbia a che fare con l'eccezione. Grazie comunque. –

0

se prima volta che si imposta dblokupcombobox KeyField in proprietà è 'città chiave '// esempio

se si desidera cancellare elemento selezionato è possibile utilizzare questo

procedure TFtreset.BitBtn6Click(Sender: TObject); 
begin 
    dblookupcombobox2.KeyValue:='city'; 
end;