Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
ayuda con las hotkey en delphi

que código hay poner para que una hotkey pare un timer, por ejemplo. Hace falta la función Getasynckeystate?
Responder Con Cita
  #2  
Antiguo 09-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MCanuto y bienvenido a Club Delphi

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Para tu caso creo que te puede servir capturar la tecla presionada en el evento OnKeyDown de tu form.
En el ejemplo el TTimer es activado por la tecla F1 y desactivado por F2, pero podes elegir las que desees (busca por Virtual key codes en la ayuda de Delphi).
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
  ...
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_F1: Timer1.Enabled := True;  
    VK_F2: Timer1.Enabled := False;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 09-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
no veo ese evento no sé si será porque me baje un programa algo antiguo, tengo el Borland Delphi 7 no veo esa opción, que programa me recomendarías que tuviese todas las opciones?
Responder Con Cita
  #4  
Antiguo 09-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por MCanuto Ver Mensaje
no veo ese evento no sé si será porque me baje un programa algo antiguo, tengo el Borland Delphi 7 no veo esa opción, que programa me recomendarías que tuviese todas las opciones?
Hola MCanuto.

En tiempo de diseño, hace lo siguiente:
  • Click sobre tu form (el form quedará como el objeto actualmente seleccionado).
  • Presiona la tecla F11 (tiene que aparecer el Object Inspector si estaba oculto).
  • En el Object Inspector, click en la pestaña Events.
  • Doble click sobre OnKeyDown.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 10-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
Gracias, el código me funciono pero solo se activa o desactiva el timer si tengo la ventana del proyecto abierta y pulso la tecla, si tengo otra ventana abierta y pulso la tecla de activar o desactivar no hace nada

¿No habría alguna forma de solucionar eso?

Un saludo.
Responder Con Cita
  #6  
Antiguo 10-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MCanuto.

Revisa en estos enlaces:
Podes encontrar mas sobre la funcion aqui: RegisterHotKey.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 11-05-2013
FerJavRec FerJavRec is offline
Registrado
 
Registrado: oct 2005
Posts: 7
Poder: 0
FerJavRec Va por buen camino
Cita:
Empezado por MCanuto Ver Mensaje
Gracias, el código me funciono pero solo se activa o desactiva el timer si tengo la ventana del proyecto abierta y pulso la tecla, si tengo otra ventana abierta y pulso la tecla de activar o desactivar no hace nada

¿No habría alguna forma de solucionar eso?

Un saludo.
Hola MCanuto, fíjate que hay un componente que solo lo arrastras al Form y te hace todo lo que necesitas. CKeysOnForm si no lo encontras te lo subo.

saludos
FerJavRec
Responder Con Cita
  #8  
Antiguo 11-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
Cita:
Empezado por FerJavRec Ver Mensaje
Hola MCanuto, fíjate que hay un componente que solo lo arrastras al Form y te hace todo lo que necesitas. CKeysOnForm si no lo encontras te lo subo.

saludos
FerJavRec
Hola FerJavRec no encuentro ese componente, pasamelo si no es molestia.

Un saludo.
Responder Con Cita
  #9  
Antiguo 12-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
Saludos ecfisa.

Seguí el primer link que me dejaste y decía que había que instalar los componentes JEDI, yo al intentar instalarlos me da error, porque no tengo el rad studio ni ninguno de los que requiere el JEDI, tengo el Borland Delphi 7. Ahí decían que con JEDI se intala el componente HotKeyManager, pero ni rastro del RegisterHotKey que mencionabas.
Responder Con Cita
  #10  
Antiguo 12-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MCanuto.

Cita:
Seguí el primer link que me dejaste y decía que había que instalar los componentes JEDI, yo al intentar instalarlos me da error, porque no tengo el rad studio ni ninguno de los que requiere el JEDI,
Según tengo entendido no tendrías que tener problemas para istalar los JEDI en Delphi 7. Pero fijate que en ese hilo hay dos opciones, ¿ Probaste lo que sugiere Lepe en el mensaje #4 ?

Cita:
Ahí decían que con JEDI se intala el componente HotKeyManager, pero ni rastro del RegisterHotKey que mencionabas.
RegisterHotKey es una función API windows.

En cuanto a el componente HotKeyManager que comenta dec no lo conozco, pero tal vez se refiera a este.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 12-05-2013
MCanuto MCanuto is offline
Registrado
NULL
 
Registrado: may 2013
Posts: 6
Poder: 0
MCanuto Va por buen camino
Hola ecfisa.

Problema resuelto, use este código:
Código:
unit Unit2;
 
interface
 
uses Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
  ExtCtrls;
 
type
 TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure HotKey(var Message: TMessage); message WM_HOTKEY;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Timer1Timer(Sender: TObject);
 end;
 
var Form1: TForm1;
 
implementation
 
{$r *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, 111, 0, VK_F1);
 RegisterHotKey(Handle, 222, 0, VK_F2);
end;
 
procedure TForm1.HotKey(var Message: TMessage);
begin
  case Message.WParam of
    111: Timer1.Enabled := True;     // F1
    222: Timer1.Enabled := False;    // F2
  end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   UnregisterHotKey(Handle, 111);
   UnregisterHotKey(Handle, 222);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Beep(1000, 100);
end;
 
end.
Mire más en la web que me dejaste de MSDN y mire la función RegisterHotKey más a fondo. Lo único que me dio problemas es la línea del timer:
Código:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Beep(1000, 100);
end;
Me salía el error: Too many parameters

Al final probé quitando esa línea y funcionó, no se si será importante.

Saludos.
Responder Con Cita
  #12  
Antiguo 12-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola MCanuto.

Me alegro que lo solucionaras, y muchas gracias por publicar como lo resolviste

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Uso de HotKey Cecilio Varios 3 06-06-2014 15:23:09
Ayuda HotKey en DLL ... NoxOner API de Windows 4 14-04-2009 19:34:19
Delphi - HotKey de aplicación externa fdanielc Lazarus, FreePascal, Kylix, etc. 2 03-12-2008 20:12:11
ayuda usando solo la tecla ALT como hotkey lostprophets Varios 2 21-01-2008 05:07:17
capturar hotkey cahosoft Varios 2 31-01-2005 17:17:04


La franja horaria es GMT +2. Ahora son las 11:03:05.


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
Copyright 1996-2007 Club Delphi