Вниз
Скачать: CL | DM;

Баг обхода контролов на форме по клавише Tab   Найти похожие ветки 

← →
RWolf ©   (2011-07-19 10:34) [0]

На форме лежит набор контролов для редактирования опций программы и несколько радиокнопок, на выбор каждой из них повешен обработчик, разрешающий несколько одних контролов и запрещающий другие. Пытаемся пробежаться по оконным компонентам на форме клавишей Tab (если переместить табом фокус на радиокнопку, она включается, т.е. срабатывает логика разрешения/запрещения контролов). После первого круга порядок обхода (который задаётся свойством TabOrder) ломается — Tab уже не позволяет добраться до всех разрешённых в данный момент компонентов. Как побороть?


← →
Юрий Зотов ©   (2011-07-19 11:20) [1]

Попытался воспроизвести Вашу ситуацию. Пробовал и с RadioCroup, и отдельными RadioButton. Описанный Вами эффект не наблюдается, все работает нормально  (D7, XP HE SP3).

Если Вы где-то обрабатываете нажатие Tab (ASCII 9), то проблема может быть в этом. Попробуйте отключить обработку и проверьте.


← →
RWolf ©   (2011-07-19 12:00) [2]


> Юрий Зотов ©   (19.07.11 11:20) [1]


Похоже, проблема возникает, если в TabOrder радиокнопки чередуются с другими контролами (нужен именно такой порядок обхода).
Вот проект с парой форм, где это воспроизводится: http://bit.ly/nHbWpn


← →
SQLEXPRESS   (2011-07-19 12:11) [3]

D7, XP SP3
подтверждаю проблему.

 TForm1 = class(TForm)
   btn2: TButton;
   grp1: TGroupBox;
   grp2: TGroupBox;
   chk1: TCheckBox;
   chk2: TCheckBox;
   chk3: TCheckBox;
   rb1: TRadioButton; // checked
   rb2: TRadioButton;

TCheckBox в одном TGroupBox
TRadioButton в другом TGroupBox

procedure TForm1.btn2Click(Sender: TObject);
begin
 chk2.Enabled := not(chk2.Enabled);
 rb1.Enabled := not(rb1.Enabled);
end;

как только задисейблим  rb1: TRadioButton;
Tab-ом на rb2: TRadioButton; не попасть никак.

более того, если не один TRadioButton не checked,
туда сразу никак не попасть ( одними кнопками пользуясь)


← →
MonoLife ©   (2011-07-20 07:18) [4]

курсором ходит


← →
SQLEXPRESS   (2011-07-20 07:23) [5]


> курсором ходит


если все

> TCheckBox в одном TGroupBox
а все
> TRadioButton в другом TGroupBox

и
> не один TRadioButton не checked

и курсором не ходит тоже


← →
RWolf ©   (2011-07-20 10:11) [6]


> MonoLife ©   (20.07.11 07:18) [4]
> курсором ходит

гляньте архив с примером выше.
стрелками ходит так же криво, как Tab"ом.


← →
MonoLife ©   (2011-07-20 13:02) [7]

если в Form1 в tab order указать радиокнопки подряд, то при фокусе на одной из из р-кнпок курсором ходит нормально.
Со второй формой, беда..


← →
MonoLife ©   (2011-07-20 13:11) [8]

посоветовал бы использовать чекбоксы во второй форме, они, как бы, для этого случая (checked all) больше приспособлены


← →
RWolf ©   (2011-07-20 13:39) [9]


> если в Form1 в tab order указать радиокнопки подряд

в этом дело.
хотелось бы добиться именно перехода Tab"ом с радиокнопки на соответствующий контрол,
а курсором, так и быть, переключаться между радиокнопками.
вот только не работает правильно ни то, ни другое.

вторая форма — это уже эксперименты на заданную тему.
чекбоксы, к сожалению, не подойдут — выбор одного варианта из нескольких принято делать радиокнопкой.


← →
MonoLife ©   (2011-07-20 14:16) [10]


> выбор одного варианта из нескольких принято делать радиокнопкой.

сорри, это я на тестовом примере с tabStop намудрил, думал так и было)


← →
MonoLife ©   (2011-07-21 03:38) [11]

как вариант, вместо панели использовать bevel



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.005 c
4-1251798761
Bordo
2009-09-01 13:52
2011.11.13
Подключение плагина на C++ к программе на Delphi


15-1310625725
oxffff
2011-07-14 10:42
2011.11.13
Пятница. Савеловский. Общение


1-1272350903
Юрий Зотов
2010-04-27 10:48
2011.11.13
Ошибка создания формы в design-time


2-1311508935
prodex
2011-07-24 16:02
2011.11.13
Как построить запрос в Oracle, если...


2-1311057279
RWolf
2011-07-19 10:34
2011.11.13
Баг обхода контролов на форме по клавише Tab




   Наверх