0

ユーザーがアイテムをクリックするのとは別に、ListView アイテムのチェックボックスを押して設定できるようにする必要があります。彼らがチェックボックスを押すと、チェックマークを追加/削除し、何らかのアクションを実行します. アイテムのテキストを押せば、別のアクションを実行できます。

組み込みの機能で問題なく ListBox を使用してこれを行うことができます。ListView でそれを行う方法がわかりません。それはどのように行われますか?

次のコードを ListView1ItemClickEx に追加して、ユーザーがいつ画像をクリックしたかを知ることができます。たぶん、画像をチェックマークに変更できますか?

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

しかし、実行時にその特定のアイテムの画像を変更する方法がわかりません (たとえば、チェックマークの画像とチェックされていない画像を切り替えることができます)。

下の図はわかりやすくするためのものです。赤いボックス内の任意の場所をクリックすると、項目のチェックボックスが変更されます。ListBox の場合、青いボックスのどこかをクリックすると、OnClick イベントが発生し、チェックボックスは変更されません。ListView でも同じ動作が必要です。

ここに画像の説明を入力

4

1 に答える 1

0

OK、Remy がこの関連する質問に答えてくれたので、この問題を解決するのに役立ちました。これで、ListView に、ListBox のように機能するチェックボックスを持たせることができます。ユーザーがアイテムの画像領域を押す (またはクリックする) たびに、アイテムの画像を切り替えます。

ユーザーが項目の画像をクリックすると、(ListView1ItemClickEx イベントの Remy のコードに従って) それをトラップし、参照 ItemIndex のベクトルで 0->1 または 1->0 に切り替えます (例: myVector[ItemIndex] = 0)。 ListView を完全に再構築します (クリアして最初から構築します)。

ここに画像の説明を入力

リストのどこまでスクロールしたかを覚えておく必要があり、ListView を更新した後、コード内のそのポイントまでスクロールする必要があると思いましたが、そうではありません。理由はわかりませんが、更新後も、アイテムの画像をクリックしたリストのポイントにとどまっています。チェックボックスとまったく同じように機能し、感じさせます。

iOS、Android、および Windows でうまく機能します。

psヘッダーを、各アイテムの画像(0または1)に追いつくベクター内のアイテムのように扱う必要があることを忘れていました。そうしないと、ヘッダーを追加すると同期が取れなくなり、アイテムの画像をクリックすると他のアイテムの画像が切り替わります。

于 2018-04-15T19:13:33.113 に答える