Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.11.2012, 00:13
Vavrenyuk Vavrenyuk вне форума
Прохожий
 
Регистрация: 14.11.2012
Сообщения: 28
Репутация: 10
По умолчанию Enter как Tab

Я только начинаю осваивать Delphi 7. Уважаемые программисты подскажите пожалуйста как сделать чтобы нажимая на клавишу "Enter" переходило по полям как нажимая на "Tab".
Ответить с цитированием
  #2  
Старый 14.11.2012, 01:49
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А гугле забанили?

Например, см тут:
http://www.chami.com/tips/delphi/122996D.html
Ответить с цитированием
  #3  
Старый 14.11.2012, 15:33
Vavrenyuk Vavrenyuk вне форума
Прохожий
 
Регистрация: 14.11.2012
Сообщения: 28
Репутация: 10
По умолчанию

Спасибо за ссылку. Скажите пожалуйста куда этот код писать ?
Ответить с цитированием
  #4  
Старый 14.11.2012, 15:58
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Сюда:
Код:
1
2
3
4
5
6
7
8
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 
begin
 
  if key=VK_RETURN then SelectNext(ActiveControl as TWinControl,true,true);
 
end;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 14.11.2012, 16:13
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Black Raider
Сюда:
Код:
1
2
3
4
5
6
7
8
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 
begin
 
  if key=VK_RETURN then SelectNext(ActiveControl as TWinControl,true,true);
 
end;
Только у формы нужно свойство KeyPreview установить в True, иначе ничего не получится.
Кстати если фокус будет на кнопке (TButton например), то по нажатию Enter фокус перейдёт к следующему элементу, но также сработает и нажатие этой кнопки.

Ещё можно на форму бросить компонент TApplicationEvents и у него на событие OnMessage добавить такой обработчик:
Код:
1
2
3
4
5
6
7
8
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if (Msg.message = WM_KEYDOWN) and (Msg.wParam = VK_RETURN) then
  begin
    Handled := True;
    SelectNext(ActiveControl as TWinControl, True, True);
  end;
end;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Vavrenyuk (14.11.2012)
  #6  
Старый 14.11.2012, 17:26
Vavrenyuk Vavrenyuk вне форума
Прохожий
 
Регистрация: 14.11.2012
Сообщения: 28
Репутация: 10
По умолчанию

Спасибо большое. Скажите, а можно сделать чтобы ещё нажимая на Shift + Enter переходило на предыдущее поле ?
Ответить с цитированием
  #7  
Старый 14.11.2012, 17:35
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Да. проверяйте Shift: TShiftState в процедуре.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #8  
Старый 14.11.2012, 17:52
Vavrenyuk Vavrenyuk вне форума
Прохожий
 
Регистрация: 14.11.2012
Сообщения: 28
Репутация: 10
По умолчанию

Не могли бы Вы написать подробно ? Я только начинаю изучать Delphi.
Ответить с цитированием
  #9  
Старый 14.11.2012, 20:02
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 
begin
 
  if key=VK_RETURN then
    if (Shift = [ssShift]) then SelectNext(ActiveControl as TWinControl,false,true)
    else SelectNext(ActiveControl as TWinControl,true,true);
 
end;
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
Этот пользователь сказал Спасибо Black Raider за это полезное сообщение:
Vavrenyuk (14.11.2012)
  #10  
Старый 14.11.2012, 21:32
Vavrenyuk Vavrenyuk вне форума
Прохожий
 
Регистрация: 14.11.2012
Сообщения: 28
Репутация: 10
По умолчанию

Спасибо большое. Очень помогли.
Ответить с цитированием
  #11  
Старый 15.11.2012, 02:41
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Black Raider
Код:
1
2
3
.....
    if (Shift = [ssShift]) then SelectNext(ActiveControl as TWinControl,false,true)
.....
Здесь лучше так:
Код:
1
if ssShift in Shift then .....
Так как в таком виде проверяется состояние только клавиши Shift вне зависимости от состояния остальных клавиш.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025