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

Вниз

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

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

Наверх




Память: 0.45 MB
Время: 0.028 c
3-59583
Strori
2003-04-28 06:44
2003.05.19
Перенос базы данных


6-59818
AGAMEMNUM
2003-03-20 08:53
2003.05.19
Messenger


14-59902
Alex134
2003-04-29 00:42
2003.05.19
Отладчик - Вопрос серьезный, для Мастеров


1-59724
Косолапов Игорь
2003-05-05 16:24
2003.05.19
Локализация


1-59707
off
2003-05-07 16:26
2003.05.19
Отменить нажатую клавишу Edit-е





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский