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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
14-18106
Yuraz
2002-04-29 15:49
2002.06.06
Пропала кнопка


1-18056
Валет
2002-05-24 18:37
2002.06.06
edit1.Text:=edit1.Text - ПОСЛЕДНИЙ ВВЕДЁННЫЙ СИМВОЛ;


3-17835
uncle_m16
2002-05-16 20:23
2002.06.06
Раздуплите как в базе создать генератор


14-18144
Sir Alex
2002-04-29 17:11
2002.06.06
Вышла в свет Delphi.Mastak.ru Forums Client 1.1.004 Beta


1-18005
Split
2002-05-24 11:19
2002.06.06
Конвертация в Excel