全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1272
推到 Plurk!
推到 Facebook!

有關TreeView的問題???

尚未結案
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-02 10:56:33 IP:218.164.xxx.xxx 未訂閱
假設我有資料檔,有以下2個欄位,請問要如何利用TreeView,以Tree的方式表現出來(如下圖)...    這個問題之前我已有問過,請參考... http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39765    但...若TreeID超過10,就會有BUG出現(TreeNode會加錯地方)... 請問有比較好的解決方法嗎?煩請各位高手回答一下吧!!謝謝!!    
[TreeID] [TreeName]
=======================
1        ROOT
1,1         A
1,1,1         A1
1,10        J
1,1,2         A2
1,1,3         A3
1,2         B
1,2,1         B1
1,3         C
1,3,1         C1
1,4        D
1,5        E
1,6        F
1,7        G
1,8        H
1,9        I
========================    TreeView產生結果:
ROOT
|-------AA
|        |
|        |-------A1
|        |
|         |-------A2
|        |
|         |-------A3
|
|-------BB
|        |
|         |-------B1
|
|-------C
|
 -------C1
|
|-------D
|
|-------E
|
|-------F
|
|-------I
|
|-------J
minjiu
中階會員


發表:27
回覆:119
積分:69
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-02 10:59:40 IP:218.164.xxx.xxx 未訂閱
版主...不小心按了2次...請您把此篇刪除吧...謝謝!!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-02 22:16:34 IP:218.32.xxx.xxx 未訂閱
minjiu 你好:    看過你前一篇, 你將","吃掉後, 會造成後續排序更為困難...    既然你已用 TStringList 先行處理 Data, 那建議你用    TStringList.CustomSort 先將資料排好, 再加入 TreeView.    若對 CustomSort 不熟, 可參考 : http://delphi.ktop.com.tw/topic.php?TOPIC_ID=38370    TreeID 帶著 "," 做 CustomSort 時, 可運用 IdGlobal.pas 中的    Fetch Function 依次取出 "," 前之數字字串, 轉為 Integer     (用 StrTointDef Function可能比較好用), 以決定 Item 的先後.    參考看看 : use 加 IdGlobal, Math 
function MySort(List: TStringList; Index1, Index2: Integer): Integer;
var s1,s2:string;
begin
  s1 := List[Index1];
  s2 := List[Index2];
  repeat
    Result := CompareValue(StrToIntDef(Fetch(s1,','),0),
                           StrToIntDef(Fetch(s2,','),0));
  until ((s1='') and (s2='')) or (Result<>0)
end;    procedure TForm1.Button1Click(Sender: TObject);
var t:TStringList;
begin
 t:=TStringList.Create;
 try
   t.AddStrings(memo1.lines);
   memo1.Lines.Clear;
   t.CustomSort(@MySort);
 finally
   memo1.lines.AddStrings(t);
   t.Free;
 end;
end;
發表人 - Mickey 於 2003/12/02 22:37:28
系統時間:2024-11-23 11:17:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!