Форум: "Начинающим";
Текущий архив: 2011.11.13;
Скачать: [xml.tar.bz2];
ВнизБаг обхода контролов на форме по клавише 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c