问题标签 [tlistbox]

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 回答
3732 浏览

delphi - 如何从 FireMonkey TListBox 控件中删除边框线?

我正在学习 FireMonkey 样式 - 我的主要参考资料在这里。我用简单的标签和形状尝试过的一切都很好,但我现在正在使用 TListBox 并尝试做两件事:

  1. 设置 TListBox 中项目的字体。
  2. 移除它的边框(它在 TCalloutPanel 中与客户端对齐)。

我正在使用在表单上创建样书的方法,右键单击控件并选择“编辑自定义样式”。(不过,我同样很乐意进行运行时更改)。

我对字体的唯一成功是创建了多个 TListBoxItem 并使用它们各自的文本设置。他们没有办法像 VCL 那样继承父设置吗?我真的很想像在 VCL 中一样添加列表框项:

但我看不到获取创建的内部 TListBoxItem 数组的运行时方式。

另一个问题是我看不到删除边框矩形的方法。一个普通的矩形很容易——它有一个笔划——但是在样书中挖掘 TListBox 的所有布局选项时,我在任何地方都看不到笔划。

我正在使用 XE7。我错过了什么吗?

谢谢你的帮助。

0 投票
2 回答
2066 浏览

delphi - 我可以更改 TListBox 选定项的颜色吗?

我正在创建一个多设备 FireMonkey 应用程序,并且我想在选择 TListBox 项时更改它的颜色。
这如何在 Rad Studio XE7 中完成?

0 投票
1 回答
2167 浏览

delphi - 如何在Delphi中的每个项目上使用按钮制作列表

如图所示,我需要在每个项目上制作一个带有按钮的列表,项目左下角一个按钮,右下角一个按钮。

ListBox我在上面的面板中使用控件和一些按钮制作演示应用程序ListBox,但是当ListBox滚动时,很难使按钮跟随ListItem

谁能帮忙,谢谢~~~

图片

0 投票
1 回答
748 浏览

delphi - Ownerdraw TListBox 子控件不通过滚动移动

截图 1

截图 2

重绘问题仅在使用 ScrollBar 或向我的 ListBox 发送 WM_VSCROLL 消息时存在。当我使用键盘箭头或鼠标单击更改选择时,所有内容通常都会绘制。当所选项目通过滚动可见并且不离开可见区域时,也不存在问题。

我认为 Button.Top 属性在 DrawItem 调用之前仍然具有旧值,并且稍后会更改(例如更改为 -30px)。

0 投票
1 回答
631 浏览

delphi - 使用 Livebindings 将多个字段值分配给 FMX MetropolisUI TListBox Item.Text

我正在编写 FMX Metropolis UI 应用程序并尝试通过 LiveBindings 技术(使用表达式引擎)将两个字符串类型的字段值分配给 TListBox 的 Item.Title 成员。

当我以下列方式使用 TBindList 时:

它将“name1 name2”字符串分配给成员Text,但我无法设置,ListItemStyle := MetropolisUI因为 TBindList 类中没有这样的属性

如果我使用TLinkFillControlToField

它让我可以分配ListItemStyleMetropolisUI,但是我只能使用FillDisplayFieldName属性访问一个字段,并且没有SourceExpression可以分配'FieldByName("name1").Text + " " + FieldByName("name2").Text'给它的字段。

我试图猜测fromItem.Text成员的上下文,但我没能做到。我研究了 Delphi 示例,但没有 Metropolis TListBox,而且它的行为方式似乎与常见的方式不同。有没有人知道如何找到这个问题的解决方案?TListBoxTBindList

0 投票
0 回答
61 浏览

comctl32 - TListBox OnDrawItem 导致 AV 在 COMCTL32.dll

我已经缩小了我的应用程序生成从 COMCTL32.dll 到 TListBox::OnDrawItem 的访问冲突的原因。TListBox.Style 是 lbOwnerDrawFixed。

应用程序使用 C++ Builder XE4 构建,在 Win7-64 和 Win8-64 上运行。我可以在 Win7 上实现它,但只能从 IDE 内部实现,而且只是偶尔发生;Win7 上的发布版本不会引发错误,但在 Win8 上每次都会引发错误。

这仅在首次创建表单时发生。表单包括移动到下一个/上一个记录的按钮,它调用所有控件填充代码,但这些调用从来没有问题;只有在表单构建后的第一次。

表单构造函数将 TTimer 设置为暂停 100 毫秒。TTimer::OnTimer 调用将数据加载到控件中的函数。加载 TListBox 后,将调用 OnDrawItem 事件。

如果我将 TListBox.Style 设置为 lbStandard 并删除自定义 OnDrawItem,则没有问题。

这是 OnDrawItem 处理程序的示例:

我已经测试以确保 TListBox.Canvas 不为 NULL,但它没有任何区别;显然它总是非空的。

我不知道如何从这里着手,欢迎提出建议。

谢谢,凯瑟琳

0 投票
1 回答
896 浏览

delphi - 在列表框画布上绘制 unicode 文本太慢

我正在尝试使用以下格式在列表框中显示来自 RSS 的新闻,如下图所示。屏幕截图上的应用程序是通过设置列表框样式在 firemonkey 中开发的。我需要在我的 VCL 应用程序中显示相同的内容。

在此处输入图像描述

这种布局的要求是:

  • 新闻标题应为粗体
  • 简短描述应位于底部,如果它不适合单行,则应将其换行(如图所示);字体样式应该是正常的
  • 每条新闻都应该有一张图片

到目前为止我的代码:

这是我得到的输出:

插入带有 unicode 文本的项目时

问题

Unicode 文本绘制速度太慢,并且在滚动列表框或调整窗体大小时闪烁太多。

笔记

  • 字体已设置为@Microsoft NeoGothic
  • 项目高度 =70;样式 = ownerdrawfixed
  • 在第一个屏幕截图中发布的 firemonkey 应用程序中绘制相同的 unicode 文本没有问题。
  • 上面发布的代码对于普通的英文文本来说工作得很好,根本没有闪烁。该问题仅存在于 Unicode 文本。

更新: 似乎问题出在DrawText方法的DT_WORDBREAK标志中。每当我删除此标志时,虽然闪烁可见,但在绘制文本时会有显着改进。

示例 Unicode 文本

तिम्रो त्यो बोलि ले मलाई बोलायो मिठो तिम्रो त्यो मुस्कान मा मलाई झुलायो झुलाओ ह्स्द्जिः स ह्स्ध्फद्ज द्श्जड्स हस फग स्द्फ़ ग स्द्फ्ग फस ग्स्द्फ़ ग्दस्फ्ग द्स्फग्द तिम्रो त्यो बोलि ले मलाई बोलायो मिठो तिम्रो त्यो मुस्कान मा मलाई स ह्स्ध्फद्ज द्श्जड्स हस फग स्द्फ़ ग स्द्फ्ग फस ग्स्द्फ़ ग्दस्फ्ग द्स्फग्द

0 投票
0 回答
817 浏览

delphi - Delphi中延迟加载列表框项目

我正在尝试解析 RSS 提要并将其数据加载到列表框中。项目内容格式如下:

该列表是自定义绘制的,将显示每个项目中的所有上述字段。由于 Feed 项超过 100 个,因此下载每个 ImageUrl 并将其显示在相应的列表项上需要很长时间。所以我想先获取前 10 个项目。当用户滚动到列表框的末尾时,获取接下来的 10 个项目,依此类推。实际上,我正在尝试实现 Facebook 和许多其他 android 应用程序在滚动到结束事件时显示更多数据项的方式。

谷歌搜索提供了大多数用于 android 实现或 Windows 手机的结果。

0 投票
1 回答
317 浏览

delphi - TListbox - OnChangeEvent 在多选时不会可靠触发

我正在使用 XE7 和 FMX。

我的问题是 TListbox 的 OnChange-Event 不能与多选一起正常工作(每次发生更改时它都不会触发)。

重现步骤:

  • 创建一个 FMX 应用程序并将一个 TListbox 添加到他的表单中。
  • 将项目添加到此列表框。
  • 将列表框的“MultiSelectStyle”设置为“默认”。
  • 处理 OnChangeEvent(设置断点或做某事......)。
  • 现在运行项目并单击第一个 Item -> OnChange 已执行。
  • 但如果再次单击第一项,不会执行OnChange 。

可以告诉我如何解决此问题,以便每次选择更改时我都会收到一个事件。

0 投票
1 回答
2925 浏览

delphi - 使用编辑框过滤列表框

我正在尝试使用编辑框过滤 Delphi 中的列表框,但它不起作用。这是我基于编辑框的 OnChange 事件的代码。

我希望当我在我的编辑框中键入时,列表框项目将被过滤。