Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.10.2010, 16:01
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию Горячие клавиши

Здравствуйте. Возникла следующая потребность:
Нужно пользователю сделать выбор горячих клавиш. То есть сам код их уже есть в настройках нужно указать только горячую клавишу. Разъясню на примере:
Пользователю нужно, что бы на Tab переходило на новую строку. В настройках уже код этого есть, но там по стандарту стоит enter. Дак вот, пользователь может нажать в настройках допустим на клавишу tab и теперь он может tab'ом переходить между строк. Так называемый key bindings.
Ответить с цитированием
  #2  
Старый 04.10.2010, 16:14
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
Как сделать так, чтобы при минимизации приложения в Tray его можно было вызвать определённой комбинацией клавиш, например Alt-Shift-F9 ?


//В обработчике события OnCreate
//основной формы создаём горячую клавишу:

if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then
  ShowMessage('Unable to assign Alt-Shift-F9 as hotkey.');

//В событии OnClose удаляем горячую клавишу:
UnRegisterHotkey( Handle, 1 );

//Добавляем обработчик в форму для сообщения
//WM_HOTKEY:

private // в секции объявлений формы
  procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;

procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
  if msg.hotkey = 1 then
  begin
    if IsIconic( Application.Handle ) then
      Application.Restore;
    BringToFront;
  end;
end;

Это пример вставки гарячих клавиш, взял с делфи ворда, дак вот, если ты хочешь, чтоб в даном примере например место alt+shift+f9 поменять на ctrl+shift+f9, то измени строчку
Код:
if not RegisterHotkey(Handle, 1, MOD_ALT or MOD_SHIFT, VK_F9) then

НА
if not RegisterHotkey(Handle, 1, MOD_CTRL or MOD_SHIFT, VK_F9) then
// собственно здесь мы и изменяем гарячие клавиши... экспериментируй...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 04.10.2010, 21:33
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Мне не совсем это надо. Если я в ручную буду перебирать все сочетания, то это не реально. Пользователь может зажать любые клавиши, которые и станут горячими, хоть ENTER, хоть Q+1. Можно ли такое реализовать?
Ответить с цитированием
  #4  
Старый 04.10.2010, 22:37
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Почему нереально?
В настройках (или где тебе надо изменять гарячие клавиши) создаешь едит (например), в который пользователь будет вводить 3 клавишу (пример: Alt+Shift (обязательные) + его клавиша (может быть например F2)), и есть глобальная переменная (допустим q: integer), и когда пользователь нажимает "сохранить настройки" пишешь в buttonsaveClick:
Код:
  q := Edit.Text;
...

а потом собственно изменяешь:
if not RegisterHotkey(Handle, 1, MOD_CTRL or MOD_SHIFT, q) then

Где q - сама клавиша (коды клавиш можешь найти в инете)...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #5  
Старый 05.10.2010, 03:21
Мяфк Мяфк вне форума
Начинающий
 
Регистрация: 30.05.2010
Сообщения: 102
Репутация: 10
По умолчанию

Спасибо, жаль что только через ктрл шифт, думал можно и обычные клавиши устанавливать.
Ответить с цитированием
  #6  
Старый 05.10.2010, 04:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

можно любые. делай через Action's.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:00.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025