Prueba esto...
- En un form vacío, pega un componente Edit, un Button y un ListBox, mas o menos asi:
- En el ListBox, cambia la propiedad "Visible" a "False", y la propiedad "Style" a "lbOwnerDrawFixed" (deberás añadir el código para que "dibuje" los items como desees en el evento "OnDrawItem" del ListBox).
- Añade el siguiente código al evento "OnKeyUp" del Edit:
<span style="font-style: italic;">procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var I, Long: Integer;
Encontrado: Boolean;
begin
if (Key in [8,46]) or (Edit1.Text = '') then exit;
Encontrado := False;
I := 0;
while (I <= ListBox1.Items.Count -1) and (Encontrado = False) do
begin
Long := Length(Edit1.Text);
if AnsiLowerCase(copy(ListBox1.Items</span>
,1,Long)) = AnsiLowerCase(Edit1.Text) then
begin
Encontrado := True;
Edit1.Text := ListBox1.Items;
Edit1.SelStart := Long;
Edit1.SelLength := 255;
end;
inc(I);
end;
end;<span style="font-style: normal;">
</span><span style="font-style: normal;">- Añade el siguiente código al evento "OnClick" del Button:
<span style="font-style: italic;"> </span></span><span style="font-style: italic;">procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Show;
ListBox1.SetFocus;
end;</span>
<span style="font-style: italic;"></span>
<span style="font-style: italic;"><span style="font-style: normal;">- Añade el siguiente código al evento "OnClick" del Listbox:</span></span>
<span style="font-style: normal;"><span style="font-style: italic;"><span style="font-style: normal;"></span></span></span><span style="font-style: normal;"><span style="font-style: italic;"><span style="font-style: normal;"><span style="font-style: italic;">procedure TForm1.ListBox1Click(Sender: TObject);
begin
</span></span><span style="font-style: italic;">if ListBox1.SelCount <> 0 then Edit1.Text := ListBox1.Items[ListBox1.ItemIndex];</span></span><span style="font-style: italic;">
</span><span style="font-style: italic;"> ListBox1.Hide;
Edit1.SetFocus;
end;</span></span><span style="font-style: normal;">- Añade el siguiente código al evento "OnExit" del ListBox:
</span><span style="font-style: normal;"><span style="font-style: italic;">procedure TForm1.ListBox1Exit(Sender: TObject);
begin
ListBox1.Hide;
</span><span style="font-style: italic;">end;</span>
</span><span style="font-style: normal;">
<div>- Añade el siguiente código al evento "OnMouseMove" del ListBox:</div>
<span style="font-style: italic;">procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var tmpIndex: Integer;
begin
tmpIndex := ListBox1.ItemAtPos(Point(x,y),True);
if tmpIndex <> -1 then ListBox1.ItemIndex := tmpIndex;
end;
</span>
Salu2.</span>