怎么知道点的是 +号 还是标题 TreeView
If TreeView1.Selected = nil then begin
ShowMessage('请先选择节点');
Exit;
end else begin
ShowMessage('已选中节点:'+treeview1.Selected.Text);
end;
类似上面的样子
怎么做出
If ... then begin
ShowMessage('你点的是+号’);
展开当前点的节点
end else IF ... THEN begin
ShowMessage('你点的是标题:'+treeview1.Selected.Text);
不展开当前点的节点
end;
[解决办法]
我自己研究的哟
procedure TFrmTreeView.TreeView1Change(Sender: TObject; Node: TTreeNode);
//var
// Node: TTreeNode;
begin
if (Node.Text='子节点01') then
begin
showmessage('子节点01');//写入Node节点事件代码
end;
if Node.Text='子节点02' then
begin
showmessage('子节点02');//写入Node节点事件代码
end;
if Node.Text='子节点03' then
begin
showmessage('子节点03');//写入Node节点事件代码
end;
end;
[解决办法]
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);varClickInfo:THitTests;beginClickInfo:=TreeView1.GetHitTestInfoAt(X,Y);if htOnItem in ClickInfo thenShowMessage('你刚才点了标题')else if htOnButton in ClickInfo thenShowMessage('你刚才点了加号');end;
[解决办法]
看来,我得出手了
TreeView有展开和收缩的事件,定义一个全局变量来控制双击时不让他展开和收缩就达到效果了
private Expanding:Boolean; procedure SetExpanding(var IsExpanding :Boolean); { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.SetExpanding(var IsExpanding :Boolean);var P: TPoint;begin P := TreeView1.ScreenToClient(Mouse.CursorPos); if (htOnLabel in TreeView1.GetHitTestInfoAt(P.X, P.Y)) and (Expanding) then begin Expanding := False; IsExpanding := false; end;end;procedure TForm1.TreeView1DblClick(Sender: TObject);begin Expanding := True;end;procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode; var AllowExpansion: Boolean);begin SetExpanding(AllowExpansion);end;procedure TForm1.TreeView1Collapsing(Sender: TObject; Node: TTreeNode; var AllowCollapse: Boolean);begin SetExpanding(AllowCollapse);end;