Tabstop и TRectangle

У меня есть TTabControl с некоторыми элементами управления (приложение Delphi XE7 Firemonkey). Все работает нормально, табстоп тоже. Теперь мне нужно раскрасить одну панель с помощью CheckBox. Добавьте TRectangle на эту панель и установите родительский элемент CheckBox для этого TRectangle. Интерфейс выглядит нормально, но теперь этот CheckBox не находится в списке табуляции и не получает команду табуляции.

Как решить эту проблему?

Как воспроизвести: Добавьте в форму TRectangle, добавьте 3 CheckBox, переместите один CheckBox3 в TRectangle с помощью панели Структура (установите TRectangle как родителя для CheckBox3). Запустите это приложение и попробуйте навигацию с помощью клавиши Tab. Вы не можете перейти к CheckBox3!


person Alex Egorov    schedule 18.11.2014    source источник
comment
Как мы можем воспроизвести это, чтобы мы могли исследовать?   -  person Ken White    schedule 19.11.2014
comment
Добавьте в форму TRectangle, добавьте 3 CheckBox, переместите один CheckBox3 в TRectangle с помощью панели Структура (установите TRectangle как родителя для CheckBox3). Запустите это приложение и попробуйте навигацию с помощью клавиши Tab. Вы не можете перейти к CheckBox3!   -  person Alex Egorov    schedule 19.11.2014
comment
Не добавляйте подробности в комментарии. Пожалуйста, отредактируйте вопрос, чтобы включить их туда.   -  person Ken White    schedule 19.11.2014
comment
Ок, вопрос отредактирован   -  person Alex Egorov    schedule 21.11.2014


Ответы (1)


Вы либо должны вручную установить TabOrder в какое-то (разумное) значение, потому что TShape не опубликовано и, таким образом, установлено в -1 (что делает то же самое, что и TabStop = False), либо не помещает TCheckBox в TRectangle, просто поместите его перед TRectangle, чтобы он рисовал над TRectangle.

Другой вариант — вообще не использовать TRectangle и изменить стиль TPanel: щелкните правой кнопкой мыши панель в дизайнере и выберите Edit Custom Style.... Затем выберите только что созданный для вас стиль (что-то вроде panel1style: TRectangle) и измените свойство Fill так, как вам нужно. Нажмите Apply and Close, и все готово. Используя стили, вы можете создать сложный внешний вид для любого элемента управления, который на первый взгляд может показаться простым. Для получения дополнительной информации см. http://docwiki.embarcadero.com/RADStudio/XE7/en/Customizing_FireMonkey_Applications_with_Styles и связанные темы.

person Honza R    schedule 19.11.2014
comment
Спасибо, пользовательский стиль выглядит очень полезным для этого - person Alex Egorov; 19.11.2014