Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.12;
Скачать: CL | DM;

Вниз

Ctrl+?, как поймать? Сама знаю, что глупо. :)   Найти похожие ветки 

 
deedlit ©   (2003-04-29 15:33) [0]

Сабж. Голая форма, нужно ловить нажатия типа Ctrl-F, Ctrl-X etc. TMainMenu использовать нельзя.

Я пыталась выставить для формы KeyPreview:=true и написать обработчик OnKeyPress...

If UpperCase(Key)="S" then
If ssShift in GetShiftState then RunAction;


Вот процедура для ловли состояния спецклавиш:

function TMainForm.GetShiftState: TShiftState;
begin
Result:=[];
If GetKeyState(VK_SHIFT)<0 then Include(Result, ssShift);
If GetKeyState(VK_CONTROL)<0 then Include(Result, ssCtrl);
If GetKeyState(VK_MENU)<0 then Include(Result, ssAlt);
end;


Я что-то упускаю, или делать нужно вообще по-другому?


 
Skier ©   (2003-04-29 15:36) [1]

А почему ты хочешь обрабатывать Ctrl-?, а проверяеть на
Shift ?

If UpperCase(Key)="S" then
If ssCtrl in GetShiftState then RunAction; Не поможет ?


 
UserMicc ©   (2003-04-29 15:38) [2]


2 Skier © (29.04.03 15:36):

ответ прост.. это - "ОНА"!


 
Skier ©   (2003-04-29 15:41) [3]

>UserMicc
Какая разница ОНА или ОН, лишь бы работало...


 
MBo ©   (2003-04-29 15:43) [4]

так не устроит?

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key=Ord("S")) then ...
end;


 
Юрий Федоров ©   (2003-04-29 15:45) [5]

А почему не OnKeyDown ?


 
UserMicc ©   (2003-04-29 15:51) [6]


MBo © (29.04.03 15:43) прав, как и
Skier © (29.04.03 15:41)...


 
deedlit ©   (2003-04-29 16:11) [7]

To Skier:
> А почему ты хочешь обрабатывать Ctrl-?, а проверяеть на
> Shift ?

Тьфу, да опечаталась просто, когда вопрос писала. %)

To MBo:
> так не устроит?
Ой. Спасибо большое. Действительно, все работает. :)


 
MsGuns ©   (2003-04-29 16:47) [8]

Если надо ловить конкретное кол-во конкретных комбинаций Ctrl+.., то добавть TActionList с акциями по одной на каждую комбинацию. В ShortCut каждой акции укажи нужную комбинацию, а в обработчике пропиши алгоритм "реакции". В дальнейшем при необходимости можно эти экшины назначить элементам управления (пунктам меню, DropDown-меню, кнопкам и т.д.), не прописывая обработчики для всех подобных контролов.


 
kull ©   (2003-04-29 17:34) [9]


> MsGuns © (29.04.03 16:47)

Вот. Полностью поддерживаю! Енто и есть правильный подход.



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
1-34439
ksushishka
2003-04-25 18:54
2003.05.12
Работа с документами Excel


14-34576
-= ALEX =-
2003-04-21 13:53
2003.05.12
xm


1-34388
KIE
2003-04-28 12:53
2003.05.12
Задержка по времени


3-34354
Askik
2003-04-18 15:44
2003.05.12
Как заставить ADOQuery не скачивать все записи набора данных?


3-34375
Jaxtor
2003-04-21 12:26
2003.05.12
Кэшированные изменения