Hola...
Si estás usando el component
TcxTextEdit, puedes hacer uso de las propiedades
ActiveProperties.LookupItems y
ActiveProperties.IncrementalSearch junto con el evento
OnKeyPress para hacer lo que quieres.
Yo hice algo parecido. Tendrías que hacer algo como:
Código Delphi
[-]
type
TMyForm = class(TForm)
procedure FormCreate(Sender: TObject);
procedure cxTextEdit1OnKeyPress(Sender: TObject; var Key: Char);
private
FOldChar: Char;
end;
implementation
procedure TMyForm.FormCreate(Sender: TObject);
begin
FOldChar := #0
end;
procedure TMyForm.cxTextEdit1OnKeyPress(Sender: TObject; var Key: Char);
begin
if (Key <> #8) and ((Text = '') or (Length(Text) = SelLength)) and
(ToUpper(FOldChar) <> ToUpper(Key)) then
begin
FOldChar := Key;
case ActiveProperties.CharCase of
ecUpperCase:
Key := ToUpper(Key);
ecLowerCase:
Key := ToLower(Key)
end;
ActiveProperties.LookupItems.Clear;
while not DataSet.Eof do
begin
ActiveProperties.LookupItems.Add(DataSet.FieldByName('CampoAUsar').AsString);
Next
end
end
else
if (Key = #8) and (ToUpper(FOldChar) <> ToUpper(Text[1])) then
begin
FOldChar := Text[1];
ActiveProperties.LookupItems.Clear;
while not DataSet.Eof do
begin
ActiveProperties.LookupItems.Add(DataSet.FieldByName('CampoAUsar').AsString);
Next
end;
FindSelection := True
end
end;
Ahora, lo que estás haciendo ahí es buscar todos los registros que inician con la primera letra que tecleaste y los cargas dentro de la propiedad
ActiveProperties.LookupItems, al tener la propiedad
ActiveProperties.IncrementalSearch en
True, el mismo componente se va a encargar de autocompletar el contenido mientras vas tecleando los demás caracteres.
La parte donde haces la consulta y llenas los valores lo puedes convertir en un procedimiento para que no dupliques código.
Este código no está probado, solo lo basé en un código que tengo pero implementado de otra forma, así que podría tener errores. La propiedad
ActiveProperties no es
published, así que no la vas a encontrar en el
Explorador de Objetos de
Delphi.
Espero te sirva.
Saludos...