Главная страница
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.014 c
1-34403
Бедный
2003-04-29 18:58
2003.05.12
создание 500000 картинок..или взгляды психа на жизнь...


1-34445
GTS
2003-04-28 13:24
2003.05.12
maskedit


1-34451
Петр
2003-04-25 05:53
2003.05.12
Проблема с DLL


14-34581
race1
2003-04-23 18:31
2003.05.12
Monitor


14-34552
Style
2003-04-21 20:39
2003.05.12
Delphi Challenge