Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];

Вниз

работа в горячей клавишей...   Найти похожие ветки 

 
vegarulez ©   (2009-01-16 11:43) [0]

Привет всем мастерам, подскажите как сделать горячую клавишу, но только чтобы он работала только когда форма приложения активна, т.е. если пользователь сделал активным любое другое приложение горячая клавиша не работала в этом случае и не перехватывала нажатие. сечас делаю вот таким образом, но она ловит любое нажатие.
кстати ещё попутный вопрос почему ALT+F10 работает на ура а при ALT + Enter (VK_Return) - не работает?

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
 private
 procedure WM_HotKeyHandler (var Message: TMessage);message WM_HOTKEY;
   { Private declarations }
 public
 keyid:integer;
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WM_HotKeyHandler (var Message: TMessage);
var
idHotKey: integer; //идентификатор, но об этом - позже
fuModifiers: word; //модификатор MOD_XX
uVirtKey: word; //код виртуальной клавиши VK_XX
begin
// параметры сообщения получаем так:
idHotkey:= Message.wParam;
fuModifiers:= LOWORD(Message.lParam);
uVirtKey:= HIWORD(Message.lParam);

//теперь - небольшая проверочка:
if (fuModifiers = MOD_ALT) AND (uVirtKey = VK_F10) then
caption:="Alt-F10 нажата";
inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
keyid:=GlobalAddAtom("My Hotkey"); //создаем атом
RegisterHotKey(handle,
// сообщение о HotKey будет получать форма
keyid, // регистрируем атом как id
MOD_SHIFT,// модификатор у нас - клавиша Alt
VK_RETURN//VK_F10 // вирт. клавиша - F10
);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
UnregisterHotKey(handle, keyid);
GlobalDeleteAtom(keyid);
end;

end.


 
vegarulez ©   (2009-01-16 11:50) [1]

Нашёл для приложения вот такой способ:

Перехват нажатий клавиши внутри приложения.  *  *    

Задача решается очень просто. Можно у формы установить свойство KeyPreview в True и обрабатывать событие OnKeyPress.


всё сделал, но чот не работает...  :(


 
Правильный$Вася   (2009-01-16 12:43) [2]

Use the OnKeyPress event handler to make something happen as a result of a single character key press.

The Key parameter in the OnKeyPress event handler is of type Char; therefore, the OnKeyPress event registers the ASCII character of the key pressed. Keys that don"t correspond to an ASCII Char value (Shift or F1, for example) don"t generate an OnKeyPress event. Key combinations (such as Shift+A), generate only one OnKeyPress event (for this example, Shift+A results in a Key value of “A” if Caps Lock is off). To respond to non-ASCII keys or key combinations, use the  OnKeyDown or OnKeyUp event handlers.


 
vegarulez ©   (2009-01-16 13:33) [3]

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if key=VK_RETURN then
caption:="Нажат Ентер";
end;


результат=0

а вот в онкэйап - заработало )
спасиб.


 
vegarulez ©   (2009-01-16 13:33) [4]

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if key=VK_RETURN then
caption:="Нажат Ентер";
end;


результат=0

а вот в онкэйап - заработало )
спасиб.



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

Форум: "Начинающим";
Текущий архив: 2009.03.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
15-1230563064
Sergey Masloff
2008-12-29 18:04
2009.03.01
Поставил елку. Все теперь НГ неотвратим как крах империализма.


8-1191219508
DDDeN
2007-10-01 10:18
2009.03.01
Перехват звука с Stereo Out


2-1231995906
b@v
2009-01-15 08:05
2009.03.01
Вопрос по DBGrid


2-1232025231
Б
2009-01-15 16:13
2009.03.01
Вылет из-за неправильного удаления из TList.


2-1231968156
Evgengold
2009-01-15 00:22
2009.03.01
escapecommfunction и работа com портом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский