Главная страница
    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.46 MB
Время: 0.042 c
15-1194104709
tarasoff
2007-11-03 18:45
2007.12.02
BPwin ERWin


15-1193625473
Фар-юзер
2007-10-29 05:37
2007.12.02
FAR открыл исходники !


2-1194335656
lobach
2007-11-06 10:54
2007.12.02
Explorer.exe - как его завершить???


2-1194604904
Ega23
2007-11-09 13:41
2007.12.02
Сравнение вариантов


9-1163701567
SergP
2006-11-16 21:26
2007.12.02
Писал ли кто-нить когда-нить программу решения сапера?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский