Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

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


La franja horaria es GMT +2. Ahora son las 16:11:34.


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