0

我需要用户能够独立于单击项目来按下和设置 ListView 项目的复选框。如果他们按下复选框,我将添加/删除复选标记并采取一些措施。如果他们按下项目文本,我可以采取另一个行动。

我可以用 ListBox 做到这一点,内置功能没有问题。我不知道如何使用 ListView 来做到这一点。它是如何完成的?

我可以将以下代码放在 ListView1ItemClickEx 中,以了解用户何时单击图像。也许我可以将图像更改为复选标记?

  if (ItemObject->Name == "I") {
     ShowMessage("Item Image clicked");
  }

但我不知道如何在运行时更改特定项目图像(例如,我可以在复选标记图像和未选中图像之间切换)。

下图是为了清楚起见。单击红色框中的任意位置将更改项目复选框。对于 ListBox,单击蓝色框中的任意位置将触发 OnClick 事件并且不会更改复选框。我希望在 ListView 中具有相同的行为。

在此处输入图像描述

4

1 回答 1

0

好的,雷米回答了这个相关的问题,它帮助我解决了这个问题。现在我可以让 ListView 有一个复选框,其功能类似于 ListBox。我通过在用户按下(或单击)项目的图像区域时切换项目图像来做到这一点。

当用户单击项目图像时,我将其捕获(根据 Remy 在 ListView1ItemClickEx 事件中的代码)并将其从 0->1 或 1->0 在引用 ItemIndex 的向量中切换(例如 myVector[ItemIndex] = 0),然后我完全重建 ListView(清除它并从头开始构建)。

在此处输入图像描述

我想我必须记住我向下滚动到的列表中的哪个位置,在刷新 ListView 之后,我必须在代码中滚动到该点 - 但是,事实并非如此。我不知道为什么,但刷新后我仍然在列表中单击项目图像的位置。它使它工作并且感觉就像一个复选框。

它在 iOS、Android 和 Windows 中运行良好。

ps 我忘了提到您需要将任何 Header 视为向量中的项目,以跟上每个项目的图像(0 或 1)。否则,添加标题会使您不同步,并且单击项目的图像将切换其他项目的图像。

于 2018-04-15T19:13:33.113 回答