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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 07:43   #11
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Зачем вам вообще CheckButton, если вы всеравно собираетесь выполнять все 6 команд. Вот если бы вы CheckButton'ами отмечали процедуры, которые нужно выполнить, это другое дело.
Да я хочу отметить процедуры, которые нужно выполнять. Т.е Ставим галочки, какие сочетания будут работать, а какие нет.

На счет вашего примера: 50% уже то, что нужно. Осталось сделать, чтобы всё работало по указанным Chek'ам и в определённом процессе (программе).
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 08:28   #12
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

и охота вам темы плодить
http://www.cyberforum.ru/delphi-begi...ead167248.html

CheckButton? Может быть CheckBox?

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
     RegisterHotKey(Handle,1,MOD_ALT,$31);
     RegisterHotKey(Handle,2,MOD_ALT,$32);
     RegisterHotKey(Handle,3,MOD_ALT,$33);
     RegisterHotKey(Handle,4,MOD_ALT,$34);
     RegisterHotKey(Handle,5,MOD_ALT,$35);
     RegisterHotKey(Handle,6,MOD_ALT,$36);
end;

procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
     case msg.hotkey of
     1: if CheckBox1.Checked then CheckBox1.Checked:=false else CheckBox1.Checked:=true;
     2: if CheckBox2.Checked then CheckBox2.Checked:=false else CheckBox2.Checked:=true;
     3: if CheckBox3.Checked then CheckBox3.Checked:=false else CheckBox3.Checked:=true;
     4: if CheckBox4.Checked then CheckBox4.Checked:=false else CheckBox4.Checked:=true;
     5: if CheckBox5.Checked then CheckBox5.Checked:=false else CheckBox5.Checked:=true;
     6: if CheckBox6.Checked then CheckBox6.Checked:=false else CheckBox6.Checked:=true;
     end;
end;

end.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.

Последний раз редактировалось Sparkman; 21.09.2010 в 08:45.
Sparkman вне форума Ответить с цитированием
Старый 21.09.2010, 08:46   #13
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Sparkman Посмотреть сообщение
и охота вам темы плодить
http://www.cyberforum.ru/delphi-begi...ead167248.html
Я не размножаю темы, просто создаю их там, где всегда много людей способных помоч.

Цитата:
Сообщение от Sparkman Посмотреть сообщение
CheckButton? Может быть CheckBox?
ChekBox

Цитата:
Сообщение от Sparkman Посмотреть сообщение
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMHotkey( var msg: TWMHotkey ); message WM_HOTKEY;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
     RegisterHotKey(Handle,1,MOD_ALT,$31);
     RegisterHotKey(Handle,2,MOD_ALT,$32);
     RegisterHotKey(Handle,3,MOD_ALT,$33);
     RegisterHotKey(Handle,4,MOD_ALT,$34);
     RegisterHotKey(Handle,5,MOD_ALT,$35);
     RegisterHotKey(Handle,6,MOD_ALT,$36);
end;

procedure TForm1.WMHotkey( var msg: TWMHotkey );
begin
     case msg.hotkey of
     1: if CheckBox1.Checked then CheckBox1.Checked:=false else CheckBox1.Checked:=true;
     2: if CheckBox2.Checked then CheckBox2.Checked:=false else CheckBox2.Checked:=true;
     3: if CheckBox3.Checked then CheckBox3.Checked:=false else CheckBox3.Checked:=true;
     4: if CheckBox4.Checked then CheckBox4.Checked:=false else CheckBox4.Checked:=true;
     5: if CheckBox5.Checked then CheckBox5.Checked:=false else CheckBox5.Checked:=true;
     6: if CheckBox6.Checked then CheckBox6.Checked:=false else CheckBox6.Checked:=true;
     end;
end;

end.
Я не понял смысл этого кода, что он выполняет?

Последний раз редактировалось Stilet; 22.09.2010 в 10:06.
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 08:56   #14
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от xRamzeSx Посмотреть сообщение
Я не понял смысл этого кода, что он выполняет?
смысл? я думал вы догадаетесь скомпилировать этот код..
с помощью этого кода регистрируются шесть сочетаний клавиш (ALT+1,ALT+2 и т.д.).
Реакция на нажатие этих сочетаний лежит в процедуре WMHotkey.
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 21.09.2010, 08:58   #15
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Скомпилировал, но мне нужно, чтобы они не отжимались, а при нажатии на кнопу Button1 в определённом процессе запускались автоматически. CheckBox служит для выбора, какие процедуры сочетаний выполнять, а какие нет.
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 09:03   #16
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Добавь на форму ЧекБоксы и делай так:
Код:
procedure TForm1.Prem;
begin
  while Button1.Tag = 1 do begin
    if CheckBox1.Checked then begin
      Memo1.Lines.Add ('Alt+1 HotKey start');
      N11.Click;
      Application.ProcessMessages;
    end;
    if CheckBox2.Checked then begin
      Memo1.Lines.Add ('Alt+2 HotKey start');
      N21.Click;
      Application.ProcessMessages;
    end;
    if CheckBox3.Checked then begin
      Memo1.Lines.Add ('Alt+3 HotKey start');
      N31.Click;
    end;
    Application.ProcessMessages;
  end;
end;
Sibedir вне форума Ответить с цитированием
Старый 21.09.2010, 09:22   #17
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

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

А-а-а-а-а.
Ну это другое дело.
Вам нужно разобраться с сообщениями
http://www.delphisources.ru/pages/fa...roduction.html
http://delphiworld.narod.ru/base/send_keys_comp.html
Sibedir вне форума Ответить с цитированием
Старый 21.09.2010, 14:21   #19
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

http://delphiworld.narod.ru/base/send_keys_comp.html
Тут сказано, что нужно использовать компонент SendKeys, хотя у меня в CodeGear™ Delphi® 2009 Version 12.0.3390.2051 его нет.
Может я его как-то не так называю?
xRamzeSx вне форума Ответить с цитированием
Старый 21.09.2010, 14:49   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Может я его как-то не так называю?
Правильно. Нет )
Ибо так сам пример называется.
Посмотри внимательнее:
Цитата:
TSendKeys = class(TComponent)
Тебе как раз предлагают исходник этого компонента.
Кинь его в Package и проинсталлируй - появится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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