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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 23:04   #1
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию Hot Key в ToolBar

Доброго времени суток уважаемые эксперты. Возник один вопрос. На форме имеется компонент ToolBar. Для каждой кнопки необходимо назначить горячую клавишу. Как данное действо можно реализовать?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 12.10.2009, 23:18   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Если правильно понял, то так:
Код:
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
Caption := '111';
end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
Caption := '222';
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
    49 : ToolButton1.Click;   //Клавиша - Цифра 1
    50 : ToolButton2.Click;   //Клавиша - Цифра 2
    //И т.д.
    end;
end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 12.10.2009, 23:41   #3
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Не совсем так! Такое сработает если фокус ввода стоит на форма.
А я бы хотел чтобы, например, по нажатию Ctrl+F1 нажималась кнопка 1, Ctrl+F2 нажималась кнопка 2 и т.д. и все это не зависило от того где расположен фокус.
Такая вещь реализована в MainMenu - каждому пункту можно назначить определенную комбинацию клавиш.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.10.2009, 01:03   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Тогда наверно вот так:
Код:
  private
    { Private declarations }
  procedure wmhotkey(var msg : TWMHotKey); message WM_HOTKEY;

//.........................

procedure TForm1.wmhotkey(var msg: TWMHotKey);
begin
  case msg.HotKey of
    0 : ToolButton1.Click;
    1 : ToolButton2.Click;
  end;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotKey(handle,  0, MOD_CONTROL, VK_F1);
  RegisterHotKey(handle,  1, MOD_CONTROL, VK_F2);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnregisterHotKey(handle, 0);
  UnregisterHotKey(handle, 1);

end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
Caption := '1';
end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
Caption := '2';
end;
з.ы. но мене кажется для вашего случая еще можно использовать хуки.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 13.10.2009, 01:30   #5
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Мне кажется лучше всего будет сделать так : добавить на форму ActionList, в нем создать "Екшены" и на каждый присвоить нужную горячею клавишу, после чего на каждый прописать нужно событие Execute и каждую кнопочку с тулбара подключить к нужному "Екшену"
RIO вне форума Ответить с цитированием
Старый 13.10.2009, 01:32   #6
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Работает просто идеально. А можно ли как-нибудь органиовать привязку к любым клавишам. Тоесть у нас есть, допустим ComboBox а в нем доступные комбинации. При выборе нужной комбинации она регистрируется для данной кнопки.
Объясню зачем мне это надо. Хочу создать компонент, наследник ToolBar, с возможностью для каждой кнопки назначить горячую клавиши. Или может есть другой путь реализовать подобное?
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.10.2009, 01:39   #7
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Цитата:
Сообщение от RIO Посмотреть сообщение
Мне кажется лучше всего будет сделать так : добавить на форму ActionList, в нем создать "Екшены" и на каждый присвоить нужную горячею клавишу, после чего на каждый прописать нужно событие Execute и каждую кнопочку с тулбара подключить к нужному "Екшену"
А так просто идеально!!!! И ничего прописывать не надо. И компонент новый не нужно создавать. Спасибо огромное всем.
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 13.10.2009, 11:05   #8
RIO
Форумчанин
 
Аватар для RIO
 
Регистрация: 15.12.2007
Сообщений: 422
По умолчанию

Не за что
RIO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Hot Key для проги -=<[Evklidd]>=- Общие вопросы Delphi 17 19.04.2009 16:24
ToolBar XPAiN Компоненты Delphi 1 31.10.2008 12:49
Warden's ToolBar Warden Софт 0 18.11.2007 09:42
Кнопка в toolbar Xandr Компоненты Delphi 5 17.08.2007 09:32