Главная страница
    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.007 c
3-59575
b-Ars
2003-04-18 23:08
2003.05.19
SQL Builder


1-59784
oleg_sys
2003-05-06 21:51
2003.05.19
Вывод графики в файл


7-59967
MyName
2003-03-23 08:25
2003.05.19
Помогите разобраться с DLL!


1-59759
KSergey
2003-05-05 13:30
2003.05.19
Можно ли множество (Set Of) перевести в Integer?


3-59580
msoftware
2003-04-26 04:58
2003.05.19
Проблемы с Autoincrement полями в INTERBASE





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