Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.12.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
2-1194429628
Lera
2007-11-07 13:00
2007.12.02
Наименование продукта


15-1193636264
boriskb
2007-10-29 08:37
2007.12.02
Сниму 2-х комнатную в Москве.


15-1193749434
Черный Шаман
2007-10-30 16:03
2007.12.02
Разводка кабеля питания.


2-1194647842
artkil
2007-11-10 01:37
2007.12.02
Соединение с Internet


6-1175429195
wolchonok29
2007-04-01 16:06
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский