Ver Mensaje Individual
  #2  
Antiguo 02-03-2019
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola a todos,

El evento no deja de ser un método, por lo tanto, puedes llamarlo como cualquier otro método. De hecho, el método "Click" de "TControl" al final termina llamando al evento "OnClick", si este ha sido definido previamente. Dicho esto, es posible algo como lo siguiente:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Key: Word;
begin
  Key := 49; // ASCII = 1

  // Llamamos al método "FormKeyDown"
  Self.FormKeyDown(nil, Key, []);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ShowMessage(Chr(Key));
end;

... sin embargo, aunque lo anterior sea posible, no es lo más recomendable. Lo recomendable sería que la validación que tratas de hacer esté fuera del evento "KeyDown", en otro método, función o procedimiento, y, que uses dicha validación tanto en el evento "KeyDown", como en otro sitio en que la necesitases. En definitiva, se trata de desligar la validación del evento, precisamente, para no tener que llamar a dicho evento nosotros mismos, "inventándonos" argumentos, con los posibles problemas que eso puede suponer.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita