TreeView控件添加复选框

Delphi的代码,参考一下吧
首先当然是要在Form加一个TTreeView控件咯。:)

然后在单元的公共uses部分加一个Commctrl单元。

好,接下来要做三件事,
1、在FormCreate事件中
加入如下代码
var
dw: DWORD;
begin
dw := GetWindowLong( TreeView1.Handle, GWL_STYLE);
dw := dw or TVS_CHECKBOXES;
SetWindowLong(TreeView1.Handle, GWL_STYLE , dw);
end;

2、加两个函数
function SetTreeViewNodeChecked(ATreeView: TTreeView;
ATreeNode: TTreeNode; Checked: Boolean): Boolean;

function GetTreeViewNodeChecked(ATreeView: TTreeView;
ATreeNode: TTreeNode): Boolean;

第一个用来设置一个节点的是否被Check
第二个用来取得一个节点的Check状态。

3、就是这两个地实现代码了。

function SetTreeViewNodeChecked(ATreeView: TTreeView;
ATreeNode: TTreeNode; Checked: Boolean): Boolean;
var
tvItem: TTVItem;
begin
tvItem.mask := TVIF_HANDLE or TVIF_STATE;
tvItem.hItem := ATreeNode.ItemId;
tvItem.stateMask := TVIS_STATEIMAGEMASK;

(*Image 1 in the tree-view check box image list is the
unchecked box. Image 2 is the checked box.*)
if Checked then
tvItem.state := IndexToStateImageMask(2) else
tvItem.state := IndexToStateImageMask(1);

Result := TreeView_SetItem(ATreeView.Handle, tvItem);
end;

function GetTreeViewNodeChecked(ATreeView: TTreeView;
ATreeNode: TTreeNode): Boolean;
var
tvItem: TTVItem;
begin
// Prepare to receive the desired information.
tvItem.mask := TVIF_HANDLE or TVIF_STATE;
tvItem.hItem := ATreeNode.ItemId;
tvItem.stateMask := TVIS_STATEIMAGEMASK;

// Request the information.
TreeView_GetItem(ATreeView.Handle, tvItem);

// Return zero if it's not checked, or nonzero otherwise.
Result := Boolean((tvItem.state shr 12) - 1);
end;

转载于:https://www.cnblogs.com/spiritofcloud/p/3976170.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值