Ver Mensaje Individual
  #2  
Antiguo 29-12-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Código Delphi [-]
begin
if Ejecutando then Exit;
try
   Ejecutando := True;
//   todo el keyDown
finally 
  Ejecutando := False;
end;
end; // Keydown;

Esto no soluciona del todo tu problema, ya que no da preferencia a una acción sobre otra... no sé si me explico.

Otra Opción sería crear una propiedad del tipo Modo = (Modificando, Insertando, Eliminando, NoDefinido) para saber la accion en curso.

Si necesitas preferencia de una accion sobre otra, puedes hacerlo asï:
Modo = set of (Modificando, Insertando, Eliminando, NoDefinido)

en el evento OnKeyDown, asignas a Modo la acción segun la tecla pulsada. Si pulsas 2 teclas a la vez, Modo tendría los dos valores.
en el evento OnKeyUp chequeas los estados que estan activos y solo tomas el que tiene más prioridad. Algo así como:
Código Delphi [-]
begin OnKeyUp
  if (Modificando in Modo) and (Eliminando in Modo) then
       Procedimiento de Modificar; // damos prioridad a Modificar sobre Eliminar
  else....



Espero te sirva.
Responder Con Cita