請教為何無法將MainMenu解到TreeView的正確位置? |
答題得分者是:speedup
|
tangkh
一般會員 發表:26 回覆:28 積分:10 註冊:2002-09-11 發送簡訊給我 |
以下是我的程式片段,請各位先進能否指正,感謝!
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 發送簡訊給我 |
好奇怪的寫法,為何要用MTN 來維持node紀錄??
你的遞回執行後j會變更,所以可以加一個keepj來修正
我幫你做下面修正你試試,
引言: 以下是我的程式片段,請各位先進能否指正,感謝!mmm...遞回的程式碼基本上都很簡潔,你似乎作太多不必要的控制 混心雜欲 棄修身~唉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;
------
唉~ |
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |