PDA

Ver la Versión Completa : if key = vkPeriod then key := vkcomma


amadis
03-02-2020, 20:15:47
Hola Colegas,

necesito poder cambiar el PUNTO por la COMA, en un componente edit de firemonkey

En el evento onkeyDown he probado

if key = vkPeriod then key := vkcomma;


Pero el evento nunca ocurre.

El keyboardtype está puesto a NUMBERPAD.

Y necesito que si el usuario presiona PUNTO, en lugar de COMA, se transforme a coma para poder convertirlo a FLOAT sin problemas.


He probado la App en android y win32, el codigo que les comenté arriba nunca ocurre.
No se detecta el evento del punto.
He usado el vrreturn, para interceptar el boton LISTO de android y funciona.

¿de que otra forma puedo intereptar el PUNTO?

Gracias

mamcx
03-02-2020, 22:48:21
No uso firemonkey pero tienes un error de concepto. Los eventos no son valores mutables que se progagan porque si.

Son NOTIFICACIONES que se envian al control. Al asignar key, no estas ENVIANDO la notificacion a nadie. Simplemente cambias su valor local. Es como recibir un correo, cambiarlo en outlook y no darle enviar.

Ademas, lo que QUIERES y lo que HACES no encaja. QUIERES cambiar "PUNTO por la COMA" y HACES alterar el evento en key de punto a coma.

amadis
03-02-2020, 22:57:41
Normalmente en VCL lo hacía en el evento ONKEYPRESS, de los TEdit que deben trabajar con numeros enteros.

Lo hacía poniendo

if key = '.' then key := ',';

En Firemonkey no existe más el Keypress, porque por razones entendibles no se apretan teclas ya que son virtuales, en su lugar podemos usar onkeyDown, y onkeyup.

Por eso pretendía en el evento Onkeydown cambiar el valos de key

procedure EditKeyDown(Sender: TObject; var Key: Word;
var KeyChar: Char; Shift: TShiftState);
begin
if key = vkPeriod then key := vkComma;
end;

la variable key no debe ser solo lectura porque no me dio error al asignarla.

Por el momento lo tengo solucionado, leyendo el string antes de usarlo. Lo proceso, cambio el punto por la coma. Y luego hago las operaciones necesarias.

Pero la idea era en tiempo real que al presionar PUNTO, salga COMA.

Neftali [Germán.Estévez]
04-02-2020, 08:23:01
Otra opción es dejar que el usuario introduzca el número de la forma que le sea más cómoda a él y luego cuando debas tratarlo, hacer los cambios necesarios según el "FormatSettings" que tengas definido en el sistema.