Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1311690897
nofical
2011-07-26 18:34
2011.11.13
Работа с ReadProcessMemory, как прочитать данные ячейки?


15-1310502594
Юрий
2011-07-13 00:29
2011.11.13
С днем рождения ! 13 июля 2011 среда


15-1310416194
Юрий
2011-07-12 00:29
2011.11.13
С днем рождения ! 12 июля 2011 вторник


2-1311147342
xtd
2011-07-20 11:35
2011.11.13
Ускорить отсчет времени указанному приложению


2-1311682692
Fr
2011-07-26 16:18
2011.11.13
Как работать с svg в Делфи?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский