![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
||||
|
||||
|
Muy interesante la solución de Andrés, yo hasta el momento lo resolvía interceptando la pulsación
de la tecla en el control correspondiente lo cual me llevaba a propagar el código ad infinitum, tantos controles afectados tantos eventos a programar o en su caso llamadas a una función centralizada. Como el applicationsEvents se dispara a cada momento, la variable semáforo propuesta por Andrés, entiendo que habría que abrirla solamente en los formularios en los cuales se fuese a dar ese tratamiento de cambio de punto por coma del teclado numérico. Y si estais de acuerdo en lo dicho entonces yo propondría el siguiente leve cambio en el código: Código:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if MapearPuntoAComa then//Sino está activado salir cuanto antes.
begin
if (Msg.message = WM_KEYDOWN) AND
(Msg.wParam = VK_DECIMAL) AND (DecimalSeparator = ',') then
begin
ShowMessage('Aquí estamos Andrés.');
Msg.message := WM_CHAR; // cambiamos el tipo de mensaje
Msg.wParam := 44; // si omitimos la línea anterior,
aquí sería Msg.wParam := 188;
Handled := FALSE;
end;
end;
end;
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
Última edición por marcoszorrilla fecha: 19-04-2004 a las 16:01:48. |
|
|
|