TRadioButton, сброшенный на TListBoxItem, ведет себя хаотично при прокрутке

Я пытаюсь реализовать TListbox Firemonkey с несколькими TListBoxItems. На одном из TListBoxItems я поместил несколько TRadioButtons, просто поместив их на TListBoxItem во время разработки. Когда приложение запущено, визуальное отображение кнопок неустойчиво, когда TListBoxItem прокручивается за пределы экрана и обратно.

Другой вопрос TListBox здесь, в StackOverflow, указывает на то, что TListBox не содержит никаких элементов, кроме TListBoxItem. При этом, похоже, нет такого ограничения, которое я могу найти в отношении TListBoxItem. Я без труда размещал таким образом компоненты TEdit, TLabel и TComboBox.

Чтобы дублировать условие, запустите новое настольное приложение Firemonkey; поместите TListBox на форму и установите для него значение alClient; заполнить TListBox рядом TListBoxItems; установите высоту TListBoxItems или Form так, чтобы при запуске вы могли прокручивать TListBox; поместите три кнопки TRadioButton на самый верхний элемент TListBoxItem; установите имя группы для всех TRadioButtons на одно и то же имя; запустить приложение; выберите TRadioButton, чтобы он казался выбранным; прокрутите TListBox так, чтобы TListBoxItem, содержащий кнопки, прокручивался за пределы формы; прокрутить назад; продолжайте выбирать разные TRadioButtons и прокручивайте до тех пор, пока не обнаружите аномалии.

Вопросы. Первый и, возможно, самый важный: можно ли просто перетаскивать компоненты в TListBoxItem во время разработки? Был ли мой предыдущий успех с этой техникой просто случайным?

Во-вторых, и это также важно для приложения, над которым я работаю, если это НЕ жизнеспособный подход к моему пользовательскому интерфейсу, может ли кто-нибудь предложить лучшие подходы?

ТИА

Я отправил отчет в Центр качества Embarcadero, и после нескольких обменов мнениями с Томохиро-саном и Маркусом Адамсом, который предположил, что проблема связана с прокруткой, пришел к следующему:

Отслеживание различных упомянутых случаев показывает, что существует ряд других случаев, связанных с этим из-за использования прокрутки. Когда элемент прокручивается за пределы экрана, а затем прокручивается назад, система, по-видимому, повторно применяет стили к элементам, которые возвращаются к видимости. По крайней мере, в тех немногих случаях, которые я проследил, это кажется так. Проблема возникает именно при повторном применении стиля и рендеринга. В моих собственных примерах я добавил кнопку, которая отображает свойство IsChecked для элементов управления, и рендеринг не во всех случаях правильно отражает свойство, предполагая, что проблемы возникают из-за стиля/рендеринга.

Связанные проблемы, которые я смог найти:

QC 120593 QC 117381 QC 119638 QC 117658

Я жду решения.


person Milan Vydareny    schedule 26.11.2013    source источник
comment
С момента моего первоначального сообщения я пробовал то же упражнение, но с использованием TTreeView и TTreeViewItem. Возникают такие же аномалии.   -  person Milan Vydareny    schedule 26.11.2013
comment
эта проблема возникает с любым компонентом на основе ScrollBox. Таким образом, вы можете просто добавить компонент TVerticalScrollBox в форму, затем добавить несколько радиокнопок, а затем попытаться прокрутить. Я столкнулся с этим неделю назад, поэтому я поддерживаю ваш вопрос. ps: насколько я знаю, нет ограничений на размещение других компонентов на TListboxItems во время разработки. он должен работать нормально. Но вы должны иметь в виду, что если вам нужно несколько элементов списка, которые выглядят одинаково, вы можете использовать пользовательские стили для listboxitem   -  person teran    schedule 27.11.2013


Ответы (1)


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

person ThisGuy    schedule 10.12.2013