Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Búsqueda incremental en ComboBox (https://www.clubdelphi.com/foros/showthread.php?t=87623)

jocaro 31-01-2015 17:10:20

Búsqueda incremental en ComboBox
 
Hola

Tengo un ComboBox con una serie de items rellenos. Quiero situarme en el item que busco segun voy tecleando su nombre.

Ejemplo: Si he cargado un juego de tipos de letras y tecleo el carácter 't' que la búsqueda se situe en el item 'Tahoma'; si, a continuación, tecleo el carácter 'i', que el item seleccionado sea 'Times', etc.

Quisiera saber si es mejor hacerlo con el componente ComboBox o con ComboBoxEx u otro y si con alguno de éstos es posible hacerlo automáticamente.

Si es necesario escribir la búsqueda agradecería el código o un ejemplo.

Gracias por anticipado y un saludo.

ecfisa 01-02-2015 01:58:17

Hola jocaro.

Si entendí bién tu pregunta, el TComboBox ya realiza la acción que buscas, ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ComboBox1 do
  begin
    Style:= csDropDown;
    Items.Assign(Screen.Fonts);
    Sorted:= True;
    ItemIndex:= 0;
  end;
end;
Estando el foco en el combo, verás que realiza la búsqueda incremental a medida que presionas las teclas correspondientes.

Saludos :)

jocaro 02-02-2015 15:32:10

Gracias, es lo que buscaba.

Una consulta mas:

Quiero que la búsqueda se realice sin eventos que interfieran con ella y después elegir el item seleccionado pulsando la tecla enter o haciendo click con el ratón

¿que eventos/código debería definir para conseguirlo?

Un saludo

ecfisa 03-02-2015 12:02:04

Hola jocaro.

No me queda muy la situación, pero creo que te refieres a esto:
Código Delphi [-]
// OnKeyPress
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
  msg: TMsg;
begin
  if Key = #13 then
  begin
    Key:= #0;
    ShowMessage('Seleccionado');
  end;
end;

// OnCloseUp
procedure TForm1.ComboBox1CloseUp(Sender: TObject);
begin
  ShowMessage('Seleccionado');
end;

Saludos :)

jocaro 05-02-2015 08:27:37

Hola

Es justo lo que necesitaba.

Gracias


La franja horaria es GMT +2. Ahora son las 21:39:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi