加checkbox SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100);
uses CommCtrl;列举选中的节点 var Node: TTreeNode; TVI: TTVItem; i:integer; begin for i:=0 to TreeView1.Items.Count - 1 do begin Node := TreeView1.Items[i]; TVI.mask := TVIF_STATE; TVI.hItem := Node.ItemId; TreeView_GetItem(TreeView1.Handle, TVI); if TVI.state and $2000 = $2000 then ShowMessage(Node.Text); end; end;
加checkbox
SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100);
uses
CommCtrl;列举选中的节点
var
Node: TTreeNode;
TVI: TTVItem;
i:integer;
begin
for i:=0 to TreeView1.Items.Count - 1 do
begin
Node := TreeView1.Items[i];
TVI.mask := TVIF_STATE;
TVI.hItem := Node.ItemId;
TreeView_GetItem(TreeView1.Handle, TVI);
if TVI.state and $2000 = $2000 then
ShowMessage(Node.Text);
end;
end;
可以参照楼上的兄弟们的方法实现这个功能。
不过有个问题,比如:有3个item,其中第1,2个设置了checkbox属性,第3个根据界面逻辑需要不用设置。
那么,当你空格键按第3个item的时候,它会自动出现checkbox,这个可能是个bug,可能是vcl一直没有原生包装checkbox属性的原因