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

请Fishman帮我看一下这个TreeView的排序得怎么实现?

尚未結案
xiaoqlj
一般會員


發表:10
回覆:19
積分:5
註冊:2004-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-16 13:02:13 IP:218.0.xxx.xxx 未訂閱
Fishman,你好! 有一棵树如下: -888 -G -F -E -D -C -B -A -XIAOQLJ -FISHMAN -999 -1 -2 我的要求是这样的。每个节点都有一个状态标识flag,其值为“0”或“1”。 我单击按钮后,flag=1的,排在最上面,flag=0的排在下面。然后,节点又要按拼音序,得怎么做?这里假设:节点XIAOQLJ、FISHMAN的flag=1,其它为0,则得到结果如下: -888 -FISHMAN //XIAOQLJ和FISHMAN,因为其flag=1,所以排在上面;又因为按 -XIAOQLJ //拼音排序,所以FISHMAN比XIAOQLJ排在前面。 -A -B -C //A到G这些节点因为flag=0,所以排在下面,并按拼音排序。 -D -E -F -G -999 -1 -2 说明:其flag的值,我是存在记录集里的。 如:PMyRecord(TreeView.Selected.Data)^.flag 就存了其状态的标识1或0。 { type PMyRecord =^TMyRecord; TMyRecord =record flag :integer; end; }
------
http://www.nbye.net
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-16 14:04:20 IP:210.65.xxx.xxx 未訂閱
Hi xiaoqlj ,    試試看是不是這樣,一樣是自行寫 OnCompare 事件
procedure TForm1.TreeView1Compare(Sender: TObject; Node1, Node2: TTreeNode;
  Data: Integer; var Compare: Integer);
begin
  if PMyRec(Node1.Data)^.FLAG > PMyRec(Node2.Data)^.FLAG then
    begin
      Compare := -1
    end
  else if PMyRec(Node1.Data)^.FLAG = PMyRec(Node2.Data)^.FLAG then
    begin
        if Node1.Text < Node2.Text then
          Compare := -1
        else if Node1.Text = Node2.Text then
          Compare := 0
        else if Node1.Text > Node2.Text then
          Compare := 1;
    end
  else if PMyRec(Node1.Data)^.FLAG < PMyRec(Node2.Data)^.FLAG then
    begin
      Compare := 1;
    end;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
xiaoqlj
一般會員


發表:10
回覆:19
積分:5
註冊:2004-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-16 15:02:29 IP:218.0.xxx.xxx 未訂閱
朋友,我有点不懂。你上次还有这件事件,如何 procedure TfrmNetChat.Button1Click(Sender: TObject); begin if TreeView.Selected <> Nil then TreeView.Selected.AlphaSort(true); //是不是要排序都得用AlphaSort吗? end;
------
http://www.nbye.net
xiaoqlj
一般會員


發表:10
回覆:19
積分:5
註冊:2004-05-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-16 15:33:20 IP:218.0.xxx.xxx 未訂閱
朋友,谢谢,可以了。 我要好好理解一下,呵呵。对Compare的用法了解不够透。 谢谢你的帮助。
------
http://www.nbye.net
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-16 15:34:42 IP:210.65.xxx.xxx 未訂閱
Hi xiaoqlj,    與上次一樣,需有程式碼觸發排序,因為 TreeView.SortType 為 stNone,故程式不會自動觸發排序,需自行寫程式碼觸發(相關說明請見 Delphi 的 Help)    把 TreeView 的 OnCompare 事件 Replace 為上述程式碼,以達到你說的功能。     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-06-29 17:06:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!