Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2007
chico_bds chico_bds is offline
Miembro
 
Registrado: ene 2007
Posts: 50
Poder: 18
chico_bds Va por buen camino
Smile HotKeys Globales: RegisterHotKey

HOla amigos necesito hacer una aplicacion que se encuentre en el TrayIcon y que al presionar digamos Ctrl+l se muestre el formulario, esto seria un ejemplo basico para despues guiarme.

He visto por aqui por los foros que hay que utilizar RegisterHotKeys o algo asi.

Por favor si alguien pudiera postear un ejemplo sencillo.

Desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 23-01-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Mira este hilo

http://www.clubdelphi.com/foros/showthread.php?t=24699
Responder Con Cita
  #3  
Antiguo 23-01-2007
chico_bds chico_bds is offline
Miembro
 
Registrado: ene 2007
Posts: 50
Poder: 18
chico_bds Va por buen camino
Sobre la respuesta:

HOla:

Ya ese post lo habia visto pero me da un error osea este es mi codigo:

-----------------------------------------------------------------------------

Código Delphi [-]
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
  protected
     procedure WndProc(var Msg: TMessage); override;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

procedure TForm2.WndProc(var Msg: TMessage);

begin
  if msg.msg = wm_hotkey then
  begin
// esto es lo interesante, al registrar una combinación
// le damos un número entero, partiendo de cero y sumandole uno 
// si vamos a registrar varias teclas rápidas.
// Pues ese número  es el que llega en msg.WParam

     case msg.WParam of
       0: Form2.Show; // se pulsó la tecla F10
             1: Application.Terminate;// se pulsó la tecla F11
          end;

{$R *.dfm}

  end;
end;

procedure TForm2.DecodeHotKey(shortcut: Tshortcut; var key: Word; var modif: Integer);
var
  comb:     String;
   shiftkey: TshiftState;
begin
  modif := 0;
  shortcuttokey(shortcut, key, shiftkey);
  comb := shortcuttotext(shortcut);
  if pos('Shift', comb) <> 0 then
     inc(modif, 4);
  if pos('Ctrl', comb) <> 0 then
     inc(modif, 2);
  if pos('Alt', comb) <> 0 then
     inc(modif, 1);
end;

procedure FormCreate;
var teclappal :word;
 modificadores:integer;

begin
// suponemos que en Hotkey1.Hotkey es la tecla F10
    decodehotkey(hotkey1.hotkey, teclappal, modificadores);
    registerhotkey(self.Handle, 0, modificadores, teclappal);
// EL PARAMETRO CON UN CERO, NOS SIRVE PARA IDENTIFICAR ESTE HOTKEY


// suponemos que en Hotkey2.Hotkey es la tecla F11
    decodehotkey(hotkey2.hotkey, teclappal, modificadores);
    registerhotkey(self.Handle, 1, modificadores, teclappal);
// EL PARAMETRO CON UN UNO, NOS SIRVE PARA IDENTIFICAR ESTE HOTKEY
end;

procedure FormClose;
begin
  unregisterhotkey(self.Handle, 0);
  unregisterhotkey(self.Handle, 1);
end;

end.

Mi pregunta es me falta un libreria o un componente?

Si pudieran conlgarme un ejemplo sencillo se los agradeceria mucho, ya que no puedo hacer busquedas en internet, porque solo tengo acceso a este forum y al email.

Saludos y desde ya muchas gracias
Responder Con Cita
  #4  
Antiguo 23-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por chico_bds
Mi pregunta es me falta un libreria o un componente?
Pues quizá falte incluir alguna unidad, pero si no nos dices cuál error te marca, es difícil determinar.

// Saludos
Responder Con Cita
  #5  
Antiguo 24-01-2007
chico_bds chico_bds is offline
Miembro
 
Registrado: ene 2007
Posts: 50
Poder: 18
chico_bds Va por buen camino
Sobre el error

Código Delphi [-]
procedure TForm2.DecodeHotKey(shortcut: Tshortcut; var key: Word; var modif: Integer);
var
  comb:     String;
   shiftkey: TshiftState;
begin
  modif := 0;
  shortcuttokey(shortcut, key, shiftkey);
  comb := shortcuttotext(shortcut);
  if pos('Shift', comb) <> 0 then
     inc(modif, 4);
  if pos('Ctrl', comb) <> 0 then
     inc(modif, 2);
  if pos('Alt', comb) <> 0 then
     inc(modif, 1);
end;

procedure FormCreate;
var teclappal :word;
 modificadores:integer;

begin
// suponemos que en Hotkey1.Hotkey es la tecla F10
    decodehotkey(hotkey1.hotkey, teclappal, modificadores);
    registerhotkey(self.Handle, 0, modificadores, teclappal);
// EL PARAMETRO CON UN CERO, NOS SIRVE PARA IDENTIFICAR ESTE HOTKEY


// suponemos que en Hotkey2.Hotkey es la tecla F11
    decodehotkey(hotkey2.hotkey, teclappal, modificadores);
    registerhotkey(self.Handle, 1, modificadores, teclappal);
// EL PARAMETRO CON UN UNO, NOS SIRVE PARA IDENTIFICAR ESTE HOTKEY
end;

El error me lo da ahy me dice algo como:

Undeclared Indentifiquer: DecodeHootKey
Undeclared Indentifiquer:shortcuttokey

etc.

Si pudieran postear un ejemplo sencillo..

Saludos y desde ya mucha gracias
Responder Con Cita
  #6  
Antiguo 24-01-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A juzgar por el código que pusiste al principio, te falta poner la declaración de DecodeHotKey en la cabecera del formulario:

Código Delphi [-]
type
  TForm2 = class(TForm)
  public
    procedure DecodeHotKeyshortcut: Tshortcut; var key: Word; var modif: Integer);
  end;

Por otra parte, la funcion ShortcutToKey está en la unidad Menus, así que supongo que te falta ponerla en la cláusula uses.

// Saludos
Responder Con Cita
  #7  
Antiguo 24-01-2007
chico_bds chico_bds is offline
Miembro
 
Registrado: ene 2007
Posts: 50
Poder: 18
chico_bds Va por buen camino
uhhh sigue el error

Hola roman muchas gracias por dedicar tu tiempo a mi duda pero lamento decirte que todavia no me sale lo que quiero...

roman te agradeceria mucho si pudieras ponerme un pequeño ejemplo es que lo necesito urgente.

Saludos para ti y para los foreros
Responder Con Cita
  #8  
Antiguo 24-01-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Que estuviera dentro de etiquetas delphi, no significa que compile y funcione al 100 %, primero hay que mirar algunas cosas, por ejemplo FormClose no pertenece a ninguna clase, así que jamás se ejecutará.


Lo siento por tu apuro, pero en un foro no hay "urgencias", en un servicio técnico a lo mejor.

FormClose y FormCreate no forman parte del formulario, así que jamás se ejecutará, no puedes copiar y pegar el código y listo.

En tu ventana, en el inspector de objetos, busca el evento FormClose doble clic y ahora si, copia el código de mi evento FormClose, dentro del que acabas de crear.

Lo mismo para FormCreate, pero obviamente usando el evento OnCreate de tu Form.

Después borra los procedimientos originales, es decir, los posteados en este mensaje para que no te confundas.

Todavía no se puede compilar, aunque si lo puedes guardar .

Ahora situa el cursor sobre la palabra TShortCut (da igual si está en mayúsculas o minúsculas y pulsa F1, debe salirte el "uses" que debes añadir para que pueda compilar.

Lo mismo para todo aquello que te de errores.

PD: Es mejor explicarte como solucionarlo que darte el código... de esa forma no aprendes, de esta sí .


Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Variables Globales Abel Garcia Firebird e Interbase 8 26-09-2005 16:20:59
Mas que Globales... Universales ! hgiacobone Varios 10 14-09-2005 21:36:25
Botones hotkeys el_barto Varios 10 30-06-2005 22:19:54
Variables globales en PHP JulioGO PHP 3 08-04-2005 15:36:57
constantes globales acrophet Varios 3 18-09-2003 14:51:45


La franja horaria es GMT +2. Ahora son las 18:41:53.


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