PDA

Ver la Versión Completa : No Encuentreo evento OnKeyPreess


rmeckbell
05-07-2017, 19:03:27
Hola, en mi aplicacion de escritorio que estoy haciendo mediante la utilidad multiplataforma,
ocupo colocar un TEDIT pero cuando se oprima una tecla ocurra una accion..
El tema es que no encuentro el evento OnKeyPress, sera que exista en FireMonkey con otro nombre.

Saludos

oscarac
05-07-2017, 19:05:33
en un Tedit se usa el "OnChange"
el OnKeyPress esta en el formulario no en el edit

rmeckbell
05-07-2017, 19:14:07
Hola Oscar muchas gracias por tu respuesta, en el evento OnChange cual es la variable que guarda la tecla que se oprime

es que en el evento veo que solo tiene un sender como parametro

Lo que ocupo es validar si el usuario oprime la tecla enter pero como la capturo desde el teclado

Caminante
05-07-2017, 23:13:17
Hola Oscar muchas gracias por tu respuesta, en el evento OnChange cual es la variable que guarda la tecla que se oprime

es que en el evento veo que solo tiene un sender como parametro



Hola perdon por la intromision

Me parece que el consejo de Oscarac es usar el evento keypress del formulario asignadole primero a su propiedad keypreview el valor true. Asi el formulario recibira primero el evento de teclado.

Saludos

rmeckbell
06-07-2017, 15:40:28
Hola Caminate, me parecio interesante tu opinion, sin embargo vieras que me puse a buscar la propiedad onKeyPress en el formulario y tampoco la encuentro para FireMonkey

Tanto en el TEdit como en el TForm, las propiedades que me aparecen son OnkeyDown y OnKeyUp. no tengo ningún OnKeyPress, sera acaso que esa propiedad no la han implementado en FireMonkey.

cloayza
06-07-2017, 15:42:07
Puedes usar el evento OnTyping

Existe una diferencia entre ambos eventos, el OnChange se dispara cuando el Control pierde el foco (Se cambia a otro TEdit), en cambio el OnTyping, se dispara cada vez que digitas un caracter en el control...


procedure TForm1.Edit1Change(Sender: TObject);
begin
Label2.Text:='OnChange->'+Edit1.Text;
end;

procedure TForm1.Edit1Typing(Sender: TObject);
begin
Label1.Text:='OnTyping->'+Edit1.Text;
end;


Espero te ayuda, saludos cordiales

rmeckbell
06-07-2017, 15:49:53
Hola Cloaiza

Suena bien la propiedad OnTyping sin embargo sera capaz de leer la tecla Enter en el teclado de tal manera que pueda
generar un if tecla = enter then..
es que no veo cual serìa el parámetro.

Caminante
06-07-2017, 16:17:17
Puedes usar el evento OnTyping

Existe una diferencia entre ambos eventos, el OnChange se dispara cuando el Control pierde el foco (Se cambia a otro TEdit), en cambio el OnTyping, se dispara cada vez que digitas un caracter en el control...

Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TForm1.Edit1Change(Sender: TObject); begin Label2.Text:='OnChange->'+Edit1.Text; end; procedure TForm1.Edit1Typing(Sender: TObject); begin Label1.Text:='OnTyping->'+Edit1.Text; end;




Bueno yo de firemonkey no se practicamente nada. No conocia el evento ontyping pero tampoco se si pueda hacer lo que necesita desde ahi.

En tal caso buscaría el evento onkeydown (Aunque no se si es igual que el de la vcl).

Saludos

cloayza
06-07-2017, 18:41:35
Bueno entonces esto...


procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
case (Key) of
vkReturn: label1.Text:='Return';
vkBack: label1.Text:='Backspace';
vkTab: label1.Text:='Tab';
else
label1.Text:='KeyChar...'+KeyChar;
end;
end;

Saludos cordiales