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

請教VirtualTrees的問題

答題得分者是:ddy
qqmts0726
一般會員


發表:11
回覆:6
積分:8
註冊:2008-06-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-06-05 17:00:47 IP:114.136.xxx.xxx 訂閱
 Dear All:

1.我已經安裝好 ThemeManagerSetup 與 VirtualTreeviewSetup。

2.我在頁面上 新增 VirtualStringTree1 與 button。

3.在一個button加上下面的內容

VirtualStringTree1->Clear();
VirtualStringTree1->BeginUpdate();
TVirtualNode* Node = VirtualStringTree1->AddChild(BasisNode, NULL);
VirtualStringTree1->GetNodeData(Node);
VirtualStringTree1->EndUpdate();

4.編譯時無發生任何錯誤警訊。

5.運行時,按下button
執行到GetNodeData這個函式時,發生
『NodeDatasize not initialized』的錯誤。


不知道有沒有人遇到相同的問題。

我的開發環境 BCB 6.0 SP4

我在網路上查詢了好久 好像都沒有人遇到類似的問題ˇˇ

感覺真怪異~
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-06-08 11:35:33 IP:122.147.xxx.xxx 訂閱
看訊息以及看你的code 我想你是觀念上不清楚
未見你告訴VirtualStringTree 要多大的儲存空間

使用VirtualStringTree 在觀念上與Treeview 有很大的差異,你要自己配置空間儲存節點結構資訊以及讓VirtualStringTree 配置空間
這部份是關鍵
VTree->ChildCount[BasisNode] ; //增加一個node
Node = VTree->GetLastNoInit(BasisNode,true); //取得增加後的node


參考看看我寫的…

[code delphi]
TVirtualNode* __fastcall TfrmSiteMgmt::AddNode(TVirtualStringTree *VTree,TVirtualNode* BasisNode,void *userData,TCheckType chktype)
{
TVirtualNode *Node;

VTree->ChildCount[BasisNode] ; //增加一個node
Node = VTree->GetLastNoInit(BasisNode,true); //取得增加後的node
if (Node)
{
Node->CheckType = chktype;
VTree->NodeHeight[Node] = 28;
TDeviceInfo_S *Data = (TDeviceInfo_S*)VTree->GetNodeData(Node);
TDeviceInfo_S *srcData = (TDeviceInfo_S*) userData;

Data->DeviceType = srcData->DeviceType;
Data->Name = srcData->Name;
Data->IPAddress = srcData->IPAddress;
Data->Channels = srcData->Channels;
Data->ParentNode = BasisNode;
Data->DetailStructPoint = srcData->DetailStructPoint;
}

VTree->Refresh();
return(Node);
}
[/code]

===================引 用 qqmts0726 文 章===================
Dear All:

1.我已經安裝好 ThemeManagerSetup 與 VirtualTreeviewSetup。

2.我在頁面上 新增 VirtualStringTree1 與 button。

3.在一個button加上下面的內容

VirtualStringTree1->Clear();
VirtualStringTree1->BeginUpdate();
TVirtualNode* Node = VirtualStringTree1->AddChild(BasisNode, NULL);
VirtualStringTree1->GetNodeData(Node);
VirtualStringTree1->EndUpdate();

4.編譯時無發生任何錯誤警訊。

5.運行時,按下button
執行到GetNodeData這個函式時,發生
『NodeDatasize not initialized』的錯誤。


不知道有沒有人遇到相同的問題。

我的開發環境 BCB 6.0 SP4

我在網路上查詢了好久 好像都沒有人遇到類似的問題ˇˇ

感覺真怪異~
編輯記錄
ddy 重新編輯於 2010-06-08 11:40:25, 註解 無‧
qqmts0726
一般會員


發表:11
回覆:6
積分:8
註冊:2008-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-06-09 07:47:11 IP:111.70.xxx.xxx 訂閱
 看起來確實是因為沒有定義結構大小的關係。。

不過 Virtual trees的範例還真的好少 ˇˇ

感謝大大地回覆呀

順安
系統時間:2024-04-26 6:59:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!