Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.13;
Скачать: 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 вся ветка

Текущий архив: 2011.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1310643873
Ламот
2011-07-14 15:44
2011.11.13
Редактирование таблиц Excel


15-1310761791
Юрий
2011-07-16 00:29
2011.11.13
С днем рождения ! 16 июля 2011 суббота


15-1310730513
Rendy_Stager
2011-07-15 15:48
2011.11.13
Помощь по Клиент-серверному приложению


15-1310675392
Юрий
2011-07-15 00:29
2011.11.13
С днем рождения ! 15 июля 2011 пятница


15-1310726381
Дмитрий С
2011-07-15 14:39
2011.11.13
Эх так приятно, когда...