Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Componentes sin form. (https://www.clubdelphi.com/foros/showthread.php?t=58652)

Neftali [Germán.Estévez] 29-07-2008 13:21:46

Debes registrar esa combinación de teclas de forma global a sistema.
Aquí tienes el código de cómo hacerlo.

cmm07 29-07-2008 17:21:16

en los componentes JVCL creo que ví un componente que hace eso...

rauros 29-07-2008 22:08:02

Ese código no me funciona. Está copiado tal cual.

Neftali [Germán.Estévez] 30-07-2008 09:05:06

Cita:

Empezado por rauros (Mensaje 304231)
Ese código no me funciona. Está copiado tal cual.

Puedes explicar mejor qué te pasa. ¿Porqué no te funciona? ¿No te compila?

RegisterHotKey
es la llamada que se utiliza para
registrar combinaciones de teclas a nivel Global del sistema. Funciona perfectamente (yo mismo la he utilizado varias veces sin problemas).

Busca sobre esa llamada y encontrarás muchos ejemplos, aunque las llamadas son similares a esa.

rauros 30-07-2008 14:11:17

Nada más copiar el proyecto a la unidad 1 (unit1.pas) y compilar. Luego clico el botón imprimir Pantalla (una de las registradas) pero no funciona.

sur-se 30-07-2008 16:12:40

Eso lo puedes hacer con el componente HotKeyManager.
http://www.vclcomponents.com/Delphi/...ager-info.html
Un saludo.

Neftali [Germán.Estévez] 30-07-2008 16:32:08

Cita:

Empezado por sur-se (Mensaje 304370)
Eso lo puedes hacer con el componente HotKeyManager.

Se puede hacer con muchos más componentes además de ese, pero creo que no radica ahí el problema, ya que si miras el código del procedimiento AddHotKey del componente verás que acaba llamando a las funciones:

* GlobalAddAtom
* RegisterHotKey

Que son las mismas que se llaman en el ejemplo anterior.
Supongo que si no han funcionado antes...

coso 30-07-2008 16:46:05

{
RegisterHotKey fails if the keystrokes specified for the hot key have
already been registered by another hot key.

Windows NT4 and Windows 2000/XP: The F12 key is reserved for use by the
debugger at all times, so it should not be registered as a hot key. Even
when you are not debugging an application, F12 is reserved in case a
kernel-mode debugger or a just-in-time debugger is resident.
}

esto estaba alla en la funcion. ¿Es posible que sea lo que te esta ocurriendo?

rauros 30-07-2008 16:47:49

Pues sí. Ahora va xD.

sur-se 30-07-2008 17:53:24

Bueno pues ahí pongo otra solución sin usar componentes externos como sugiere Neftali:

Código:

unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure HtoK(var Msg : TWMHotKey); message WM_HotKey;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
implementation
 
{$R *.dfm}
 
procedure tform1.HtoK(var Msg : TWMHotKey);
begin
showmessage('Alt-V');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  registerHotKey(handle,GlobalAddAtom('ALT_V'),MOD_ALt,vKKeyscan('v'));
 
end;
 
end.

Un saludo.

coso 30-07-2008 20:00:11

Si, bueno, sur-se, eso es exactamente el codigo de neftali, pero incorrecto...¿deberas desregistrarlas al acabar la aplicación no?

coso 30-07-2008 20:04:16

y...el componente externo lo has citado tu...

sur-se 31-07-2008 08:22:51

Efectivamente, un poco más resumido que el código de neftalí, y más sencillo de entender al tener menos código. Si al final faltaría desregistrar, pero es básicamente un ejemplo de esqueleto para hacerlo.

Respecto al componente, efectivamente lo puse yo porque es una solución muy sencilla (haga lo que haga internamente) que encapsula todo. Era por si le servía al compañero que puso el post, nada más. Yo lo utilizo porque me ahorra escribir código nada más.

Un saludo.

coso 31-07-2008 08:51:44

si si, claro, efectivamente...


La franja horaria es GMT +2. Ahora son las 22:07:37.

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