|
Вопрос # 1 909/ вопрос открыт / |
|
Здравствуйте!
Доброго времени суток, эксперты! Как подменить нажатия ENTER на нажатия TAB
 |
Вопрос задал: seryoga (статус: 1-ый класс)
Вопрос отправлен: 17 сентября 2008, 18:29
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, seryoga!
В общем случае эту задачу решить сложновато - прийдётся лазить в драйвер клавиатуры или писать хитрый хук. Но если надо подменить для какого то конкретного компонента на форме, то это очень просто. Надо добавить для этого компонента такой обработчик
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then
Begin
SelectNext(Sender as tWinControl, True, True );
Key := #0;
end;
end;
Если же хочеться для всех компонентов на форме, то тут надо так.
Выставить свойство KeyPreview формы в True и используйте следующий обработчик события OnKeyPress
procedure TMainForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
Key := #0;
PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
end;
end;
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 17 сентября 2008, 18:46
Оценка за ответ: 3
|
Ответ #2. Отвечает эксперт: Николай Рубан
Здравствуйте, seryoga!
Если даная необходимость связана с объектами, то достаточно описать событие OnKeyDown например с таким наполнением:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
const tab=vk_tab; //код кнопки TAB
begin
if Key=vk_return then begin //обработка реакции при нажатии кнопки Enter
keybd_event(tab,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(tab,0,KEYEVENTF_EXTENDEDKEY,0); //нажимаем программно кнопку TAB
keybd_event(tab,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
end;
Good Luck!
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 17 сентября 2008, 18:56
Оценка за ответ: 5
Комментарий к оценке: спасибо огромное!!!! Все работает супер только спикер пищит зараза
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 18 сентября 2008, 14:45; участников в обсуждении: 2.
|
seryoga (статус: 1-ый класс), 18 сентября 2008, 11:00 [#1]:
to Вадим К данный код не работает
|
|
seryoga (статус: 1-ый класс), 18 сентября 2008, 11:57 [#2]:
как убрать пищание спикера при нажатии на Enter
|
|
Вадим К (статус: Академик), 18 сентября 2008, 12:47 [#3]:
Первый код обязан работать. Сам неоднократно его применял. Может какой то фаервол/антивирь мешает. Не знаю.
А спикер пищит, так как enter всё равно нажимается в коде Николая Рубана.
Надо добавить зануливания кода. Вставить key = 0;
Галочка "подтверждения прочтения" - вселенское зло.
|
|
seryoga (статус: 1-ый класс), 18 сентября 2008, 14:27 [#4]:
куда вставить??
|
|
Вадим К (статус: Академик), 18 сентября 2008, 14:45 [#5]:
ну например сразу после строки
if Key=vk_return then begin
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|