Ver Mensaje Individual
  #4  
Antiguo 19-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
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;
A ver que os parece, con el permiso de Andrés.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 19-04-2004 a las 16:01:48.
Responder Con Cita