Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.11;
Скачать: CL | DM;

Вниз

Как сделать форму всегда   Найти похожие ветки 

 
greenrul ©   (2002-02-24 14:55) [0]

Есть компонент, который ПРЕКРАСНО "ловит" нажатия нужных клавиш - стоит форму в трей отправить, он уже ниче не ловит 8( P*L*E*A*S*E H*E*L*P


 
copyr25 ©   (2002-02-24 16:32) [1]

А зачем компонент?
Сами зарегистрируйте свои нужные клавиши.
const
XKey = 101; YKey=102;
type
TForm1 = class(TForm)
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
procedure FormActivate(Sender: TObject);
...
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = XKey then чего-то делаем;
if Msg.HotKey = YKey then чего-то делаем;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
RegisterHotKey(Handle, XKey, 0, VK_RETURN);
RegisterHotKey(Handle, YKey, 0, VK_SPACE);
// ну, например:)
end;


 
greenrul ©   (2002-02-24 17:05) [2]

А почему 101, 102 и что вообще эти целые числа значят?


 
greenrul ©   (2002-02-24 17:09) [3]

Усе, понял - типа идентификатор для каждого Хука (а не для клавиши)


 
greenrul ©   (2002-02-24 17:12) [4]

у меня вопрос - а как строчку типа Ctrl+Alt+C в VK_* и пр. преобразовать?


 
greenrul ©   (2002-02-24 17:23) [5]

А Комбинации всеравно не обрабатывает -
RegisterHotKey(Handle, 101, 0, VK_CONTROL+Ord("A"));
нет реакции, а вот если отдельно -
RegisterHotKey(Handle, 101, 0, Ord("A"));
RegisterHotKey(Handle, 101, 0, VK_CONTROL);



 
copyr25 ©   (2002-02-24 18:30) [6]

Ну, например так: на последовательное нажатие F1+F2+F3.
Можно смеяться сколько угодно, но ведь работает:)))
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
ExtCtrls, StdCtrls;
const
XKey = 101; YKey=102; ZKey = 103;
type
TForm1 = class(TForm)
procedure WMHotKey(var Msg : TWMHotKey); message WM_HOTKEY;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1; i: byte;

implementation

{$R *.DFM}
procedure TForm1.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = XKey then i:=1;
if (Msg.HotKey = YKey) and (i=1) then i:=2;
if (Msg.HotKey = ZKey) and (i=2) then Close;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
i:=0;
RegisterHotKey(Handle, XKey, 0, VK_F1);
RegisterHotKey(Handle, YKey, 0, VK_F2);
RegisterHotKey(Handle, ZKey, 0, VK_F3);
end;

end.


 
Deus   (2002-02-24 19:04) [7]

Думаю, Вам тоже нужны хуки:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1014485066&n=0


 
greenrul ©   (2002-02-25 11:39) [8]

Жалко что сторонние компоненты приходится юзать.
соpyr25 - вы правы, смеятьля можно долго 8)

а не проще вместо
if Msg.HotKey = XKey then i:=1;
if (Msg.HotKey = YKey) and (i=1) then i:=2;
if (Msg.HotKey = ZKey) and (i=2) then Close;

написать
if (Msg.HotKey = XKey) and (Msg.HotKey = YKey) and (Msg.HotKey = ZKey) then Close;


 
greenrul ©   (2002-02-25 12:17) [9]

2Deus - на самом деле компонента фиговая - проще через WinAPI.
там надо мучаться с переводом из VirtualKeyCode в норм. стринг, м нельзя проверить, ккакие клавишы еще зажаты


 
copyr25 ©   (2002-02-25 12:49) [10]

greengul: Не проще. Попробуйте Ваш тройной if. Close не получится, когда нажимаются
клавиши...



Страницы: 1 вся ветка

Текущий архив: 2002.03.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
1-32452
Mitrofan
2002-02-21 20:18
2002.03.11
Как смасштабировать рисунок большого размера ?


3-32385
Vacheslav
2002-02-11 14:27
2002.03.11
Как сделать, чтобы в ComboBox


6-32536
nimpo
2001-12-25 01:48
2002.03.11
net


7-32582
New
2001-12-06 10:10
2002.03.11
нужен код команды int 19


1-32496
Michael C
2002-02-19 15:46
2002.03.11
Народ, как среди выборки удалить опред. строку...