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

Вниз

Кодировка клавиш   Найти похожие ветки 

 
Patrick ©   (2003-05-07 10:42) [0]

Подскажите, please, код клавиши <Shift-TAB>, или может существует какой-либо виртуальный идентификатор (типа VK_....),
а то мне нужно симитировать нажатие <Shift-TAB>,
а ShortCut(VK_TAB,[ssShift]), почему то работает как обычный TAB.


 
Mikelson   (2003-05-07 10:48) [1]

Может тебе это нужно?
procedure TMainForm.SideBarKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Ctrl: TWinControl;
bDirection: boolean;
begin
if key = VK_TAB then
begin
if Shift = [ssShift] then bDirection := false
else if Shift = [] then bDirection := true;
Ctrl := FindNextControl(SideBar as TWinControl, bDirection, true, false);
Ctrl.SetFocus;
end;
end;


 
Patrick ©   (2003-05-07 11:16) [2]

Насколько я понял, SideBar это любой компонент способный получить фокус, в моём случае должны быть все компоненты формы, поэтому я использую Components[ComponentIndex] в цикле, а приведение типа Components[ComponentIndex] as TWinControl дает ошибку "invalid typecast". Может у Components[ComponentIndex] есть еще какое свойство относящееся к TWinControl.


 
Mikelson   (2003-05-07 11:19) [3]

Ты попадаешь на компоненты, которые не могут иметь фокус. Проверяй сначала Components[ComponentIndex] is ... А потом уже приводи к нужному типу - Components[ComponentIndex] as ...
А вообще, что за задача?


 
Patrick ©   (2003-05-07 11:28) [4]

Задача прикольная, обычная форма, но пользователь уж больно дотошный, хочет под Windows, работать как в DOSe, поэтому приходится писать обработку клавиш движения по объектам формы, как например - стрелками (вправо, влева и т.д.), а объектов на форме много и действия слищком разные, вот пытаюсь всё это как-то оптимизировать.


 
Mikelson   (2003-05-07 11:32) [5]

Хе-хе. Цените юзера, кормильца нашего!


 
WarLord ©   (2003-05-07 15:07) [6]

Попробуй типа такого:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
AcName: String;
begin
AcName := ActiveControl.Name;
if (Key = VK_RETURN) or (Key = VK_DOWN) then Perform(WM_NEXTDLGCTL, 0, 0);
if Key = VK_UP then Perform(WM_NEXTDLGCTL, 1, 0);
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.015 c
6-59839
TonnyS
2003-03-12 15:01
2003.05.19
TClientSocket и TServerSocket: вопросы по принципам работы


6-59830
SLYplix
2003-03-20 16:09
2003.05.19
Телефон к провайдеру.


14-59945
msoftware
2003-04-30 15:53
2003.05.19
Где достать Erwin ERX Platinum?


4-59981
AnKa48
2003-03-18 22:07
2003.05.19
Параметры в LockSetForegroundWindow


6-59820
ИгорьОК
2003-03-20 03:07
2003.05.19
Net send