掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewのチェックボックスクリック時に1つだけ選択する方法は? (ID:29791)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつも参考にしています。 TListViewのチェックボックスクリック時に1つだけ選択する方法を探しています。 現在ListViewのClickイベントでListItem選択した時に1つだけ選択する方法はできたのですが, チェックボックスをクリックした時に対応していません。 ※異なるチェックボックスを選択しても,ListViewは前回のListItemを選択したまま 対処する為のListViewのChangeイベント内にてListItemを選択する処理を加えてみたのですが, 無限ループ(スタックオーバーフロー)が発生してしまいます。 チェックボックス機能を無効にすれば今回の件は考えなくていいのですが(MultiSelect機能で制御可能な為), 有効にした状態で処理する方法を考えています。 どなたか良い案お持ちの方がいればよろしくお願いします。 環境:Delphi7 //リストビュー クリック時 procedure TForm1.ListView1Click(Sender: TObject); begin ListItemSelect; end; //リストアイテム選択 procedure TForm1.ListItemSelect; var i: Integer; TmpItem: TListItem; begin if Assigned(ListView1.Selected) = False then Abort; TmpItem := ListView1.Selected; for i := 0 to ListView1.Items.Count - 1 do begin if TmpItem = ListView1.Items.Item[i] then begin ListView1.Items.Item[i].Checked := True; end else begin ListView1.Items.Item[i].Checked := False; end; end; end; //チェックボックス変更時 procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem; Change: TItemChange); var IsChecked: Boolean; begin if Change = ctState then begin IsChecked := Item.Checked; if (Item.StateIndex = 1) <> IsChecked then begin Item.Selected := True; ※無限ループする原因 ListItemSelect; end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.