PDA

Ver la Versión Completa : Edit con boton de tipo '...'


gabrio
10-10-2007, 03:00:54
Buenas noches, no se si alguien pueda ayudarme.

En un form tengo un edit y dentro de el hay un boton de tipo '...' o sea, puedes escribir algo en el edit o presionar el boton y llama a otro form para buscar el valor deseado.

Dicho boton no está visible hasta que:


procedure TForm3.Edit1Enter(Sender: TObject);
begin
BtnBusqueda.Visible := True;
end;


y en el evento Exit:


procedure TForm3.Edit1Exit(Sender: TObject);
begin
BtnBusqueda.Visible := False;
end;


El problema es que cuando el boton está visible, al tratar de darle clic, obviamente el foco sale del edit, me pone el boton invisible pero no alcanza a ejecutar el Click del botón.

La unica manera que he podido, es con un timer:


procedure TForm3.Timer1Timer(Sender: TObject);
begin
BtnBusqueda.Visible := False;
Timer1.Enabled := False;
end;


Pero los resultados no son los esperados, ya que aunque el boton ejecute su respectivo click, se queda visible hasta que termina el timer

Any Idea????

Thanks a lot!!!!

egostar
10-10-2007, 03:06:07
Hola gabrio

Tu error es que estas interpretando el evento OnEnter como si fuese el Enter del teclado, ese evento se ejecuta como lo dice su nombre al entrar al objeto y no al presionar ENTER, usa mejor el evento OnClick del botón.

También estás usando el evento OnExit con el mismo error de interpretación.

Salud OS.

Edito. No leí todo el hilo, estás usando el objeto TEdit, yo usaría el evento OnChange del edit.

Héctor Randolph
10-10-2007, 03:24:51
Hola gabrio

Hace algún tiempo programé un componente llamado EditButton. Este componente permite precisamente colocar un pequeño botón tipo ellipsis [...] en una caja de edición.

Tiene una propiedad que se llama AutoHideButton que sirve para ocultar el botón cuando la caja de edición pierde el foco.

Puedes programar algo en el evento onButtonClick que se dispara cuando se presiona el botón, en fin, lo dejo para que lo revises y aprovecho para ver si se incorpora al conjunto de componetnes del club delphi.

Saludos

P.D. espero que no tengas problemas para instalarlo, simplemente abre le menú Component->Install component, selecciona la unidad EditButton.pas e indica el paquete en el cual se va a instalar y listo

Neftali [Germán.Estévez]
10-10-2007, 10:08:21
El problema es que cuando el boton está visible, al tratar de darle clic, obviamente el foco sale del edit, me pone el boton invisible pero no alcanza a ejecutar el Click del botón.


Una prueba sencilla que puedes hacer es cambiar la clase del botón por un TSpeedButton. Estos tienen la cualidad de que no reciben el foco; De esta forma no se te hará invisible al realizar el Click.