问题标签 [tlistview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1210 浏览

delphi - Delphi Berlin:FMX-TListView,在 Windows 和 Android 之间切换

我在 Delphi 10.1 Berlin 中使用 Windows 作为主视图创建了一个应用程序。我在表单上放置了一个 TListView 并使用新的切换设计模式对其进行了自定义。我添加了一个 TImageObjectAppearance 和几个 TTextObjectAppearance 项目。我添加了代码来设置 TImageObjectAppearance 的图像,并且文本项具有各种字体大小和样式。我在表单上还有 3 个 TImage 组件,用于根据值分配给 TImageObjectAppearance.Bitmap。

当我为 Win32 编译它并运行它时,一切看起来都很棒。位图图像根据 TListView 每一行的值显示。当我将样式切换到 Android 并将视图切换到 Android 10" 平板电脑时,IDE 会抛出此错误:

“无法将 TAppearanceObjectItem 分配给 TAppearanceObjectItem。”

View 仍然显示 Android 10" Tablet 但表单上的实际视图仍然是 Windows 表单。所以我的第一个问题是这个错误到底是什么?我认为 Delphi 应该能够编译到所有这些不同的目标/devices 使用相同的代码。这肯定不会发生。但是等等,还有更多......

所以我切换回 Style: Windows 和 View: Master。我点击了表单上的 TImageObjectAppearance 项并按下了 Delete 键,我得到了这个错误:

“无法从设计器中删除持久引用。”

但是,如果您单击“结构”窗口中的项目并按“删除”,它就可以删除了。漏洞?我会这么说。无论如何,还有更多。我从结构窗口中删除了 TImageObjectAppearance 项,然后切换回样式:Android 和视图:Android 10" 平板电脑,猜猜看……我得到了同样的错误。但是表单上没有 TImageObjectAppearance!因此,我完全删除了 Windows | Master 视图中的 TListView 自定义项,并使用 Android 10" 平板电脑视图重新开始。我添加了所有自定义外观对象,包括 TImageObjectAppearnce。但是当我为 10" Android 平板电脑编译它并在我的 Galaxy Tab S2 上运行它时,1) 没有图像出现。这是我为设置图像而编写的代码。(那里是我用于 TImageObjectAppearance 项目的表单上的 3 个 TImage 组件。

我的第二个(第三个或第四个)问题是为什么上面的代码在为 Android 编译时不起作用,以及在代码中将图像分配给 TImageObjectAppearance 的正确方法是什么?

谢谢-巴里

0 投票
0 回答
1187 浏览

delphi - 如何在 vsIcon ViewStyle 中更改 TListView 的图标/项目大小?

我需要一个可以显示缩略图的控件,为此我认为TListViewViewStyle设置vsIcon足以满足我的目的,不幸的是我意识到它TImageList仅支持最大 256x256 大小的图像。我知道对此有 3rd 方解决方案,但我曾希望使用标准TListView

我需要显示的图像大约为 348x480,因此我无法将它们添加到图像列表并将其分配给列表视图。

所以然后我想也许我可以将我的图像存储在 a 中TList,然后所有者绘制列表视图,这非常简单,只需使用该CustomDrawItem方法并使用该方法Item.DisplayRect即可确切知道要绘制到的位置,如下所示(快速示例):

问题是如何改变每个列表视图项的大小?通常设置图像列表会改变项目的大小,但由于大小限制,我不能使用图像列表。

我尝试过ListView_SetIconSpacing(ListView1.Handle, 348, 480);似乎没有做任何事情,我也尝试过夸大我分配的本地矩形,但那里没有运气。

是否可以手动将列表视图的图标/项目大小设置为大于 256 像素,如果可以,我该如何实现?

0 投票
1 回答
1703 浏览

delphi - TListView 和多个按钮

编写 FMX 应用程序并使用以下文档...

http://docwiki.embarcadero.com/RADStudio/Berlin/en/Customizing_FireMonkey_ListView_Appearance

我想在每个 ListViewItem 中放置多个图像或按钮并确定按下哪个。

在此处输入图像描述

有没有办法在选定的项目上确定按下了哪个按钮/图像?

例如,当我单击该项目时,我可能想做一些默认设置(例如显示详细信息),而不是他们单击图像/按钮 - 做其他事情

也没有点击事件...... 在此处输入图像描述

0 投票
1 回答
166 浏览

delphi - Delphi:TListView 上的 Livebindings AfterScroll

我有一个 TListView 和一个 TObjectList。我将 TFoo.value 绑定到 Item.Caption。我写了一个程序“AfterScroll”,里面有一个显示消息。我在 TBindSourceAdapter.AfterScroll 上连接程序。

我运行这个程序,我只有一个显示消息。

如果我用 TStringGrid 替换 TListView,我在每一行都有显示消息。

在此处输入图像描述

可以在 TListView 上连接“AfterScroll”事件吗?

0 投票
0 回答
662 浏览

android - 为什么滚动框上的 FMX TListView 在 Android 上滞后?

当滚动框上的填充 TListview 离开屏幕并返回时,这里有什么方法可以避免在 Android 上滞后?看起来它试图在出现在屏幕上之前重新填充列表中的所有项目。

示例代码:ScrollBox1 - allaligned 'Client', ListView1 on ScrollBox1, Button1 on ScrollBox1;

0 投票
0 回答
520 浏览

delphi - 如何使用禁用 MultiSelect 的 TListView 切换选定(聚焦)项目的选择状态?

我有一个TListViewwith MultiSelectset to False

我想切换当前选定项目的选择状态。我的意思是,取消选择当前选择(聚焦)的项目。但允许将选择(焦点)切换到另一个项目。您可以在MultiSelect启用并在选定项目上执行Ctrl+时看到相同的切换。Click

我已经尝试过该OnChanging事件,但由于重新进入该方法而完全迷失了方向。

我终于对这个事件做了一个非常丑陋的解决方法,OnEditing例如:

有没有一种优雅的方式来做到这一点?

0 投票
1 回答
89 浏览

c++ - 如何避免 TListView 触发 OnSelectItem 事件(c++ Embarcadero)

我目前正在使用 Embarcadero C++ 上的 TListView,对象可能有数千个项目。我想设置一个 CTRL+A 功能,以便一次选择所有项目。我设法做到了,但是,当使用 myListView->SelectAll(); 时,它会为每个项目 (!!!) 触发一个 OnSelectItem 事件,这可能会花费大量时间。我尝试了 BeginUpdate/EndUpdate, Enabled = false 却没有任何结果——即每个项目都会触发 OnSelectItem。即使我设置了一个变量来实现从 OnSelectItem 事件的立即返回,它也需要太多时间。

是否有一个简单的解决方案可以避免在调用 SelectAll() 时触发数千个事件?

感谢您提供任何帮助。

0 投票
2 回答
2868 浏览

delphi - 如何检测对 TListView 中 CheckBox 的点击

因此,基本上当用户单击复选框时,我想将该项目添加到我的列表中,我尝试使用 OnChange 事件,但这对我不起作用,因为即使未单击复选框,它也会被触发。

我的代码简单明了

我希望仅在单击 ListView 中的复选框时触发此代码

0 投票
1 回答
1554 浏览

listview - TListView: on item added?

How can I catch the event when an item is added to TListView?

I thought the OnInsert event would do the job, according to the documentation. It even passes the actual TListItem object to the handler:

OnInsert Occurs immediately after a new item is inserted into the list view.

Write an OnInsert event handler to respond when an item has just been added to the list. The Item parameter is the TListItem object that was added to the Items property

Here is my code:

But surprisingly, the Item.Caption is always empty. Seems nonsense to me.

EDIT:

Switching to Items.AddItem(), as suggested, leads to another weird issue. The OnInsert event handler now works as expected, however TListView does not display the TListItem.Caption.

image

Why is this?

0 投票
1 回答
295 浏览

android - TListView change color from existing item android platform

I need some example how to change color text item for each row from my list view in FireMonkey.

I try something like this but unsuccessfully.