有了一段代码,测试一下,基本可行 procedure TForm7.ListView1Click(Sender: TObject); const ItemIndent =4; CheckBoxSize =16; var I :Integer; P :TPoint; AItem :TListItem; R1, R2 : TRect; begin with ListView1 do begin P :=ScreenToClient(Mouse.CursorPos); AItem := GetItemAt(P.X, P.Y); if AItem <>nil then begin R1 :=AItem.DisplayRect(drSelectBounds); R2 :=Rect(ItemIndent, R1.Top, ItemIndent + CheckBoxSize, R1.Top + CheckBoxSize); if ptInRect(R2, P) then if AItem.Checked then ShowMessage(Format('Item[%d] is Checked',[AItem.Index])) else ShowMessage(Format('Item[%d] is not Checked',[AItem.Index])); end; end; end;
procedure TForm1.ListView1Click(Sender: TObject);
beginend;
procedure TForm7.ListView1Click(Sender: TObject);
const
ItemIndent =4;
CheckBoxSize =16;
var
I :Integer;
P :TPoint;
AItem :TListItem;
R1, R2 : TRect;
begin
with ListView1 do
begin
P :=ScreenToClient(Mouse.CursorPos);
AItem := GetItemAt(P.X, P.Y);
if AItem <>nil then
begin
R1 :=AItem.DisplayRect(drSelectBounds);
R2 :=Rect(ItemIndent, R1.Top, ItemIndent + CheckBoxSize, R1.Top + CheckBoxSize);
if ptInRect(R2, P) then
if AItem.Checked then
ShowMessage(Format('Item[%d] is Checked',[AItem.Index]))
else
ShowMessage(Format('Item[%d] is not Checked',[AItem.Index]));
end;
end;
end;