Вниз
Скачать: CL | DM;

TMainMenu ShortCut   Найти похожие ветки 

← →
Aragorn ©   (2007-11-07 10:18) [0]

Допустим есть форма с множеством компонентов ввода, есть пункт меню "Copy" с горячей клавишей Ctrl+C. Для некоторых компонентов написан обработчик Ctrl+C.
Как сделать чтобы остальные компоненты ввода использовали свои обработчики Ctrl+C ?


← →
Sonia ©   (2007-11-07 10:35) [1]

inherited


← →
Aragorn ©   (2007-11-07 10:54) [2]

inherited чего? нажатия на пункт меню?


← →
Юрий Зотов ©   (2007-11-07 11:01) [3]

Повесить Ctrl+C на Action и в Execute проверять, где фокус?


← →
Aragorn ©   (2007-11-07 11:19) [4]

Ок, повесил на Action.
В execute проверяю если фокус на нужных мне компонентах - вызываю свой обработчик. А если нет? Мне надо чтобы эти компоненты отработали свои действия по этим горячим клавишам. Писать сюда же их же вызовы для этих горячих клавиш нереально - слишком много компонентов.

Я мог бы просто ловить это Ctrl+C прямо на компоненте, для которых написаны мои обработчики. Но нужно меню, с написанной горячей клавишей (напр. Copy   Сtrl+С). А оно перехватывает это Ctrl+C и остальным компонентам не дает выполнить свои действия.


← →
Юрий Зотов ©   (2007-11-07 11:29) [5]

> Aragorn ©   (07.11.07 11:19) [4]

В execute что-то типа этого:

WinControl := компонент, на котором фокус;
if  WinControl нужный компонент then
 WinControl.KewDown(...)
else
 CopyMenuItem.Click;


← →
Dennis I. Komarov ©   (2007-11-07 11:34) [6]

Ctrl + C - это зарезервированныя сочетание для копирование. Нужно использовать другое сочетание для операции. Это ИМХО :)


← →
Aragorn ©   (2007-11-07 18:20) [7]


> Юрий Зотов ©   (07.11.07 11:29) [5]


Упростим задачу:
Edit1: TEdit;
miCopy: TMenuItem; // c ShortCut  Ctrl+C (Ну нужно чтобы здесь отображался этот  ShortCut)
При нажатии Ctrl+С на TEdit1 нужно чтобы он сам это отрабатывал, что он собственно отлично делает без перехвата ShortCut"ом. Писать Edit1.CopyToClipboard (то что у Вас предложено в CopyMenuItem.Click;) практически невозможно, потому что много компонентов различных типов, и у всех типов методы копирования в буфер различны.


← →
Leonid Troyanovsky ©   (2007-11-07 19:39) [8]


> Aragorn ©   (07.11.07 10:18)  

> пункт меню "Copy" с горячей клавишей Ctrl+C. Для некоторых
> компонентов написан обработчик Ctrl+C.

И что это за обработчик?

> Упростим задачу:
> Edit1: TEdit;

Из обработчика меню делай активному Edit  Perform(WM_COPY, 0, 0)

--
Regards, LVT.


← →
Aragorn   (2007-11-07 23:05) [9]


> И что это за обработчик?

Например, для Ctrl+F есть для некоторых компонент мои обработчики, а есть родные, используемые мной. А для Ctrl+C мне просто надо указать горячую клавишу и писать для каждого нет никакого желания.
Perform(WM_COPY, 0, 0) здесь решает.
Спасибо.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
2-1194357802
pasha_golub
2007-11-06 17:03
2007.12.02
Ошибка при вызове SHFileOperation после ForceDirectories


2-1194691236
piwi
2007-11-10 13:40
2007.12.02
Round


11-1179477505
=BuckLr=
2007-05-18 12:38
2007.12.02
Вопрос по consoleOut


15-1193753952
Sirakuz
2007-10-30 17:19
2007.12.02
[REQ] Fast Report 2.5


2-1194270848
Destroyer
2007-11-05 16:54
2007.12.02
Как узнать запущено ли приложение или нет?




   Наверх