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

Вниз

Как в форме отловить нажатие VK_TAB ?   Найти похожие ветки 

 
kserg@ukr.net   (2002-04-17 12:04) [0]

Прикол в том, что у меня есть 2 проги, в котр. на событие OnKeyDown в поле ред-ния прописаны обработчики нажатия TAB.
Так вот, в одной всё работает, а в др. проге - нет?
Уже просмотрел все зенки, но отличий в коде и формах не вижу...
Подскажите, где еще покопаться.


 
Starkom   (2002-04-17 12:07) [1]

OnKeyDown у Edit"a?
может быть TabStop у Edit"a равен false, хотя не знаю, возникает ли тогда OnKeyDown


 
kserg@ukr.net   (2002-04-17 12:13) [2]

>Starkom (17.04.02 12:07)
Уважаемый, св-во TabStop указывает, будет ли Control принимать фокус по нажатию ТАБа. А мне надо отловить само нажатие ТАБа в поле.


 
Starkom   (2002-04-17 12:17) [3]

я в курсе, что такое TabStop.
сами спросили, где еще покопаться. Нужен код, хотя бы примерный.
можно перевешать обработку в FormShortCut, там проверять ActiveControl.


 
Starkom   (2002-04-17 12:20) [4]

у меня, кстати, по VK_TAB и VK_ESC тоже ни возникает ни OnKeyDown, ни OnKeyPress. Все реализовано через FormShortCut.


 
kserg@ukr.net   (2002-04-17 12:28) [5]

>Starkom (17.04.02 12:20)
Извини, насчет поучения ТАБ-ом - не хотел обидеть.
Ниже - работающий пример приложения БД.
А вот когда его перенес в новое приложение,
то он там не работает.

procedure TfmEdit_Invoice.Edit_NCOMPKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_DOWN) then quTemp.Next;
if (Key=VK_UP) then quTemp.Prior;
if (Key=VK_TAB) then begin
Edit_NN_INV.SetFocus;
edit_NCOMP.text:= quTemp.Fieldbyname("NCOMP").AsString;
end;
end;



>Все реализовано через FormShortCut
примерчик можешь подкинуть для общего развития ?


 
Starkom   (2002-04-17 12:40) [6]

procedure TForm.FormShortCut(var Msg: TWMKey;
var Handled: Boolean);
var Ctrl,Shift:boolean;
begin
if (Word(GetAsyncKeyState(VK_SHIFT)) and 32768)<>0 then Shift:=True else Shift:=False;
if (Word(GetAsyncKeyState(VK_CONTROL)) and 32768)<>0 then Ctrl:=True else Ctrl:=False;
case Msg.CharCode of
VK_ADD:begin end;
VK_SUBTRACT:begin end;
VK_INSERT: if Ctrl then begin end
else if Shift then begin end;
VK_UP:if Ctrl then
begin
Handled:=true;Msg.CharCode:=0;
end;
VK_DOWN:if Ctrl then
begin
Handled:=true;Msg.CharCode:=0;
end;
end;
end;



 
Anatoly Podgoretsky   (2002-04-17 13:50) [7]

Надо обрабатывать сообщение WM_GETDLGCODE



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

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

Наверх




Память: 0.45 MB
Время: 0.005 c
4-94640
skywalker
2002-02-22 13:01
2002.04.29
Как скрыть процесс от TaskManager?


4-94612
Grim Rider
2002-02-22 06:24
2002.04.29
PostMessage или приказано


1-94518
asdf
2002-04-16 14:34
2002.04.29
Признак работы Delphi


1-94420
Den_
2002-04-18 08:57
2002.04.29
Уважаемые Мастера!


1-94452
Михаил
2002-04-15 12:07
2002.04.29
Создание компонента во время работы программы





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