Главная страница
    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.46 MB
Время: 0.008 c
7-59971
Yrek
2003-03-21 14:38
2003.05.19
Как узнать, какие файлы


1-59661
asku
2003-05-07 14:19
2003.05.19
плагин на delphi


3-59539
temp
2003-04-29 11:19
2003.05.19
Что за ошибка при установке FastReport?


14-59920
ZeroDivide
2003-04-28 09:38
2003.05.19
Телефонная история


9-59523
Crazy Max
2002-12-14 00:48
2003.05.19
OpenGl





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