線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1548
推到 Plurk!
推到 Facebook!

如何为TTreeNode 指定一个integer值?

答題得分者是:sos_admin
todayZhang
一般會員


發表:9
回覆:14
積分:4
註冊:2003-05-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-27 15:11:16 IP:218.13.xxx.xxx 未訂閱
以前编码都是使用TTreeNode.Data,在Delphi7中使用TTreeNode.Data系统给出警告信息。 而实际我们只需要让每个TTreeNode保存一个Integer数据,就象是每个TTreeNode都具有一个Text一样,应如何做哪? 發表人 - todayzhang 於 2003/07/27 15:13:00
sos_admin
版主


發表:121
回覆:697
積分:768
註冊:2003-07-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-27 16:21:34 IP:61.155.xxx.xxx 未訂閱
可以通过使用class重新增加TTreeNode的属性,比如增加了个特text的string类型的属性;这样您就可以使用了!供参考! //新的TTreeNode〉〉TmyTreeNode unit Unit2; interface uses ComCtrls; type TmyTreeNode=class(TTreeNode) private mytext:string; procedure settext(value:string); public property text: string read mytext write Settext; constructor Create(aowner:ttreenodes); end; implementation constructor TmyTreeNode.Create(aowner:ttreenodes); begin mytext:=''; inherited create(aowner); end; procedure TmyTreeNode.settext(value:string); begin mytext:=value; end; end. //使用 uses Unit2; -------------------------- var aa:TmyTreeNode; begin aa:=TmyTreeNode.Create(nil); aa.text:='aa'; showmessage(aa.text); end;
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-27 16:24:56 IP:61.62.xxx.xxx 未訂閱
hi, 請參考這篇: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28046 利用 pInteger = ^Integer; 來當作放入 Data 的指標資料. 記得要利用 New, Dispose 來進行記憶體配置及釋放!
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-28 08:18:14 IP:218.163.xxx.xxx 未訂閱
此處 Delphi7和Delphi6並無差異 TTreenode.data為一pointer, pointer其實只是一個integer占有4byte 故存integer在其內不須配置或Release Memory, 只要適度轉型(Cast)    例:
for i:=0 to Treeview1.items.count-1 do
  Treeview1.items[i].data:=pointer(i); //將i 塞入data中    於Treeview1Click
if Treeview1.selected <> nil then
  showmessage(inttostr(integer(Treeview1.selected.data)));
[NOTE]其實,實數的Single也是4byte, 故適度轉型一樣可直接放入 若要塞入其他資料型態就要進行記憶體配置及釋放了
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-28 09:21:41 IP:218.16.xxx.xxx 未訂閱
引言: 而r我言u需要X每枚TreeNode保存一杷nteger觛u
若你不需要使用 TTreeView.StateImages 最方便的旁門方法是使用 TTreeNode.StateIndex 來存放這個 Integer。 不過在你的 Code 要清楚表明用途,這樣以後回來維護才不會太大問題。 當然,始終是使用 Data 最正統。
todayZhang
一般會員


發表:9
回覆:14
積分:4
註冊:2003-05-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-28 11:09:03 IP:218.13.xxx.xxx 未訂閱
谢谢!非常感谢! 以上4位高手分别给出了4种方法,都可以解决这个问题,都对我有很大的帮助,让我难于取舍! 只好按响应时间的顺序了。 再次感谢几位!
系統時間:2024-11-23 18:31:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!