Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.02;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.023 c
15-1193648707
vasIZmax
2007-10-29 12:05
2007.12.02
Наблюдение за гуглом (около «оффтоп»)


6-1175247082
Wolchonok29
2007-03-30 13:31
2007.12.02
Передача потока


15-1193421519
Vendict
2007-10-26 21:58
2007.12.02
Географические координаты в метры


15-1193912002
TIF
2007-11-01 13:13
2007.12.02
Где скачать книгу? Желательно главу 6 (pdf)


2-1194363691
dumka
2007-11-06 18:41
2007.12.02
DBImage