Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2009, 15:18   #1
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию Как назначить "горячие" клавиши

Подскажите пожалуйста, как сделать в делфи 7 "горячие клавиши"?
ekzobyte вне форума Ответить с цитированием
Старый 05.03.2009, 15:32   #2
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Можно так:

Код:
unit Unit1;

interface

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

const
    ID = WM_USER + 1;

type
  Tform_Test = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  public
    { Public declarations }
  end;

var
  form_Test: Tform_Test;

implementation

{$R *.dfm}

procedure Tform_Test.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, ID, MOD_CONTROL, VK_F1);
end;

procedure Tform_Test.FormDestroy(Sender: TObject);
begin
  UnregisterHotkey(Handle, ID);
end;

procedure Tform_Test.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = ID then
    ShowMessage('Hot Key pressed');
end;

end.
NieL вне форума Ответить с цитированием
Старый 05.03.2009, 15:54   #3
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Ну а если мне нужно, что бы по нажатию, например, Ctrl+S или любой другой комбинации выполнялась процедура кнопки?
ekzobyte вне форума Ответить с цитированием
Старый 05.03.2009, 16:07   #4
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Цитата:
Сообщение от ekzobyte Посмотреть сообщение
Ну а если мне нужно, что бы по нажатию, например, Ctrl+S или любой другой комбинации выполнялась процедура кнопки?
Код:
unit Unit1;

interface

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

const
    ID = WM_USER + 1;

type
  Tform_Test = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure WMHotKey(var Msg: TWMHotKey); message WM_HOTKEY;
  public
    { Public declarations }
  end;

var
  form_Test: Tform_Test;

implementation

{$R *.dfm}

procedure Tform_Test.FormCreate(Sender: TObject);
begin
  RegisterHotKey(Handle, ID, MOD_CONTROL, Ord('S'));
 // здесь указываешь свою комбинацию клавиш
 
end;

procedure Tform_Test.FormDestroy(Sender: TObject);
begin
  UnregisterHotkey(Handle, ID);
end;

procedure Tform_Test.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = ID then
    Button1Click(nil);
end;

procedure Tform_Test.Button1Click(Sender: TObject);
begin
  ShowMessage('zzz');
end;

end.
NieL вне форума Ответить с цитированием
Старый 05.03.2009, 16:15   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Button1Click(nil);
Добавлю только что лучше Button1.Click - надежнее будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.03.2009, 16:26   #6
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Спасибо!!! основу понял
ekzobyte вне форума Ответить с цитированием
Старый 07.03.2009, 14:44   #7
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Может ещё кто нибудь подскажет, как можно в операторе RegisterHotKey(Handle, ID, MOD_CONTROL, Ord('S')); вместо S использовать введённый в Edit символ?
ekzobyte вне форума Ответить с цитированием
Старый 07.03.2009, 14:48   #8
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

RegisterHotKey(Handle, ID, MOD_CONTROL, Ord(Edit1.text[1]));
eskander вне форума Ответить с цитированием
Старый 07.03.2009, 15:01   #9
ekzobyte
Пользователь
 
Аватар для ekzobyte
 
Регистрация: 03.02.2009
Сообщений: 30
По умолчанию

Спасибо eskander, но я имел ввиду, чтобы во время программы можно было бы ещё и сменить комбинацию, точнее последнюю букву
ekzobyte вне форума Ответить с цитированием
Старый 07.03.2009, 15:06   #10
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

Ловим keypress у эдита, там делаем
UnregisterHotkey(Handle, ID);
а затем
RegisterHotKey(Handle, ID, MOD_CONTROL, Ord(Key));
eskander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Горячие клавиши Altera Общие вопросы Delphi 5 13.09.2008 21:27
Горячие клавиши VS 2008 .:KOLYAN:. Свободное общение 2 02.09.2008 14:32
Как клавиши F, назначить макрос? valerij Microsoft Office Excel 7 06.06.2008 10:08
По нажатию, каких сочетаний клавиш можно программно развернуть приложение, если оно свернуто в трее? Johnny_B Win Api 1 04.06.2007 08:20