SetWindowLong(TreeView1->Handle,GWL_STYLE, GetWindowLong(TreeView1->Handle,GWL_STYLE) | TVS_CHECKBOXES);
创建一个带有CheckBox的TreeView,但是如何获得OnCheck消息呢?
请朋友们帮帮忙?谢谢!
解决方案 »
- delphi 数组 Const 子类
- 请教一简单问题 用ado连接带密码SQL Server 2000
- 大家好,帮我解决下这个问题!
- 如何将客户端某个文件夹,连同文件一起保存到应用服务器上的某个文件夹下?
- 谁能帮我解释下sleep(),和它的用法,谢谢.
- 如何给edit赋值。 在线........................
- 弱者问题,可没用过,能在一个com中调用另一个com嘛。
- 如何处理输入到数据库的关键字段重复的问题?
- delphi程序如何换颜色
- Delphi XE7 开发按Android软件遇到屏幕自适应的问题。
- 如何判断点击用webbrowser显示的网页中的连接的url是什么?
- 怎么操作一片内存区域像操作一Cardinal数组一样方便?
截获BM_SETCHECK消息!
var
vTVItem: TTVItem;
begin
//取得某个节点的checked的值。
Result := False;
if not Assigned(mTreeNode) or not Assigned(mTreeNode.TreeView) then Exit;
vTVItem.mask := TVIF_STATE;
vTVItem.hItem := mTreeNode.ItemId;
if TreeView_GetItem(mTreeNode.TreeView.Handle, vTVItem) then
Result := (vTVItem.State and IndexToStateImageMask(2)) > 0; //0: None 1: False 2: True
end; { TreeNodeGetChecked }function TFLoginManage.TreeNodeSetChecked(mTreeNode: TTreeNode; mChecked: Boolean): Boolean;
var
vTVItem: TTVItem;
Template:integer;
begin
//设置某个节点的checked的值为指定mchecked的值。
Result := False;
if not Assigned(mTreeNode) or not Assigned(mTreeNode.TreeView) then Exit;
vTVItem.mask := TVIF_STATE;
vTVItem.hItem := mTreeNode.ItemId;
TreeView_GetItem(mTreeNode.TreeView.Handle, vTVItem);
if not TreeView_GetItem(mTreeNode.TreeView.Handle, vTVItem) then Exit;
vTVItem.stateMask := TVIS_STATEIMAGEMASK;
vTVItem.state := IndexToStateImageMask(Succ(Ord(mChecked)));
Result := TreeView_SetItem(mTreeNode.TreeView.Handle, vTVItem);
end; { TreeNodeSetChecked }procedure TFLoginManage.TreeView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if htOnStateIcon in TreeView1.GetHitTestInfoAt(X, Y) then
Begin
SetTreeViewNodeCheck(TreeView1.GetNodeAt(X,Y),TreeNodeGetChecked(TreeView1.GetNodeAt(X,Y)));
End
else
Begin
Caption := '';
End;
end;
在窗体的create事件中写下如下代码:
SetWindowLong(TreeView1.Handle, GWL_STYLE,
GetWindowLong(TreeView1.Handle, GWL_STYLE) or TVS_CHECKBOXES);
不知道这样你能看懂么!?