Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
3 / 3 / 0
Регистрация: 23.11.2011
Сообщений: 90
1

При нажатии стрелок фокус передаётся по компонентам на форме. Как этого избежать ?

18.02.2013, 14:37. Показов 1416. Ответов 5
Метки нет (Все метки)

Приветствую! Мне необходимо сделать так, чтобы при нажатии стрелок фокус не передавался другим компонентам. Как быть ? Пожалуйста, подскажите!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2013, 14:37
Ответы с готовыми решениями:

Как избежать попадания в фокус кнопок на форме при нажатии клавиш на клавиатуре?
На форме есть несколько полей Edit и кнопок BitBtn. у полей проставлены TabStop=true и в...

Перемещение картинки по форме при нажатии на клавиши стрелок на клавиатуре
Хочу, чтобы при нажатии на клавиши стрелок на клавиатуре картинка двигалась. Какое событие...

TButton - нажатие кнопок на форме при нажатии стрелок на клавиатуре
Подскажите пожалуйста, мне нужно что-бы при нажатии стрелок на клавиатуре нажимались кнопки на...

При любом действии сбрасываются переменные. Как этого избежать
У меня проблема небольшая. Пишу приложение ASP.net, при любой действии сбрасываются переменные. Как...

__________________
5
88 / 88 / 37
Регистрация: 28.11.2012
Сообщений: 309
18.02.2013, 16:40 2

Не по теме:

_Vitalii_, как вот то что бы это вот так? Подскажи как быть :) ;)


это я к тому что вот лично я например ничегошеньки не понял из того что ты написал. Какие стрелки,чем кликать или что нажимать, между чем не переходил фокус...и т.д. и т.п. чем больше вводных тем полезнее ответы...
0
3 / 3 / 0
Регистрация: 23.11.2011
Сообщений: 90
18.02.2013, 17:04  [ТС] 3
Есть форма, на которой размещено несколько компонентов, унаследованных от TButton. На одном из них находится фокус. При нажатии стрелок на клавиатуре фокус переходит от компонента к компоненту. Мне необходимо сделать так, чтобы при нажатии стрелок фокус не передавался от компонента к компоненту.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30907 / 20222 / 7883
Регистрация: 22.10.2011
Сообщений: 35,098
Записей в блоге: 6
18.02.2013, 19:06 4
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Обрабатывай WM_GETDLGCODE. Скажем:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type
  TButton = class(StdCtrls.TButton)
  protected
    procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
  end;
  TForm1 = class(TForm)
  // ... твоя форма
 
implementation
 
// Реализация
{ TButton }
procedure TButton.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
  Msg.Result := DLGC_WANTARROWS;
end;
Теперь по нажатию стрелок фокус между кнопками перемещаться не будет... Можешь то же самое делать для своего компонента-наследника TButton, тогда по кнопкам перемещение будет, а по потомкам - нет.
1
3 / 3 / 0
Регистрация: 23.11.2011
Сообщений: 90
19.02.2013, 16:57  [ТС] 5
Спасибо вам большое! Вставил в компонент, фокус перемещаться перестал, но теперь при нажатии клавиш "вверх" и "вниз" кнопка, на которой находиться фокус, продавливается, как будто по ней кликнули мышью. Как это исправить ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30907 / 20222 / 7883
Регистрация: 22.10.2011
Сообщений: 35,098
Записей в блоге: 6
20.02.2013, 00:19 6
_Vitalii_, не воспроизводится, ничего не продавливается. Попробуй написать вот так:
Delphi
1
2
3
4
5
procedure TButton.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
  inherited;
  Msg.Result := Msg.Result or DLGC_WANTARROWS;
end;
, это более корректно.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2013, 00:19

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как избежать остановки таймера при выскакивании MsgBox и при нажатии на кнопку “закрыть”?
Например, во время работы программы работает таймер времени, который показывает, сколько времени...

winsock сам соединеняет пакеты при получении или отправлении. как этого избежать
Привет! короче проблема в том что когда посылаешь несколько пакетов подряд то они содиняются в...

Как избежать вывода лишнего символа при нажатии управляющей комбинации?
При нажатии на комбинацию lctrl+lalt+F9 выводится буква "p", т.к. lalt+F9 ="112"="p". Какие...

Как избежать повторного внесения данных в БД при нажатии обновить страницу
Всем пт! В PHP эта проблема решалась проверкой метода запроса страницы. Тут при нажатии f5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.