Форум: "Начинающим";
Текущий архив: 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.04 c