(*____________________________________________________________________________
Diese Procedur dient zum löschen der Inhalte des ComboBox
Sie wird nur (!!!) einmall in dem Ereignis OnkeyDown des FORMULARS
aufgerufen.
FormLookComboDelete(Sender,Key);
Gelöscht wird anhand der Taste Entf und der Rück (Back)-Taste
__________
Wichtig: Bitte nicht vergessen die Eigenschaft KeyPrieview des Formulars
auf TRUE zu setzen.
____________________________________________________________________________
*)
PROCEDURE FormLookComboDelete(Sender: TObject; VAR Key: Word);
VAR
strDataField : STRING;
BEGIN
IF (Key = vk_Delete) OR (Key = vk_Back) THEN
BEGIN
(* Bei DBLookupComboBox unterscheiden wir zwischen zwei Fällen:
1.) Seine Eigenschaft DataSource und logische Weise auch DataField
sind nicht belegt d.h. DataField = '';
In dem Fall reicht es der Eigenschaft DataField zuerst ein
beliebiges Wert zuzuweisen, da so wie so DataSource leer ist
und kein Widerspruch erheben wird. Anschließend weisen wir
schon wieder die Eigenschaft DataField = ''; Und so erreichen
wir das der Eintrag in dem DBLookupComboBox ausgelöscht wird.
2.) Jetzt wird bißchen schwieriger, da die Eigenschaften DataSource
und DataField entsprechende Werte besitzen. Aus diesem Grund
greiffen wir direkt die DataSet(also Tabelle oder vielleicht
Query)
an. Die DataField Eigenschaft = strDataField verrät uns natürlich
die Tabellen Feld-Name dessen wert Value auf Null gesetzt wird.
Und schon ist der Inhalt gelöscht *)
// für ComboBox des Typs TDBLookupComboBox
IF (Sender as TForm).ActiveControl is TDBLookupComboBox THEN
BEGIN
strDataField := ((Sender as TForm).
ActiveControl as TDBLookupComboBox).DataField;
IF strDataField = '' THEN
BEGIN // Fall 1.)
((Sender as TForm).
ActiveControl as TDBLookupComboBox).DataField := '#';
((Sender as TForm).
ActiveControl as TDBLookupComboBox).DataField := '';
END
ELSE // Fall 2.)
((Sender as TForm).ActiveControl as TDBLookupComboBox).
DataSource.DataSet.FieldByName(strDataField).Value := NULL;
END;
// für ComboBox des Typs TRxDBLookupCombo
IF (Sender as TForm).ActiveControl is TRxDBLookupCombo THEN
BEGIN
strDataField := ((Sender as TForm).
ActiveControl as TRxDBLookupCombo).DataField;
IF strDataField = '' THEN
BEGIN // Fall 1.)
((Sender as TForm).
ActiveControl as TRxDBLookupCombo).DataField := '#';
((Sender as TForm).
ActiveControl as TRxDBLookupCombo).DataField := '';
END
ELSE // Fall 2.)
((Sender as TForm).ActiveControl as TRxDBLookupCombo).
DataSource.DataSet.FieldByName(strDataField).Value := NULL;
END;
// für ComboBox des Typs TRxDBLookupCombo
IF (Sender as TForm).ActiveControl is TDBComboBox THEN
BEGIN
strDataField := ((Sender as TForm).
ActiveControl as TDBComboBox).DataField;
IF strDataField = '' THEN
BEGIN // Fall 1.)
((Sender as TForm).
ActiveControl as TDBComboBox).DataField := '#';
((Sender as TForm).
ActiveControl as TDBComboBox).DataField := '';
END
ELSE // Fall 2.)
((Sender as TForm).ActiveControl as TDBComboBox).
DataSource.DataSet.FieldByName(strDataField).Value := NULL;
END;
END;
//_______________________***__ ENDE DER PROCEDUR __***________________________
END;