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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 12:21   #1
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
Восклицание Горячие клавиши

Всем привет.
Есть вопрос - можно ли в Delphi использовать комбинации клавиш Alt+1, Alt+2, Alt+3, Alt+4, Alt+5, Alt+6?
Есть 6 CheckButton. Желательно, чтобы каждая соответствовала комбинации: Alt+1 = ChekButton1, Alt+2 = ChekButton2 и т.д
Я хочу сделать, чтобы эти комбинации использовались по очереди. Т.е Если взять Button1, при её нажатии запускается комбинация Alt+1. После выполнения (к примеру кликом мыши), запускается Alt+2 и т.д Затем после нажатия на Button2 процесс останавливается.
Есть люди, кто силён в таких областях? Очень нужна помощь. Заранее благодарен.

Последний раз редактировалось xRamzeSx; 20.09.2010 в 15:26.
xRamzeSx вне форума Ответить с цитированием
Старый 20.09.2010, 13:18   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Что-то ты мудришь, xRamzeSx. Вопрос совершенно не ясен.

По использованию комбинаций клавиш могу сказать следующее. Я для работы с горячими клавишами использую Меню. Там очень удобно их выбирать и назначать им обработчики. Потом делаю MenuItem Visible := False. И получается, что у меня есть меню откликающееся на мои сочитания клавишь, но не видимое для пользователя.
Sibedir вне форума Ответить с цитированием
Старый 20.09.2010, 13:28   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Я для работы с горячими клавишами использую Меню.
Тоже самое но без меню можно получить настроив ActionManager. Это дело вкуса.
Цитата:
при её нажатии запускается комбинация Alt+1. После выполнения (к примеру кликом мыши), запускается Alt+2
Если ты настроишь ActionManager то его акции можно перебрать в цикле:
Код:
var i:integer;
begin
 for i:=0 to ActionManager1.ActionCount-1 do
  ActionManager1.Actions[i].Execute;
end;
А горячие клавиши тут ни при чем. Но и их ессно мона прикрутить к Акциям
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2010, 14:01   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Ну, короче. Так что-ли:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    Button1: TButton;
    MainMenu1: TMainMenu;
    mnui: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.N1Click(Sender: TObject);
begin
  ShowMessage ('Делай раз');
end;

procedure TForm1.N2Click(Sender: TObject);
begin
  ShowMessage ('Делай два');
end;

procedure TForm1.N3Click(Sender: TObject);
begin
  ShowMessage ('Делай три');
end;

procedure TForm1.N4Click(Sender: TObject);
begin
  ShowMessage ('Делай четыре');
end;

procedure TForm1.N5Click(Sender: TObject);
begin
  ShowMessage ('Делай пять');
end;

procedure TForm1.N6Click(Sender: TObject);
begin
  ShowMessage ('Делай шесть');
end;

procedure TForm1.N7Click(Sender: TObject);
begin
  ShowMessage ('Делай семь');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  RadioGroup1.Items.Clear;
  for i := 0 to mnui.Count-1 do begin
    RadioGroup1.Items.Add (mnui.Items[i].Caption);
  end;
  if RadioGroup1.Items.Count > 0 then RadioGroup1.ItemIndex := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if RadioGroup1.Items.Count > 0 then
    mnui.Items [RadioGroup1.ItemIndex].Click;
end;

end.

Последний раз редактировалось Sibedir; 20.09.2010 в 14:03.
Sibedir вне форума Ответить с цитированием
Старый 20.09.2010, 15:25   #5
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Вопрос совершенно не ясен.
Есть форма, на ней 6 CheckButton (Случайно спутал с RadioButton). Желательно чтобы каждая соответствовала комбинации клавиш.
Хочу сделать, чтобы эти горячие клавиши работали в определённом процессе (программе).
Т.е нажимаем на кнопку Button1, в Memo1 прописывается строчка к примеру - 'Alt+1 HotKey start' и в процессе активируется комбинация. После её выполнения, в Memo1 появляется строчка 'Alt+2 HotKey start' и так, пока все 6 комбинаций не будут выполнены. За тем, вся процедура начинается заново.

PS: Надеюсь сейчас понятнее?

Последний раз редактировалось xRamzeSx; 20.09.2010 в 15:33.
xRamzeSx вне форума Ответить с цитированием
Старый 20.09.2010, 15:31   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Надеюсь сейчас понятнее?
Попробуй то что я предложил - имхо это самое простое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2010, 15:47   #7
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

SendMessage
Сообщения WM_KeyDown и WM_KeyUP по-моему
TwiX вне форума Ответить с цитированием
Старый 20.09.2010, 16:27   #8
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Попробуй то что я предложил
ActionManager я не знаю как его настроить, не разу не использовал его.
xRamzeSx вне форума Ответить с цитированием
Старый 20.09.2010, 17:03   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну дык и никто не знает
Ни я ни президент карелии.
Зато знают поисковики:
http://www.codenet.ru/progr/delphi/stat/XP-Style/
И в некоторых книгах, описывающих стандартные компоненты тоже есть по нему койче.
И даже в примерах в стандартной поставке Делфи в папке ActionBands есть работа с ним.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2010, 17:45   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Цитата:
PS: Надеюсь сейчас понятнее?
Лично я так и не понял.

Цитата:
Есть форма, на ней 6 CheckButton. Желательно чтобы каждая соответствовала комбинации клавиш.
Вообще-то, комбинации клашишь не могут соответствовать компоненту. Они соответствуют командам. Компоненту может быть назначено событие (команда, которую нужно выполнить). Например - реакция на нажатие кнопки мышью. Но весьма не логично использовать для запуска какого либо "процесса" CheckButton.
Зачем вам вообще CheckButton, если вы всеравно собираетесь выполнять все 6 команд. Вот если бы вы CheckButton'ами отмечали процедуры, которые нужно выполнить, это другое дело.

Цитата:
Хочу сделать, чтобы эти горячие клавиши работали в определённом процессе (программе).
Т.е нажимаем на кнопку Button1, в Memo1 прописывается строчка к примеру - 'Alt+1 HotKey start' и в процессе активируется комбинация. После её выполнения, в Memo1 появляется строчка 'Alt+2 HotKey start' и так, пока все 6 комбинаций не будут выполнены. За тем, вся процедура начинается заново.
Если сделать все как вы говорите буквально, то получится вот это: ____.zip
Если это не то, что вам нужно то сначала сформируйте вопрос КОРРЕКТНО. Ведь сами знаете, хорошо поставленный вопрос - это половина ответа.
Sibedir вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Горячие клавиши dmitriegorovih Общие вопросы Delphi 2 10.09.2010 14:58
Горячие клавиши. Lazio Помощь студентам 2 08.09.2010 02:20
Горячие клавиши в Delphi Maddy Помощь студентам 7 23.04.2010 17:43
Горячие клавиши Altera Общие вопросы Delphi 5 13.09.2008 21:27