Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

Как добавить TAction код клавиши + с цифровой клавы   Найти похожие ветки 

 
svv   (2004-10-25 10:52) [0]

Как добавить TAction код клавиши + с цифровой клавы?
То есть хочется что бы дейчтвие срабатыввало при нажании на "+" на цифровой клавиатуре?

Есть у меня конечно иделя проверять KeyPress для всей формы, но может можно указать это прям TAction

Заранее спасибо!!!


 
Ega23 ©   (2004-10-25 11:03) [1]

TextToShortCut + F1.
Может поможет.


 
svv   (2004-10-25 11:18) [2]

Не помогает...
до этого я и сам догадался...
я не знаю как указать что нужен "+" с цифровой клавы
пробывал: "NumPad +"; "Gray+"; "Plus"
кажется не получилось


 
Ega23 ©   (2004-10-25 11:23) [3]

Ну тогда KeyDown переопределяй...


 
inic ©   (2004-10-25 16:30) [4]

svv   (25.10.04 10:52)

Попробуй кинуть ApplicationEvents на форму, а там обработать
событие для ApplicationEvents1.OnShortCut:


procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey;
 var Handled: Boolean);
begin
 if (Msg.CharCode = VK_add) then
   Action1.Execute;

end;

procedure TForm1.Action1Execute(Sender: TObject);
begin
 Application.MessageBox("", "", 0);
end;


 
Макс   (2004-10-25 17:58) [5]

Надо в OnCreate формы или датамодуля где сидят actions
написать:

 //Цепляем ShortCut на свертывание развертывание
 //(Невозможно  это сделать в инспекторе)
 ac_Expand.ShortCut := ShortCut(VK_ADD, []);
 ac_Collapse.ShortCut := ShortCut(VK_SUBTRACT, []);
 ac_ExpandAll.ShortCut := ShortCut(VK_ADD, [ssShift]);
 ac_CollapseAll.ShortCut := ShortCut(VK_SUBTRACT, [ssShift]);

VK_ADD - это серый +
VK_SUBTRACT - это серый -


 
GuAV ©   (2004-10-25 20:55) [6]

Установи это и будет возможность такая (специально для сабжа писал, когда мне было надо)

ShortEditor.pas
unit ShortEditor;

interface

uses VCLEditors, DesignIntf;

type
 TMyShortCutProperty = class(TShortCutProperty)
 public
   function GetAttributes: TPropertyAttributes; override;
   procedure Edit; override;
 end;

procedure Register;

implementation

uses ShortEditFrm, Controls, Classes;

procedure Register;
begin
 RegisterPropertyEditor(TypeInfo(TShortCut), nil,
   "", TMyShortCutProperty);
end;

{ TMyShortCutProperty }

procedure TMyShortCutProperty.Edit;
begin
 with THotDlg.Create(nil) do
 try
   HotKey.HotKey := GetOrdValue;
   if ShowModal = mrOK then
     SetOrdValue(HotKey.HotKey);
 finally
   Free;
 end;
end;

function TMyShortCutProperty.GetAttributes: TPropertyAttributes;
begin
 Result := [paDialog, paMultiSelect, paRevertable];
end;

end.


ShortEditFrm.pas
unit ShortEditFrm;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
 Buttons, ExtCtrls, ComCtrls;

type
 THotDlg = class(TForm)
   OKBtn: TButton;
   CancelBtn: TButton;
   HotKey: THotKey;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

implementation

{$R *.dfm}

end.

ShortEditFrm.dfm
object HotDlg: THotDlg
 Left = 245
 Top = 108
 BorderStyle = bsDialog
 Caption = "Hot Key"
 ClientHeight = 67
 ClientWidth = 224
 Color = clBtnFace
 ParentFont = True
 OldCreateOrder = True
 Position = poScreenCenter
 PixelsPerInch = 96
 TextHeight = 13
 object OKBtn: TButton
   Left = 143
   Top = 4
   Width = 75
   Height = 25
   Caption = "OK"
   Default = True
   ModalResult = 1
   TabOrder = 0
 end
 object CancelBtn: TButton
   Left = 143
   Top = 36
   Width = 75
   Height = 25
   Cancel = True
   Caption = "Cancel"
   ModalResult = 2
   TabOrder = 1
 end
 object HotKey: THotKey
   Left = 8
   Top = 8
   Width = 121
   Height = 19
   HotKey = 32768
   InvalidKeys = []
   TabOrder = 2
 end
end


 
Макс   (2004-10-25 21:13) [7]

Еще вариант в догонку - написать в инспекторе в свойстве:
Num +

И всех делов :)


 
GuAV ©   (2004-10-25 21:24) [8]

Макс   (25.10.04 21:13) [7]
"Invalid Property Value" (D7)

Утанови [6] как компонент и можно будет назначить + в окне редактора свойства.


 
Макс   (2004-10-25 22:53) [9]

2 GuAV ©

Что то у меня никакого "Invalid Property Value" не наблюдается


 
GuAV ©   (2004-10-25 23:08) [10]

У меня D7. Русский Windows. И Num + не присваивается. Присваивается Доп. + как я только что выяснил.


 
Макс   (2004-10-26 01:10) [11]

2 GuAV ©
А у меня Windows XP английский


 
GuAV ©   (2004-10-26 02:15) [12]

Вот и разобрались :)


 
svv   (2004-10-26 09:24) [13]

Спасибо большое!
Получилось.
В задаче правда требовалось добавить "+" как альтернативную "Ins" горячую клавишу, но это было уже просто... (используя ShortCutToText)

Я не собразил что virtual key code можно использовать напрямую так!

Спасибо еще раз за помощь!
Успехов!



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
1-1097601135
Grrey
2004-10-12 21:12
2004.11.07
ООП можно ли это сделать?


10-1056909068
epflorov
2003-06-29 21:51
2004.11.07
MT-DORB - ваши впечатления?


14-1097827196
Akril
2004-10-15 11:59
2004.11.07
Полицейский разворот и др.


14-1098309853
Anonimus
2004-10-21 02:04
2004.11.07
Модераторам предложение


4-1096683717
TitanDesign
2004-10-02 06:21
2004.11.07
Как программно определить установлен Flash