Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2008, 21:26   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Свойство taborder перескок по enter

Доброго времени суток. В делфи перескок от одного едита к другмоу происходит по нажатию на tab на клавиатуре, а как сделать чтобы перескок происходил по нажатию на ентер.
tarakan1983 вне форума Ответить с цитированием
Старый 13.09.2008, 21:36   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от tarakan1983 Посмотреть сообщение
Доброго времени суток. В делфи перескок от одного едита к другмоу происходит по нажатию на tab на клавиатуре, а как сделать чтобы перескок происходил по нажатию на ентер.
Можете сделать так:

Код:
Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Begin
If Key=#13 Then
Begin
Edit2.SetFocus;
End;
End;
Procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
Begin
If Key=#13 Then
Begin
Edit3.SetFocus;
End;
End;
...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 13.09.2008, 21:37   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, это проще простого...
В обработчике события OnKeyDown для Edit1:
Код:
if key=VK_RETURN then
Edit2.SetFocus;
и так далее...
А вот по KeyPress не пойдет - при попытке что-либо внести в Edit1 сразу произойдет "перескок" на Edit2...
mihali4 вне форума Ответить с цитированием
Старый 13.09.2008, 21:42   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну, это проще простого...
В обработчике события OnKeyDown для Edit1:
Код:
if key=VK_RETURN then
Edit2.SetFocus;
и так далее...
А вот по KeyPress не пойдет - при попытке что-либо внести в Edit1 сразу произойдет "перескок" на Edit2...
Но вариант приведённый выше подойдёт.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 13.09.2008, 21:45   #5
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну, это проще простого...
В обработчике события OnKeyDown для Edit1:
Код:
if key=VK_RETURN then
Edit2.SetFocus;
и так далее...
А вот по KeyPress не пойдет - при попытке что-либо внести в Edit1 сразу произойдет "перескок" на Edit2...
Я понимаю что это наглость, но мне кажется заморочено как-то для каждого едита писать обработчик, нельзя как-нибудь чтобы сразу ко всем относилось? Спасибо что так быстро отозвались.
tarakan1983 вне форума Ответить с цитированием
Старый 13.09.2008, 21:48   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от tarakan1983 Посмотреть сообщение
Я понимаю что это наглость, но мне кажется заморочено как-то для каждого едита писать обработчик, нельзя как-нибудь чтобы сразу ко всем относилось? Спасибо что так быстро отозвались.
Можно конечно сделать процедуру в которой при нажатии на ентер будет происходить проверка едитов и потом переключение фокуса, но мне кажется, что будет проще так код приписать.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 13.09.2008, 21:53   #7
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
Можно конечно сделать процедуру в которой при нажатии на ентер будет происходить проверка едитов и потом переключение фокуса, но мне кажется, что будет проще так код приписать.
Ради интереса, можно подробнее, куда поместить эту процедуру, и когда она должна выполняться?
tarakan1983 вне форума Ответить с цитированием
Старый 13.09.2008, 22:06   #8
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Сообщение от tarakan1983 Посмотреть сообщение
Ради интереса, можно подробнее, куда поместить эту процедуру, и когда она должна выполняться?
Я тут подумал, что будет лучше всего сделать так:
Скачать компонент FisHotKey с отсюда: http://programmersforum.ru/showthread.php?t=25894 и потом написать такой код:

Код:
Procedure SetKey(Key: Integer);
Begin
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY,0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
End;
Procedure TForm1.fisHotKey1HotKey(Sender: TObject);
Begin
SetKey(3849);
End;
Или местно в программе перехватывать нажатие клавиши Enter.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 14.09.2008, 00:30   #9
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
Я тут подумал, что будет лучше всего сделать так:
Скачать компонент FisHotKey с отсюда: http://programmersforum.ru/showthread.php?t=25894 и потом написать такой код:

Код:
Procedure SetKey(Key: Integer);
Begin
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY,0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
End;
Procedure TForm1.fisHotKey1HotKey(Sender: TObject);
Begin
SetKey(3849);
End;
Или местно в программе перехватывать нажатие клавиши Enter.
Извините что так долго, инет загнулся.
скачал компоненту, установил. написал код:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus, IniFiles, comobj;

type
TForm1 = class(TForm)
Procedure fisHotKey1HotKey(Sender: TObject);
...............

{$R *.dfm}
const
xlA1 = 1;
xlCenter = -4108;
xlRight = -4152;
xlLeft = -4131;
xlBottom = $FFFFEFF5;
xlContinuous = 1;
xlNone = -4142 ;
xlDiagonalDown = 5;
xlthin = 2;
Procedure SetKey(Key: Integer);
Begin
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY,0);
Keybd_Event(Key, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0);
End;
Procedure TForm1.fisHotKey1HotKey(Sender: TObject);
Begin
SetKey(3849);
End;
.............

Все компилируется и запускается, но по ентер не работает
tarakan1983 вне форума Ответить с цитированием
Старый 14.09.2008, 00:41   #10
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

А вы в компоненте указали код клавиши Enter, который равен 13?
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как искать метод, свойство.... Elm0 Свободное общение 8 29.05.2008 10:12
создать свойство компонента дядя Компоненты Delphi 2 11.05.2008 23:23
Свойство DocumentSource компонента XML posdnyaa Компоненты Delphi 0 21.02.2008 16:19
Свойство Params компонента TQuery Washington БД в Delphi 3 07.02.2007 12:04
Свойство Decimal у SpinEdit Ko$tello Компоненты Delphi 3 18.11.2006 17:53