Hallo
Ich habe versucht in einer ComboBox eine Wildcard - Suche zu implementieren.
Delphi-Quellcode:
procedure TTMainPage.CoBoBezKabelseiteKeyUp(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
i: integer;
Suchtext, Sucheingabe, SpeisungNr:
String;
begin
if ( Key <> 13)
and not (Key
In [37..40])
and ( Key <> 27)
then //Enter, Pfeiltasten und Escape ausgeschlossen
begin
Sucheingabe:= CoBoBezKabelseite.Text;
Suchtext:= '
%' + CoBoBezKabelseite.Text + '
%';
SpeisungNr:= IntToStr(Integer(CoBoSpeisung.Items.Objects[CoBoSpeisung.ItemIndex]));
with ADOQuery1
do begin
Close;
SQL.Text:= '
SELECT '+
'
a_bez, nr '+
'
FROM '+
'
[verteilelement] '+
'
WHERE '+
'
a_speisung_system_nr = ''
'+SpeisungNr+'
''
'+
'
AND '+
'
a_bez LIKE ''
'+Suchtext+'
''
';
Open;
end;
CoBoBezKabelseite.Items.Clear;
for i := 1
to ADOQuery1.RecordCount
do
begin
CoBoBezKabelseite.Items.AddObject(ADOQuery1.FieldbyName('
a_bez').AsString,
TObject(ADOQuery1.FieldbyName('
nr').AsInteger));
ADOQuery1.Next;
end;
CoBoBezKabelseite.ItemIndex:= 0;
CoBoBezKabelseite.DroppedDown:= True;
CoBoBezKabelseite.Text:= Sucheingabe;
CoBoBezKabelseite.SelStart:= Length(CoBoBezKabelseite.Text);
end;
if Key = 13
then
begin
if CoBoBezKabelseite.ItemIndex < 1
then
CoBoBezKabelseite.Text:= CoBoBezKabelseite.Items[CoBoBezKabelseite.ItemIndex];
end;
end;
AutoComplete = False
Style = csDropDown
Das ganze funktioniert eigentlich recht gut.
Ein Problem habe ich aber:
Sobald ich "CoBoBezKabelseite.DroppedDown:= True" mache, verschwindet der Mauszeiger und die noch vorhanden Items können nicht per Maus ausgewählt werden.
Hat jemand eine Idee wie ich das zwei Problem lösen kann?