问题标签 [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 回答
215 浏览

delphi - 滚动时放置在 TListBoxItem 上的 TRAdioButton 行为异常

我正在尝试实现一个具有多个 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

我在等一个决议。

0 投票
1 回答
3617 浏览

delphi - 在 Delphi 7 中按字母顺序对 TListBox 项进行排序

添加/编辑条目后,我试图触发对TListBox控件中的项目的排序。

我看到有一个已设置为 true 的Sorted属性,但是,这不会在我每次更改内容时动态地对ListBox进行排序。似乎没有任何可用的排序过程或函数,并且调用更新刷新没有预期的效果。

我已经到了考虑将ListBox的内容拉入TStringList对象、对其进行排序然后再次将所有内容放回ListBox的阶段。不过,这似乎有点疯狂,我肯定忽略了一些更好的方法。

这是更改现有项目的示例:

我希望控件能够更新以保持按字母顺序排序,但事实并非如此。

0 投票
2 回答
11245 浏览

delphi - Delphi TListBox OnClick / OnChange?

使用 TListBox 获得“OnChange”类型的功能是否有技巧?我可以对组件进行子类化并添加属性等,然后仅在索引更改时才执行 OnClick 代码...我还可以使用表单级别变量对其进行破解以存储当前索引,但只是想知道我是否忽略了之前的明显情况我去一种或另一种方式。

0 投票
1 回答
1123 浏览

delphi - 在 Lazarus 中获取 TStrings 列表的长度

我有一个名为 ListBoxPlayers 的 TListBox,我相信 ListBoxPlayers.Items 引用了 TListBox 内的 TStrings 列表。我正在尝试使用功能,但它似乎不起作用。有任何想法吗?

编辑:所以我试图设置 TListBox 的大小取决于它将显示多少个字符串。这是我的代码:

ListBoxPlayers.Items.Count无论列表中有多少项目,始终保持为 0。

0 投票
1 回答
1269 浏览

delphi - 使 XE5 中的 FireMonkey TListBox 透明

我在 XE2 中做了一些 FireMonkey 的工作,在这种情况下,我在自定义 TListBox 时遇到了麻烦。

在 XE2 中,我通过删除它的背景和周围的矩形来构建这个自定义的 TListBox(基本上我只需要 TListBox 提供的“子项分组”功能。这很简单,放下一个 TListBox,点击“编辑自定义样式”,选择背景矩形,编辑填充和描边,你就很成功了。

现在我们正在转向 XE5,我无法重现相同的行为。使用样式书编辑器我可以看到背景(现在是 TStyleObject 而不是 TRectangle),但我无法做出以前可以做出的改变。我看到有关如何向 TListBox 添加内容的教程,但没有看到有关如何消除默认行为的教程。

有人可以解释如何实现这种特定行为,或者为我提供一个好的教程吗?

0 投票
1 回答
1445 浏览

delphi - Firemonkey中带有图像的TComboBox

我在 TListBoxItem 的样式中添加了一个 TImage。

如果我添加到 TListBox,它可以工作。如果我添加到 TComboBox,它就不起作用。如果 TComboBox 中的项目,我什至无法更改高度。

这是我的示例代码:

0 投票
1 回答
1333 浏览

delphi - Easy Delphi XE6 FireMonkey 控制 TListBox 和 TStringGrid

如何将列放入 FireMonkey TListBox,然后从 TListBox 的行的列中获取值。我正在使用这种方法:

vListRow := 'Col1Stuff' + '^I' + 'Col2Stuff';

这不是给我第一列中的 Col1Stuff 和第二列中的 Col2Stuff。

我尝试使用 TStringGrid Firemonkey 控件作为替代方法,但以下方法也不起作用:

vStringGrid.Cells[0,1] := '嗨'; vStringGrid.Cells[0,2] := '那里';

这在 TStringGrid 中没有任何内容。

有小费吗?

0 投票
1 回答
1176 浏览

multithreading - Delphi 异步写入 TListBox

我想从多个线程/进程写入一个名为'listMessages'的TListBox,我有这两个过程来做到这一点:

1-添加对象:

2- 使用 TIdCriticalSection 称为protectListMessages

你能告诉我哪个是最好的(快速+线程安全)还是告诉我第三种方法从我的线程/进程向我的 TListBox 写入消息?

0 投票
0 回答
48 浏览

multithreading - Delphi 从 TCPServer OnExecute、TThread 和 TTimer 异步写入 TListBox

我有一个应用程序,我想将数据添加到一个名为 TListBox 的应用程序中,我想listMessagesTTimer一个 TCPServer 的事件以及从我自己创建的OnExecute几个事件中添加数据:TThreads

所以我的问题是 - 我怎样才能实现这个线程安全?

0 投票
1 回答
252 浏览

delphi - 为什么我的 tlistbox 要求我将 & 符号加倍?

有没有办法让你不必加倍你的 & 让 Delphi 列表框不将它们注册为热键?

我们在 ListBox 中填充了一个药物名称列表,其中一些药物中有 &'s,例如“A & D Ointment”,出现“A _D Ointment”有点愚蠢,所以我们加倍&& 使它成为“A & D Ointment”唯一的问题是,当我们这样做时,如果不重新转换文本,我们就不能将列表框中的文本用于任何有用的东西。

完全关闭热键对我们来说一定更方便,我似乎无法找到使用 IDE 的方法,但我确信有一些花哨的 Windows 消息可以覆盖它(希望我没有不必重写基类)


我们使用以下方法覆盖 DrawItem 函数: