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

Вниз

Перехват нажатия клавиши   Найти похожие ветки 

 
pusrg   (2002-05-23 21:39) [0]

Мастера, подскажите советом!
Обрабатываю событие OnKeyDown для TEdit (пробовал OnKeyUp - результат тот же) следующим образом:

procedure TFormEditGenOperation.EEditKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
case Key of
VK_DOWN:Key:=VK_TAB;
VK_UP:
begin
Shift:=[ssShift];
Key:=VK_TAB;
end;
end;
end;

Фактически хочу при нажатии на клавиши "Вниз", "Вверх" перескакивать на следующий/предидущий контрол в списке Tab Order, но ничего не выходит - фокус остается в том же контроле...
В чем проблема, ведь переменная Key передается как var?
Очевидно TEdit перехватывает мое изменение key?
Как побороть? Заранее спасибо.


 
Song   (2002-05-23 22:02) [1]

Да, Вы правы, что-то не получается. Буду рад если кто-то укажет на нашу с Вами ошибку...

Предлагаю Вам такой выход из ситуации:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Case Key OF
VK_DOWN: SelectNext(Form1.ActiveControl,True,True);
VK_UP: Begin
Keybd_event(VK_SHIFT,0,0,0);
Keybd_event(VK_TAB,0,0,0);
Application.ProcessMessages;
Keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
Keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
End;
End;
end;


 
pusrg   (2002-05-23 22:36) [2]

To Song
Большое спасибо за Ваш ответ. Прямо таки навели на путь истинный :))

Я позволил себе не много модифицировать Ваш код:


case Key of
VK_DOWN:SelectNext(ActiveControl,true,true);
VK_UP:SelectNext(ActiveControl,false,true);
end;


Еще раз, спасибо.


 
Song   (2002-05-23 22:40) [3]

Да... посыпаю голову пеплом... искал как назад идти по TabOrder"у... не нашёл.. пришлось эмулировать Shift+Tab.. оказалось False надо было поставить.. Срам мне прям таки :-/



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

Форум: "Основная";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.009 c
1-17880
diww
2002-05-23 18:09
2002.06.06
Перестал работать поиск в ListBox


1-18021
AlexMey
2002-05-24 13:34
2002.06.06
Как отследить событие выходы мыши за пределы компонента?


6-18078
DikobraZ
2002-03-26 11:54
2002.06.06
ошибка 10061


1-17974
Yr2
2002-05-28 12:04
2002.06.06
TIcon => TBitmap


1-17994
proc
2002-05-23 19:06
2002.06.06
Abstract Error





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