Tuesday, February 13, 2007

Nejprve umístěte na formulář komponentu ComboBox (není třeba nijak upravovat její vlastnosti) a naplňte ji testovacími daty. Způsob naplnění nechám na vás, kvůli zjednodušení klidně použijte přímo editor v Object Inspectoru. V případné "ostré" aplikaci samozřejmě můžete data zadávat i přímo za běhu programu, na způsobu celkem nezáleží. A pak už jen vytvořte události OnKeyDown a OnChange podle následujícího zdrojového kódu (nezapomeňte též na proměnnou LastKey):
var
LastKey: Word;

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
LastKey := Key;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
Srch: string;
ix: Integer;
begin
Srch := combobox1.Text;
if LastKey = $08 then
begin
LastKey := 0;
Exit;
end;
LastKey := 0;
ix := combobox1.Perform(CB_FINDSTRING, - 1, Longint(PChar(Srch)));
if ix > CB_ERR then
begin
combobox1.ItemIndex := ix;
combobox1.SelStart := Length(Srch);
combobox1.SelLength := (Length(combobox1.Text) - Length(Srch));
end;
end;