【问题标题】:get each item from a list view with button click通过单击按钮从列表视图中获取每个项目
【发布时间】:2016-11-23 20:42:10
【问题描述】:

我正在使用带有标准 Tlistview vcl 的 delphi 10.1

我尝试并举例更好,但我不太擅长那个抱歉,好吧,我有标准的列表视图

按以下顺序包含项目

  1. 肯·怀特,
  2. 大卫·赫弗南,
  3. 西蒙·刘易斯,

现在我有两个按钮,当我按下前进按钮时,它将获得列表中的第一个项目 Ken White,如果我继续按下按钮,它将在列表中向下移动,直到到达 simon 或最后一个条目.

现在它与后退按钮相同,但如果它从下到上直到返回到肯怀特,它会是相反的。

对不起,如果拼写不是我的东西没有多大意义,对不起,我有阅读障碍

【问题讨论】:

  • 这是一个标准的 TListView 还是别的什么?另外,包括这是 VCL 还是 Firemonkey(它会有所不同)。请edit您的帖子澄清这些细节,并包含填充示例列表视图的代码。
  • 您是否正在为向前和向后计数而苦恼。您的具体问题是什么。
  • 你不要运行一个循环向上计数和一个向下计数。你知道 for 循环吗?

标签: delphi


【解决方案1】:

要在TListView 中前进,您可以使用GetNextItem

  ListView1.Selected := ListView1.GetNextItem(ListView1.Selected, sdAll, []);

在上面,“sdAll”指定下一个项目将是其索引比已选择项目高一个的项目。此方法在没有选定项目时选择第一个项目。当最后一项已经被选中时,调用返回后将取消选中。

要反方向进行,如果合适的话,你可以传递 'sdLeft' 或 'sdAbove' 而不是 'sdAll'。如果没有,由于没有“GetPreviousItem”,您必须编写代码来选择索引比已选择的项目低一的项目。示例:

if not Assigned(ListView1.Selected) then
  ListView1.Selected := ListView1.Items[ListView1.GetCount - 1]
else if ListView1.Selected.Index = 0 then
  ListView1.Selected := nil
else
  ListView1.Selected := ListView1.Items[ListView1.Selected.Index - 1];

如果您想要不同的行为,您可能不得不修改代码,例如选择最后一个项目,并且向前按下,您希望无需永时发生。

【讨论】:

    猜你喜欢
    • 2013-06-20
    • 2012-06-24
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2012-10-06
    • 2021-04-13
    • 2021-12-15
    • 2020-07-26
    相关资源
    最近更新 更多