SetWindowLong(TreeView1->Handle,GWL_STYLE, GetWindowLong(TreeView1->Handle,GWL_STYLE) | TVS_CHECKBOXES);
创建一个带有CheckBox的TreeView,但是如何获得OnCheck消息呢?
请朋友们帮帮忙?谢谢!
解决方案 »
- 保存文件问题
- 求tdxdbgrid--->tdxdbgridcheckcolumn 的使用方法和代码.
- 求将PDF格式的文件转换成tif格式的文件的函数?
- 请Delphi7.0的升级程序。
- 急求:QuickRep中有没有控件可以直接获取报表总页数?
- 如何将汉字转化成UCS2码?
- 小弟使用APRO控件时遇到的问题/。
- 高手请进,如何在DBEDIT中只输入“+”,“-” 或输入为空时,当焦点转移到其它控件时不提示出错,并将其置零。
- ttreeview控件节点的问题
- “superyys(无血野人)”与“laughcsdn (笑傲中国软件) ”是同一人
- 如何判断点击用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);
不知道这样你能看懂么!?