Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Asociar boton a tecla de funcion (https://www.clubdelphi.com/foros/showthread.php?t=69029)

lbidi 21-07-2010 22:03:58

Asociar boton a tecla de funcion
 
Hola, foristas.

Necesito crear un boton al cual tb se le pueda asociar una tecla de funcion, asi

tanto si dan click en el boton o presionan F5, ejecuta la misma accion.

No me doy cuenta cual boton puedo usar y como.

Gracias

marcoszorrilla 21-07-2010 22:21:51

Pon el "KeyPreview" del formulario en "True" y luego en el evento OnKeyDown el nombre de la función que quieres que se ejecute:

Código Delphi [-]
procedure TfralbaFact.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_F8 then
  Hacer_Cosas();
end;

Un Saludo.

ecfisa 21-07-2010 22:27:33

Hola Ibidi.

.Poné la propiedad del form KeyPreview a True
.Poné lo siguiente en el evento OnKeyDown del Form.
Código:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F5 then
  begin
    PostMessage(Button1.Handle, WM_LBUTTONDOWN, MK_LBUTTON,0);
    PostMessage(Button1.Handle, WM_LBUTTONUP, MK_LBUTTON,0);
  end;
end;

Esto te ejecutará lo que tengas en el evento OnClick del TButton.

Saludos.

ecfisa 21-07-2010 22:28:34

Fuaa! Marcos que escribis rápido... :)


Saludos.

lbidi 26-07-2010 15:31:36

Gracias a ambos.

Saludos.

Lepe 26-07-2010 18:48:29

Interesante, nadie ha nombrado un TAction y TActionList.

La ventaja de un TAction es que tiene una propiedad shortcut que puedes cambiar en tiempo de ejecución (el usuario decide qué tecla rápida usar), además no tendrías que escribir ni una sola línea de código, me refiero a que configuras todo con el ratón en tiempo de diseño.

afunez2007 26-07-2010 23:55:49

Cita:

Empezado por ecfisa (Mensaje 371117)
Hola Ibidi.

.Poné la propiedad del form KeyPreview a True
.Poné lo siguiente en el evento OnKeyDown del Form.
Código:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F5 then
  begin
    PostMessage(Button1.Handle, WM_LBUTTONDOWN, MK_LBUTTON,0);
    PostMessage(Button1.Handle, WM_LBUTTONUP, MK_LBUTTON,0);
  end;
end;

Esto te ejecutará lo que tengas en el evento OnClick del TButton.

Saludos.

Esta es una forma de hacerlo, pero lo mas sencillo es que ejecute el evencto click del boton

Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F5 then
  begin
    Button1.Click;
  end;
end;

Mucho menos codigo, jeje!!

Lo que comenta Lepe sobre TAction y TActionList, es muy cierto yo lo he usado en muchas ocasiones y va de maravilla.

Ahora si requiero hacer algo rapido y si mayores necesidades de cambio en tiempo de ejecucion, utilizo el envento OnKeyDown del formulario como he comentado arriba.

Saludos

ecfisa 27-07-2010 00:20:50

Si, es cierto afunez.

Y tambíen es correcto asignar directamente el procedimiento que se desee ejecutar.
Código:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F5 then
  begin
    ProcedureQueTambienLLamaElBoton;
  end;

Eso es lo bueno de los foros, el abanico de posibilidades que se nos puede ofrecer. :)

Saludos.


La franja horaria es GMT +2. Ahora son las 19:04:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi