我正在尝试实现一个具有多个 TListBoxItems 的 Firemonkey TListbox。在其中一个 TListBoxItems 上,我通过在设计时将它们简单地放在 TListBoxItem 上放置了许多 TRAdioButtons。当应用程序运行时,当 TListBoxItem 滚动离开屏幕并重新打开时,按钮的视觉外观是不稳定的。
StackOverflow 上的另一个 TListBox 问题指出 TListBox 不承载 TListBoxItem 以外的任何项目。话虽如此,我似乎没有找到关于 TListBoxItem 的此类限制。我经常以这种方式轻松放置 TEdit、TLabel 和 TComboBox 组件。
要复制条件,请启动一个新的 Firemonkey 桌面应用程序;在表单上放置一个 TListBox 并将其设置为 alClient;用一些 TListBoxItems 填充 TListBox;设置 TListBoxItems 或 Form 的高度,以便在运行时可以滚动 TListBox;在最顶部的 TListBoxItem 上放置三个 TRAdioButtons;将所有 TRAdioButtons 的 GroupName 设置为相同的名称;运行应用程序;选择一个 TRAdioButton 使其显示为选中;滚动 TListBox 以使包含按钮的 TListBoxItem 滚出表单;向后滚动;继续选择不同的 TRadioButtons 并滚动直到观察到异常。
问题:首先也是最重要的,我是否可以在设计时简单地将组件放到 TListBoxItem 上?我之前在这项技术上的成功只是偶然吗?
其次,对于我正在开发的应用程序也很重要,如果这不是我的 UI 的可行方法,任何人都可以提出更好的方法吗?
TIA
我在 Embarcadero 的 Quality Central 输入了一份报告,在与 Tomohiro-san 进行了几次交流后,以及 Marcus Adams 提出问题与滚动有关的建议,我得出以下结论:
跟踪提到的各种案例,似乎还有许多其他案例与此相关,因为使用了滚动。当一个项目从屏幕上滚出然后向后滚动时,系统显然会将样式重新应用于要返回可见性的项目。至少,在我追踪的少数情况下,情况似乎如此。正是在这种风格和渲染的重新应用上,问题似乎出现了。在我自己的示例中,我添加了一个按钮,该按钮显示控件的 IsChecked 属性,并且渲染在所有情况下都不能正确反映该属性,这表明是样式/渲染导致了问题。
我能够找到的相关问题是:
质量控制 120593 质量控制 117381 质量控制 119638 质量控制 117658
我在等一个决议。