监测ListView的CheckBox点击

字体大小: 中小 标准 ->行高大小: 标准
下面的代码都有BUG,就是如果用Space来Check Box,那么,不会有效果!

请在ListView的onMouseUp中设置:

procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

Item: TListItem;

HitTest: THitTests;

begin

// Which item belongs to the checkbox

Item := ListView1.GetItemAt(x, y);

// What kind of thing was hit on the item

HitTest := ListView1.GetHitTestInfoAt(x, y);

// If an Item was hit and exactly his checkbox

if (Item <> nil) and (HitTest = [htOnStateIcon]) then

begin

////////////////////////////////

// Handle OnCheck here //

////////////////////////////////

// Example

//

// if Item.Checked = False then

// begin

// if (Item.Index = 0) or (ListView1.Items.Item[Item.Index - 1].Checked = True) then

// Item.Checked := True else Item.Checked := False;

// end else

// begin

// if (Item.Index = ListView1.Items.Count - 1) or (ListView1.Items.Item[Item.Index + 1].Checked = False) then Item.Checked := False else

// Item.Checked := True;

// end;

end;

end;

*********************************

也可以用下面的代码,放在TreeView的OnChange事件中:

var

Item : TListItem;

Pos : TPoint;

begin

if Item.Checked then

............

end;

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68146.html