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

請教為何無法將MainMenu解到TreeView的正確位置?

答題得分者是:speedup
tangkh
一般會員


發表:26
回覆:28
積分:10
註冊:2002-09-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-05 13:09:49 IP:202.39.xxx.xxx 未訂閱
以下是我的程式片段,請各位先進能否指正,感謝!     
 var MTN : array of TTreeNode;
procedure TForm1.MainmenuToTreeView;
  procedure MenuAct(m :TMainMenu);
    procedure DoRecursive(t :TMenuItem);
    var ii : integer;
    begin
      for ii := 0 to t.Count-1 do
      begin
        if ii = 0 then
        begin
        MTN[j 1] := TreeView1.Items.AddChild(MTN[j],t.Items[ii].Caption);
        end else
        MTN[j 1] := TreeView1.Items.Add(MTN[j],t.Items[ii].Caption);
        inc(j);
        DoRecursive(t.Items[ii]);
      end;
    end;
  var i :integer;
  begin
    if m.Items.Count > 0 then
    for i := 0 to M.Items.Count-1 do
    begin
      MTN[j 1] := TreeView1.Items.Add(MTN[0],m.Items.Items[i].Caption);
      inc(j);
      DoRecursive(m.Items[i]);
    end;
  end;    begin
  TreeView1.Items.Clear;
  setlength(MTN,50);
  J := 0;
  MenuAct(MainMenu1);
end;
發表人 - tangkh 於 2003/12/05 13:39:09 發表人 - tangkh 於 2003/12/05 13:51:43 發表人 - tangkh 於 2003/12/05 13:54:47
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-05 14:06:09 IP:210.243.xxx.xxx 未訂閱
好奇怪的寫法,為何要用MTN 來維持node紀錄?? 你的遞回執行後j會變更,所以可以加一個keepj來修正 我幫你做下面修正你試試,
引言: 以下是我的程式片段,請各位先進能否指正,感謝!
 var MTN : array of TTreeNode;
procedure TForm1.MainmenuToTreeView;
  procedure MenuAct(m :TMainMenu);
    procedure DoRecursive(t :TMenuItem);
    var ii : integer;
     keepj:integer;
    begin
      for ii := 0 to t.Count-1 do
      begin
        if ii = 0 then
        begin
        MTN[j 1] := TreeView1.Items.AddChild(MTN[j],t.Items[ii].Caption);
        end else
        MTN[j 1] := TreeView1.Items.Add(MTN[j],t.Items[ii].Caption);
        inc(j);keepj:= j;
        DoRecursive(t.Items[ii]);
        j:=keepj;
      end;
    end;
  var i :integer;
 keepj:integer;
  begin
    if m.Items.Count > 0 then
    for i := 0 to M.Items.Count-1 do
    begin
      MTN[j 1] := TreeView1.Items.Add(MTN[0],m.Items.Items[i].Caption);
      inc(j);keepj:= j;
      DoRecursive(m.Items[i]);
      j:=keepj;
    end;
  end;    begin
  TreeView1.Items.Clear;
  setlength(MTN,50);
  J := 0;
  MenuAct(MainMenu1);
end;
mmm...遞回的程式碼基本上都很簡潔,你似乎作太多不必要的控制 混心雜欲 棄修身~唉
------
唉~
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-05 14:11:53 IP:210.61.xxx.xxx 未訂閱
tangkh您好 只需局部修正就可
var MTN : array of TTreeNode;
  j:integer;
procedure TForm1.MainmenuToTreeView;
  procedure MenuAct(m :TMainMenu);
    procedure DoRecursive(t :TMenuItem);
    var ii : integer;
    begin
      for ii := 0 to t.Count-1 do
      begin
        if ii = 0 then
        begin
        MTN[j+1] := TreeView1.Items.AddChild(MTN[j],t.Items[ii].Caption);
        end else
        MTN[j+1] := TreeView1.Items.Add(MTN[j],t.Items[ii].Caption);
        inc(j);
        DoRecursive(t.Items[ii]);
      end;
    end;
  var i:Integer;
  begin
    if m.Items.Count > 0 then
    for i := 0 to M.Items.Count-1 do
    begin
      MTN[j+1] := TreeView1.Items.Add(MTN[0],m.Items.Items[i].Caption);
      inc(j);
      DoRecursive(m.Items[i]);
    end;
  end;    begin
  TreeView1.Items.Clear;
  setlength(MTN,50);
  J := 0;
  MenuAct(MainMenu1);
end;
系統時間:2024-06-18 21:22:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!