Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКак добавить 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.pasunit 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.pasunit 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.dfmobject 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c