Código Delphi
[-]
begin
if Ejecutando then Exit;
try
Ejecutando := True;
finally
Ejecutando := False;
end;
end;
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; else....
Espero te sirva.