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

TreeView的問題

尚未結案
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-04 10:10:49 IP:61.63.xxx.xxx 未訂閱
請問各位前輩: 如何算出TreeView內ㄉ個數... 這樣寫會算出父系跟兒子TreeView2.Items.Count 我只要算出父系就好ㄌ,請問要如何寫ㄚ~~~~感謝^o^ 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-04 10:17:35 IP:147.8.xxx.xxx 未訂閱
引言:請問各位前輩: 如何算出TreeView內ㄉ個數... 這樣寫會算出父系跟兒子TreeView2.Items.Count 我只要算出父系就好ㄌ,請問要如何寫ㄚ~~~~感謝^o^
What do you mean by 只要算出父系? BTW, TTreeNode.Level is the number of level (i.e. number of parent node) for a tree node.
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-04 10:54:26 IP:61.63.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- What do you mean by 只要算出父系? BTW, TTreeNode.Level is the number of level (i.e. number of parent node) for a tree node. -------------------------------------------------------------------------------- 算出父系就是 aaa ccc ccc bbb ddd ddd ccc 我要算出aaa bbb ccc總數是3 謝謝 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-04 10:56:39 IP:61.63.xxx.xxx 未訂閱
引言: -------------------------------------------------------------------------------- What do you mean by 只要算出父系? BTW, TTreeNode.Level is the number of level (i.e. number of parent node) for a tree node. -------------------------------------------------------------------------------- 算出父系就是 aaa sss sss bbb ddd ddd ccc 我要算出aaa bbb ccc總數是3 謝謝 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-04 11:27:39 IP:61.216.xxx.xxx 未訂閱
求treeview中一個子樹的深度和節點數量的方法和程式碼    方法如下: procedure TForm1.Button2Click(Sender: TObject); type    Nodesum=record      Node:TTreenode; //節點      Layer:Integer;  //所在層      end; var   a:array of Nodesum;   Node:TTreenode;   Depth,i,j:Integer; begin   Depth:=0;   i:=0;   j:=0;   Listbox1.Items.Clear;   Setlength(a,Treeview1.Items.Count);   Node:=Treeview1.Selected;  //使頂節點為您所選擇的節點   a[i].Node:=Node;   a[i].Layer:=0;   while a[i].Node< >  nil do     begin         Node:=a[i].Node.Getfirstchild;//取其第一個子節點         while Node < >  nil do            begin              j:=j+1;              a[j].Node:=Node;              a[j].Layer:=a[i].Layer+1; //此節點所在的層數              Node:=Node.GetNextSibling;            end;//如此循環,以取出此層所有節點     i:=i+1;   end;   i:=0;  while a[i].node< > nil  do      begin       if a[i].Layer> Depth then          Depth:=a[i].Layer;//求最大的層數,即子樹深度       listbox1.Items.Add(a[i].Node.Text);       i:=i+1;      end;  If a[0].Node< > nil  then   begin     listbox1.Items.Add('子樹節點共有: '+inttostr(i-1));//不含最上層節點     listbox1.Items.Add('了樹深度為: '+inttostr(Depth));   end  else     listbox1.Items.Add('您沒選擇任何節點');//如果沒選擇任何節點則顯示此句     end;    
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-04 12:02:02 IP:147.8.xxx.xxx 未訂閱
Not tested. But I think you should have an idea on how to do it...
function GetCount(ANode: TTreeNode): integer;
var
    PNode,CNode: TTreeNode;
begin
    Result := 0;
    if Assigned(ANode) then begin
        PNode := ANode.Parent;
        if Assigned(PNode) then begin
            PNode := PNode.Parent;
            if Assigned(PNode) then begin
                CNode := PNode.GetFirstChild;
                while Assigned(CNode) do begin
                    inc(Result);
                    CNode := PNode.GetNextChild(CNode);
                end; end
            else
                inc(Result);
        end;
    end;
end;
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-04 12:21:58 IP:61.216.xxx.xxx 未訂閱
The example of william is good to use!    
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-04 15:18:40 IP:61.63.xxx.xxx 未訂閱
會有錯誤ㄝ!!! 我ㄉ程式 var TN1: TTreeNode; ..... iMsgform.Label4.Caption := '您有' IntToStr(GetCount(TN1)) ' 封駁回文件'; 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-04 15:42:39 IP:147.8.xxx.xxx 未訂閱
引言:會有錯誤ㄝ!!! 我ㄉ程式 var TN1: TTreeNode; ..... iMsgform.Label4.Caption := '您有' IntToStr(GetCount(TN1)) ' 封駁回文件';
What is the error? Is it syntax error or logical error?
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-04 16:49:42 IP:61.63.xxx.xxx 未訂閱
我ㄉ程式 procedure TiAgent.TrayIcon1DblClick(Sender: TObject); var TN1: TTreeNode; begin Application.CreateForm(TiMsgform, iMsgform); iMsgform.Show; iMsgform.Label4.Caption := '您有' IntToStr(GetCount(TN1)) ' 封駁回文件'; 錯誤訊息之後會停在 procedure TTrayIcon.DoDblClick(Sender: TObject); begin //procedure TTrayIcon.DoDblClick if Assigned(FOnDblClick) then FOnDblClick(Sender); end; //procedure TTrayIcon.DoDblClick 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-04 17:00:02 IP:147.8.xxx.xxx 未訂閱
引言: 我ㄉ程式
procedure TiAgent.TrayIcon1DblClick(Sender: TObject);
var
  TN1: TTreeNode;
begin
    
    Application.CreateForm(TiMsgform, iMsgform);
    iMsgform.Show;
        iMsgform.Label4.Caption := '您有'   IntToStr(GetCount(TN1))   ' 封駁回文件';
錯誤訊息之後會停在
procedure TTrayIcon.DoDblClick(Sender: TObject);
begin //procedure TTrayIcon.DoDblClick
  if Assigned(FOnDblClick) then
    FOnDblClick(Sender);
end; //procedure TTrayIcon.DoDblClick
I think you may have problem in the logic of your program... TN1 is a local variable (NOT initialized), it could be nil (GetCount will return 0) or other random values (access violation?).
delphi
初階會員


發表:52
回覆:64
積分:38
註冊:2002-05-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-05 10:27:34 IP:61.63.xxx.xxx 未訂閱
我已經解決ㄌ謝謝大大ㄉ幫忙 我ㄉ方法 var k: Integer; inodeSum: integer; begin inodeSum := 0; for k := 0 to TreeView2.Items.Count - 1 do begin if treeview2.Items.Item[k].Level = 0 then inc(inodeSum); end; iMsgform.Label4.Caption := '您有' IntToStr(inodeSum) ' 封駁回文件'; evd; 逃避不一定躲得過 面對不一定最難受 孤單不一定不快樂 得到不一定能長久 失去不一定不再有 轉身不一定最軟弱 別急著說別無選擇 別以為世上只有對與錯 許多事情的答案都不是只有一個 所以我們永遠有路可以走 你能找個理由難過 也一定能找到快樂 懂得放心的人找到輕鬆 懂得遺忘的人找到自由 懂得關懷的人找到朋友
系統時間:2024-05-03 12:44:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!