請教如何實作Treeview 於Delphi 3層式架構中 |
尚未結案
|
airomeo
一般會員 發表:1 回覆:4 積分:1 註冊:2005-03-08 發送簡訊給我 |
您好!我想請問...
dmView.cdsTemp 為一個tclientdataset...
但我在實作的時候,以如下程式來看,只能展一層,
只要一遇到dmView.cdsTemp.Free;這一行便會發生錯誤...
若把dmView.cdsTemp.Free; 給mark 起來,便可執行成功但只能展一層...
可否請您給個解答... 萬分感謝您 function AddChildNode(node: TTreeNode; id: string; stype: string): TTreeNode;
var
strSQL: String;
begin
Result := frmNode.TreeNodePage.Items.AddChild(node, stype);
strSQL:='select * from node_list t WHERE parentid = ''' id ''' order by parentid,nodetype desc,nodetext';
tool_sqlToCDS(strSQL ,dmView.cdsTemp); While not dmView.cdsTemp.Eof do
begin
AddChildNode(Result, dmView.cdsTemp.FieldByName('nodeid').AsString, dmView.cdsTemp.FieldByName('nodetext').AsString);
dmView.cdsTemp.Next;
end;
dmView.cdsTemp.Free;
end; procedure tool_SQLtoCDS(SQL:string; cds:Tclientdataset);
begin
with dmView.cdsTemp do
begin
close;
data:=dmView.midasview.AppServer.query(SQL);
open;
first;
cds.Data:=data;
end;
end; PS.已參考過所有相關於Treeview於Delphi中的文章
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言:============================ 为什么经过多年以后,得失的过程如此冷漠 ============================function AddChildNode(node: TTreeNode; id: string; stype: string): TTreeNode; var strSQL: String; begin Result := frmNode.TreeNodePage.Items.AddChild(node, stype); strSQL:='select * from node_list t WHERE parentid = ''' id ''' order by parentid,nodetype desc,nodetext'; tool_sqlToCDS(strSQL ,dmView.cdsTemp); While not dmView.cdsTemp.Eof do begin AddChildNode(Result, dmView.cdsTemp.FieldByName('nodeid').AsString, dmView.cdsTemp.FieldByName('nodetext').AsString); dmView.cdsTemp.Next; end; |
airomeo
一般會員 發表:1 回覆:4 積分:1 註冊:2005-03-08 發送簡訊給我 |
經大大您建議後,測試發現
會有一個錯誤訊息
cdsTemp : cannot perform this operation on a closed dataset
引言:引言:============================ 为什么经过多年以后,得失的过程如此冷漠 ============================function AddChildNode(node: TTreeNode; id: string; stype: string): TTreeNode; var strSQL: String; begin Result := frmNode.TreeNodePage.Items.AddChild(node, stype); strSQL:='select * from node_list t WHERE parentid = ''' id ''' order by parentid,nodetype desc,nodetext'; tool_sqlToCDS(strSQL ,dmView.cdsTemp); While not dmView.cdsTemp.Eof do begin AddChildNode(Result, dmView.cdsTemp.FieldByName('nodeid').AsString, dmView.cdsTemp.FieldByName('nodetext').AsString); dmView.cdsTemp.Next; end; |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
function AddChildNode(node: TTreeNode; id: string; stype: string): TTreeNode; var strSQL: String; begin Result := frmNode.TreeNodePage.Items.AddChild(node, stype); strSQL:='select * from node_list t WHERE parentid = ''' id ''' order by parentid,nodetype desc,nodetext'; tool_sqlToCDS(strSQL ,dmView.cdsTemp); dmView.cdsTemp.open; //再加上此句试试,供参考 While not dmView.cdsTemp.Eof do begin AddChildNode(Result, dmView.cdsTemp.FieldByName('nodeid').AsString, dmView.cdsTemp.FieldByName('nodetext').AsString); dmView.cdsTemp.Next; end;============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 - deity 於 2005/08/22 12:50:07 |
No-where
一般會員 發表:31 回覆:53 積分:16 註冊:2002-09-05 發送簡訊給我 |
|
airomeo
一般會員 發表:1 回覆:4 積分:1 註冊:2005-03-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |