How to detect clicked item and column in TListView
TListView에서 마우스가 클릭한 위치의 Item과 Cell Column을 인지하는 방법
Click된 컬럼은 Caption을 포함한 인덱스 값을 유지한다.
Item.Caption = column 0
Item.subitem[0] = column 1
Item.subitem[1] = column 2
TListView의 OnMouseDown 이벤트 핸들러를 이용할 수 있고 제공된 마우스 X,Y 좌표를 이용해 Item을 얻을 수 있고 SubItems의 각 CELL Width를 계산하여 클릭된 컬럼을 인지할 수 있다.
아래 사례는 "How to draw a checkbox to column in a TListView" 에 기술된 TListView의 특정 컬럼에 체크박스(TCheckBox)를 표시하는 예제와 더불어 사용자 Action에 의해 체크박스를 클릭하는 효과를 얻을 수 있다.
... procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var Item : TListItem; Column : Integer; W: Integer; begin Item:= ListView1.GetItemAt(0, Y); if Assigned(Item) then begin W:= 0; Column := -1; repeat Inc(Column); Inc(W, ListView1.Columns[Column].Width); until X< W; if Column=2 then begin if Item.SubItems[1]='TRUE' then Item.SubItems[1] := 'FALSE' else Item.SubItems[1] := 'TRUE'; end; end; end; ...
'프로그래밍 > Delphi' 카테고리의 다른 글
IE TWebBrowser없이 DOM 사용하기 (0) | 2021.06.21 |
---|---|
How to draw a checkbox to column in a TListView (0) | 2021.02.13 |
IHTMLElement.getAttribute('onclick') return nullstring(='') (0) | 2021.02.08 |
IHTMLElement.getAttribute EvariantTypeCastError 오류 피하기 (0) | 2021.02.08 |
TWebBrowser 확대/축소, Zoom (0) | 2021.01.19 |