// Wenn bei einer
Combobox die Eigenschaft
Style
auf
csDropDown
steht,
// kann man eine "Autovervollständigung" implementieren, um den
// entsprechenden
ItemIndex
bereits durch Eingabe von ein oder zwei
// Buchstaben anzuwählen.
// Getestet mit D4 unter XP
var
ok: boolean;
// ein paar Werte zum Testen
procedure TForm1.FormCreate(Sender: TObject);
begin
with ComboBox1 do begin
style := csDropDown;
sorted := true;
items.add('Test');
items.add('Versuch');
items.add('Delphi');
items.add('DBR');
items.add('ComboBox');
itemindex := 0;
end;
end;
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ok := Key <> 8;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
s: string;
i: integer;
begin
if ok then
with ComboBox1 do begin
s := Text;
i := perform(CB_FINDSTRING, 0, integer(@s[1]));
if i >= 0 then begin
postmessage(handle, CB_SETCURSEL, i, 0);
postmessage(handle, CB_SETEDITSEL, 0, MAKELPARAM(length(s), maxword));
end;
end;
end;
// Hinweis:
// Innerhalb des Events
OnChange
der Combobox
kann man zwar mittels
//
SendMessage
oder
Perform
Daten abfragen, aber zum setzen sollte
// man
PostMessage
verwenden, das sonst zwar der richtige Text in der
// Box angezeigt wird,
ItemIndex
aber meist auf
-1
steht, was bei Abfragen
// zu Fehlern führt.
|