gpt4 book ai didi

delphi - 为什么 FireMonkey TListBox Animation 会阻止 Windows32 平台上的项目取消选择

转载 作者:行者123 更新时间:2023-12-01 21:21:31 26 4
gpt4 key购买 nike

我是 FireMonkey 的新手(被它与 Android 配合使用的新功能所吸引)。我正在尝试使用列表框的动画来对项目的选择进行动画处理,以显示底层内容(常见模式)。但是,当我设置列表框消失的动画时,我无法让列表框管理先前选定项目的取消选择。奇怪的是,这似乎只发生在 Windows 平台上,而不是 Android 或 iPad 设备(或 iPad 模拟器)上。

重现问题(在 RAD Studio XE5 中):

1) 创建一个新的 FireMonkey 移动应用程序,选择 Tablet Master-Detail 作为起始布局

2) 右键单击​​目标平台,然后选择 32 位 Windows 以简化调试,然后选择它。

3) 添加一个新的 TListBox 对象,并将其放在窗口的左侧部分。

4) 使用结构浏览器将其移至 LeftLayout,使其成为 LeftLayout 的父级。

5) 单击ListBox1对象

6) 将 Align 属性更改为 alClient,以填充 LeftLayout

7) 在 ObjectInspector 中,选择 Position 属性和 X Sub 属性,然后选择 Create New TFloatAnimation。 FloatAnimation 将被命名为 FloatAnimation1

8) 为 ListBox1 创建一个新的 OnItemClick 处理程序,并添加以下代码:

FloatAnimation1.StartFromCurrent := True;
FloatAnimation1.StopValue := 0 - ((LeftLayout.Width) / 1);
FloatAnimation1.Start;

9) 创建一个新按钮,并将其放置在左侧窗口顶部的工具栏上

10) 为新按钮创建一个处理程序,并添加以下代码:

FloatAnimation1.StartFromCurrent := True;
FloatAnimation1.StopValue := 0;
FloatAnimation1.Start;

11) 双击ListBox打开Items Designer,点击AddItem按钮三次添加三个TListBoxItems

12) 运行应用程序。单击列表框中的三个项目之一。 ListBox 向左移动,在 View 之外。单击我们添加的按钮即可将其恢复。单击其他项目,最终您将选择所有三个项目,即使 ListBox1 的 MultiSelect 已关闭。

13) 停止应用程序。通过将“1”更改为“2”来更改 OnItemClick 处理程序代码,这样 ListBox 只会向左移动一半。再次运行应用程序。现在,当您单击列表框时,只会选择一项,并且之前选择的项目将被取消选择(对于单选列表框来说应该如此)。

同样,如果我在 iPad、iPad 模拟器或 Android 平板电脑上运行此程序,则列表框可以正常工作:在列表框中单击某个项目时,先前选择的项目将被取消选择。

我不是第一个发现这个的人,因为这种动画在应用程序中很常见。为什么 ListBox 行为不正常,如果我只在屏幕之外设置动画,那么在 Windows32 中为什么会有所不同?为什么在 Windows32 中与 iPad 或 Android 平板电脑上有所不同?

最佳答案

我也有同样的问题,带有 XE5 Update2 的 Win32 应用程序,列表框向左移出,然后返回,但仍保留蓝色选择底层。

对我来说有效的(我知道很脏)是在启动动画后立即启动计时器。定时器间隔为100ms

定时器中的代码

if lb_liste.selected is TListBoxItem then
lb_liste.selected.isselected:= false;

//lb_liste 是我的列表框,问题可能是没有选择更多项目,但这对我来说很好。我之前在 TFloatAnimation 的 OnProcess 事件中也有这部分,但奇怪的是,每当我在滑回列表框之前以另一种形式与数据库对话时,这都会导致 AV。

对我来说这显然是 FMX 中的一个错误,让我们等待 XE6,7,8

关于delphi - 为什么 FireMonkey TListBox Animation 会阻止 Windows32 平台上的项目取消选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com