【问题标题】:Delphi - Get current index of selected item in TListViewDelphi - 获取 TListView 中所选项目的当前索引
【发布时间】:2015-03-24 08:57:46
【问题描述】:

我在表单中有一个 TListView,我想知道所选项目的索引。我试图找到提供该信息的 TListView 的方法或属性,但我发现的唯一内容是 lvClients.Selected,它没有提供此项的索引。

有人可以帮我找到如何在我的 TListView 中获取所选项目的索引吗?谢谢。

【问题讨论】:

    标签: delphi tlistview


    【解决方案1】:

    使用ItemIndex 属性。

    值 -1 表示没有选择。

    来自文档:

    读取 ItemIndex 以确定选择了哪个项目。列表中的第一项具有索引 0,第二项具有索引 1,依此类推。如果未选择任何项目,则 ItemIndex 的值为 -1。如果列表控件支持多个选中项,ItemIndex 是选中项的具有焦点的索引。

    【讨论】:

    • 谢谢,不知道为什么我输入的时候没有出现在代码自动补全中...
    • 不客气。至少它确实出现在 XE7 的自动补全中。
    • 它应该出现在代码自动完成中就好了。它在我知道的每个 Delphi 版本中都这样做,并且我从 Delphi 6 开始。这不起作用的唯一原因是,如果您遇到了某些 Delphi 版本中存在的错误,其中代码洞察力在非常大的情况下无法正常工作项目,或者如果您在当前代码位置上方的代码中存在一些语法错误,因为这可能会阻止代码洞察力正确扫描整个单元。
    • 我在 Delphi 6 上,我正在从事的项目非常大(几百万行代码)。也许这就是它无法正常工作的原因。感谢您提供额外的信息。
    【解决方案2】:

    使用Selected项目的Index属性

    if lvClients.Selected <> nil then
      index := lvClients.Selected.Index;
    

    【讨论】:

    • 这正是TListView.ItemIndex属性getter在内部实现的方式。
    • 这第二行给了我 AV !!
    • 这太棒了!
    【解决方案3】:

    在点击事件()上,您还可以到达带有子项的列:

    TListview(sender).items[TListview(sender).itemindex].subitems[1]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      相关资源
      最近更新 更多