情報

TListViewのOn Item Click / Double Clickの実装

TListViewのOn Item Click / Double Clickの実装


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

DelphiのTListViewコントロールは、列ヘッダーとサブアイテムを持つ列のアイテムのリスト、または小さいアイコンまたは大きいアイコンのある縦または横のアイテムのリストを表示します。

ほとんどのDelphiコントロールと同様に、TListViewは OnClick そして OnDblClick (OnDoubleClick)イベント。

残念ながら、クリックされたアイテムまたはダブルクリックされたアイテムを知る必要がある場合、OnClick / OnDblClickイベントを単純に処理してクリックされたアイテムを取得することはできません。

TListViewのOnClick(OnDblClick)イベントは、ユーザーがコントロールをクリックするたびに、つまり「クリック」が発生するたびに発生します コントロールのクライアント領域内のどこか.

ユーザーはリストビュー内をクリックできますが、いずれかのアイテムを「ミス」します。さらに、リストビューはViewStyleプロパティに応じて表示を変更できるため、ユーザーがアイテム、アイテムキャプション、アイテムアイコン、「どこでもない」、アイテム状態アイコンなどをクリックした可能性があります。

注:ViewStyleプロパティは、リストビューでのアイテムの表示方法を決定します。アイテムは、一連の移動可能なアイコンまたはテキストの列として表示できます。

ListView.On Item Click&ListView.On Item Double Click

リストビューのOnClickイベントが発生したときにクリックされた(ある場合)アイテムを見つけることができるようにするには、XおよびYパラメーターで指定されたポイントの下にあるリストビューの要素を決定する必要があります。 「クリック」の瞬間のマウスの位置。

TListiewの GetHitTestInfoAt 関数は、リストビューのクライアント領域の指定されたポイントに関する情報を返します。

アイテムがクリック(またはダブルクリック)されたことを確認するには、GetHitTestInfoAtを呼び出して、実際のアイテムでクリックイベントが発生した場合にのみ反応する必要があります。

ListView1のOnDblClickイベントの実装例を次に示します。

// ListView1のダブルクリックを処理します手順 TForm。ListView1DblClick(送信者:TObject);
var
hts:THitTests;
ht:THitTest;
sht: ひも;
ListViewCursosPos:TPoint;
selectedItem:TListItem;
ベギン
  // ListViewに関連するマウスカーソルの位置
ListViewCursosPos:= ListView1.ScreenToClient(Mouse.CursorPos);
  //どこをダブルクリックしますか?
hts:= ListView1.GetHitTestInfoAt(ListViewCursosPos.X、ListViewCursosPos.Y);
  //「デバッグ」ヒットテスト
キャプション:= ";
  ために ht hts 行う
  ベギン
sht:= GetEnumName(TypeInfo(THitTest)、Integer(ht));
Caption:= Format( '%s%s |'、Caption、sht);
  終わり;
  //ダブルクリックされたアイテムを見つけます
  もし hts <= htOnIcon、htOnItem、htOnLabel、htOnStateIcon それから
  ベギン
selectedItem:= ListView1.Selected;
    //ダブルクリックしたアイテムで何かをする!
Caption:= Format( 'DblClcked:%s'、selectedItem.Caption);
  終わり;
終わり;

OnDblClick(またはOnClick)イベントハンドラーで、コントロールの「内部」にマウスの位置を指定してGetHitTestInfoAt関数を読み取ります。リストビューに関連するマウスの位置を取得するには、ScreenToClient関数を使用して、画面座標内のポイント(マウスXおよびY)をローカルまたはクライアント領域の座標に変換します。

GetHitTestInfoAtは次の値を返します THitTests タイプ。 THitTestsは次のセットです THitTest 列挙値。

THitTest列挙値とその説明は次のとおりです。

  • htAbove -クライアント領域の上。
  • htBelow -クライアント領域の下。
  • htNowhere -コントロール内ではなく、アイテム上。
  • htOnItem -アイテム、そのテキスト、またはそのビットマップ。
  • htOnButton -ボタン上。
  • htOnIcon -アイコン。
  • htOnIndent -アイテムのインデントされた領域。
  • htOnLabel -ラベル上。
  • htOnRight -アイテムの右側。
  • htOnStateIcon -アイテムに関連付けられた状態アイコンまたはビットマップ。
  • htToLeft -クライアント領域の左側。
  • htToRight -クライアント領域の右側。

GetHitTestInfoAtの呼び出しの結果がhtOnIcon、htOnItem、htOnLabel、htOnStateIconのサブセット(Delphiが設定!)である場合、ユーザーがアイテム(またはそのアイコン/状態アイコン)をクリックしたことを確認できます。

最後に、上記が当てはまる場合は、 選択済み リストビューのプロパティの場合、リストビューで最初に選択された項目(複数選択可能な場合)を返します。クリック/ダブルクリック/選択したアイテムで何かをします…

必ず完全なソースコードをダウンロードして、コードを調べ、採用して学習してください。



コメント:

  1. Cosmo

    なんて良い議論だろう

  2. Yozshunris

    私はあなたが間違っていると信じています。私は確信しています。私は自分の立場を守ることができます。午後に私にメールしてください、私たちは話します。

  3. Agyfen

    以前は、そうでなければ、説明してくれてありがとう。

  4. Wacfeld

    あなたは間違いを犯しています。話し合いましょう。

  5. Albaric

    そうです。上記のすべてに同意します。このテーマでコミュニケーションをとることができます。

  6. Onur

    それは同意します、このかなり良い考えはちなみに必要です



メッセージを書く

Video, Sitemap-Video, Sitemap-Videos