拖放TListBoxItem时TRadioButton在滚动时表现不正常

时间:2013-11-26 17:33:26

标签: delphi firemonkey delphi-xe5 tlistbox

我正在尝试实现一个包含许多TListBoxItem的Firemonkey TListbox。在其中一个TListBoxItems上,我放置了许多TRadioButton,只需在设计时将它们放在TListBoxItem上。当应用程序运行时,当TListBoxItem从屏幕滚动并重新打开时,按钮的视觉外观不稳定。

StackOverflow的另一个TListBox问题表明TListBox不承载除TListBoxItem之外的任何项目。话虽如此,似乎没有关于TListBoxItem的限制。我经常以这种方式放置TEdit,TLabel和TComboBox组件。

要复制条件,请启动一个新的Firemonkey桌面应用程序;删除表单上的TListBox并将其设置为alClient;用许多TListBoxItems填充TListBox;设置TListBoxItems或Form的高度,以便在运行时可以滚动TListBox;在最顶层的TListBoxItem上放下三个TRadioButtons;将所有TRadioButtons的GroupName设置为相同的名称;运行应用程序;选择一个TRadioButton,使其显示为已选中;滚动TListBox,使包含按钮的TListBoxItem滚动窗体;向后滚动;继续选择不同的TRadioButton并滚动,直到观察到异常。

问题:首先,也许最重要的是,我是否可以在设计时简单地将组件放在TListBoxItem上?我之前使用这种技术取得的成功是偶然的吗?

第二个也是我正在研究的应用程序的重要性,如果这不是一个可行的UI方法,那么有人可以提出更好的方法吗?

TIA

我在Embarcadero的Quality Central进行了报告,经过与Tomohiro-san的几次交流以及Marcus Adams的建议,问题与滚动有关,提出了以下建议:

通过所提到的各种情况进行跟踪,由于使用滚动,似乎有许多与此相关的其他情况。当一个项目从屏幕滚动然后向后滚动时,系统显然会将样式重新应用于返回到可见性的项目。至少,在我追踪的少数情况下,似乎就是这种情况。正是在风格和渲染的重新应用上,问题似乎发生了。在我自己的例子中,我添加了一个按钮,显示控件的IsChecked属性,并且渲染在所有情况下都没有正确反映属性,这表明它是造成问题的样式/渲染。

我能找到的相关问题是:

QC 120593 QC 117381 QC 119638 QC 117658

我在等待解决。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我找不到任何解决方案,但作为解决方法,我最终只是用复选框替换单选按钮并添加代码,以便它们的行为方式与单选按钮类似。例如,只允许选择一组复选框中的一个......