TCustomTreeView::OnChanging事件如何使用?
我正在写一个程序,需要判断当树节点的焦点发生转移时,判断是否对其进行了修改,应该是使用OnChanging事件吧?但是该事件的参数中的Node是怎么一会事,这个事件程序如何写,我不知道,请各位帮帮忙。 问题点数:44、回复次数:8Top
1 楼HEROIN(HEROIN)回复于 2001-07-30 18:19:56 得分 0
Node是你当前选中的节点(即焦点所在)
OnChanging应该发生在焦点转移之后
你应该在OnEdited事件里写
Top
2 楼zhyq()回复于 2001-07-31 09:14:59 得分 0
OnEdited事件是说当node的Text发生变化之后触发,但是我这里不一定只是Text发生变化,还可能是node的Data发生变化,OnEdited好像不行啊Top
3 楼zhyq()回复于 2001-07-31 09:39:37 得分 0
问题换一个提法:就是如何在TreeView中从node1跳到node2的过程中,怎样判断node1的Data发生了变化?(如果有改变的话) 各路的朋友,给个提示撒!Top
4 楼HEROIN(HEROIN)回复于 2001-07-31 09:56:03 得分 0
既然是Data,除非你编程实现,或者Data指向了另外一个控件,否则用户如何能改得了?
如果Data指向了另外一个控件,在这个控件的OnChange里写吧
Top
5 楼zhyq()回复于 2001-07-31 10:04:59 得分 0
回复HEROIN(HEROIN):确实如你所说,我的Data指向了另外几个控件,如果在每个控件的OnChange里写,是不是很不好,我想用一个或逻辑来判断node1是否发生了变化其不更好。
我现在是不知道如何得到node1,因为在OnChanging中的参数node是目的节点,即node2 Top
6 楼ExitWindows(void)回复于 2001-07-31 10:19:47 得分 0
upTop
7 楼HEROIN(HEROIN)回复于 2001-07-31 12:57:34 得分 44
1.并不用再每个控件里都写OnChange,只需将他们的OnChange设为同一函数即可
2。使用变量 TTreeNode* PrevNode 来记录前一个节点。在TreeView的OnChang中:
if(PrevNode->Data->Change) DoSomeThing();
PrevNodee=Node;
当然,PrevNode的最初值要设定好
Top
8 楼zhyq()回复于 2001-07-31 15:18:38 得分 0
我已经知道怎么做了,在OnChanging事件中有一个参数TObject* Sender,在此它代表控件TreeView,记录node1的语句如下:
node1=((TTreeView*)Sender)->Selected;
然后判断node1的Data所对应的各控件的Modified属性即可
至于分嘛,HEROIN(HEROIN),我还是给你了,希望我们以后继续讨论Top




