怎么知道点的是 +号 还是标题 TreeView

大悟还俗 2012-05-06 09:17:17


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;

...全文
178 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
大悟还俗 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
还有这么变态的要求?
[/Quote]
还有这么变态的说法?


[Quote=引用 13 楼 的回复:]
看来,我得出手了
TreeView有展开和收缩的事件,定义一个全局变量来控制双击时不让他展开和收缩就达到效果了


Delphi(Pascal) code

private
Expanding:Boolean;
procedure SetExpanding(var IsExpanding :Boolean);
{ Private declaration……
[/Quote]

这个完全OK



好了,结贴

shuihan20e 2012-05-09
  • 打赏
  • 举报
回复
还有这么变态的要求?
大悟还俗 2012-05-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
看来,我得出手了
TreeView有展开和收缩的事件,定义一个全局变量来控制双击时不让他展开和收缩就达到效果了


Delphi(Pascal) code

private
Expanding:Boolean;
procedure SetExpanding(var IsExpanding :Boolean);
{ Private declaration……
[/Quote]

明天试一下你的方法
boyxhh 2012-05-08
  • 打赏
  • 举报
回复
TreeView 的展开属性,设置一下不行吗?

没太看懂.
大悟还俗 2012-05-07
  • 打赏
  • 举报
回复


怎么展开和收缩当前的节点啊???? 怎么就没人回答了呢?????、
大悟还俗 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
我们给你的方法,你可以试试吧
[/Quote]

你的只适用于已知的 Node.Text

可是我的是动态加载,有几百个 Node.Text ,而且也不知道 Node.Text 会和谁对比。不可能让我写
几百个 IF THEN吧
山东蓝鸟贵薪 2012-05-07
  • 打赏
  • 举报
回复
我们给你的方法,你可以试试吧
kaikai_kk 2012-05-07
  • 打赏
  • 举报
回复
看来,我得出手了
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;
山东蓝鸟贵薪 2012-05-07
  • 打赏
  • 举报
回复
呵呵,我只研究过已知的
我也在你的帖子补习一下
大悟还俗 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
Delphi(Pascal) code


procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ClickInfo:THitTests;
begin
ClickInfo:=TreeView1.GetHi……
[/Quote]

可这是应该怎么控制展开还是不展开呢???
kaikai_kk 2012-05-07
  • 打赏
  • 举报
回复
楼上正确:用GetHitTestInfoAt,返回值是THitTests集合,有很多值:

THitTest = (htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon,
htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight);
THitTests = set of THitTest;

自己看看那种符合的...就用吧
bdmh 2012-05-07
  • 打赏
  • 举报
回复

procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ClickInfo:THitTests;
begin
ClickInfo:=TreeView1.GetHitTestInfoAt(X,Y);
if htOnItem in ClickInfo then
ShowMessage('你刚才点了标题')
else if htOnButton in ClickInfo then
ShowMessage('你刚才点了加号');

end;
大悟还俗 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:
本人想这样实现。 当点击+号时可以收缩和展开。当双击标题时就提示。不展开也不收缩

这个网上查下就有结果了
[/Quote]

我查了,没有结果,所以才来问的
7年 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
本人想这样实现。 当点击+号时可以收缩和展开。当双击标题时就提示。不展开也不收缩
[/Quote]
这个网上查下就有结果了
大悟还俗 2012-05-07
  • 打赏
  • 举报
回复
本人想这样实现。 当点击+号时可以收缩和展开。当双击标题时就提示。不展开也不收缩
山东蓝鸟贵薪 2012-05-06
  • 打赏
  • 举报
回复
我自己研究的哟

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;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧