Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.064 c
4-1096373253
-SeM-
2004-09-28 16:07
2004.11.07
Разная работа приложения в 9х/ХР


6-1093957135
calmterror
2004-08-31 16:58
2004.11.07
idHTTP - отсоединение от сервера


14-1098349334
AlexG
2004-10-21 13:02
2004.11.07
Мне нужен метод остановить работу компа на N сек


1-1098828526
BURN
2004-10-27 02:08
2004.11.07
Память


14-1097772051
Rouse_
2004-10-14 20:40
2004.11.07
Нет, ну я балдю с подрастающего поколения...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский