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

如何限制TTreeView元件的各個節點名稱不可重複?

答題得分者是:FrederickPau
flyup
資深會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-01 00:45:22 IP:61.225.xxx.xxx 未訂閱
如何限制TTreeView元件的各個節點名稱不可重複? 例如寫一個檢查程式,只要新增名稱與某節點名稱相同時,就出現重新更名警告訊息!
FrederickPau
資深會員


發表:4
回覆:161
積分:268
註冊:2002-11-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-01 02:17:07 IP:61.228.xxx.xxx 未訂閱
我的方法是 ... 1. 新增 Node (I). 在 AddNode 的時候, 先取得你要定在 TreeNode 的名稱 (e.g. TEdit.Text)    2. Update Node 的名稱 (I). 在 TreeView.Editing 時, 先取得目前 TreeNode 的名稱 (II).在 TreeView.Edited 時, 比對所有的 TreeNode 的名稱, 如果重覆, 就將名稱還原成 (I) 取得的文字    下面是我的範例, 希望對你有幫助    
type
  TForm1 = class(TForm)
    ...
  private
    sth: TStringStream;
    str, temp: String;
    function CheckRepeated( Sender: TObject; InStr: String): Boolean;
  end;
......
function TForm1.CheckRepeated( Sender: TObject; InStr: String): Boolean;
begin
    sth := TStringStream.Create( str);
    (Sender as TTreeView).SaveToStream( sth);
    if Pos( InStr, sth.DataString) > 0 then
        Result := True;
    sth.Free;
end;    procedure TForm1.TreeView1Editing(Sender: TObject; Node: TTreeNode;
  var AllowEdit: Boolean);
begin
    temp := Node.Text;
end;    procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
  var S: String);
begin
    if CheckRepeated( Sender, S) then
    begin
        S := temp;
        ShowMessage( 'Repeated');
    end;
end;    procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
    (Sender as TTreeView).Selected.EditText;
end;    procedure TForm1.btAddNodeClick(Sender: TObject);
begin
    if CheckRepeated( (Sender as TTreeView), Edit1.Text) then
        ShowMessage( 'Repeated')
    else
        TreeView1.Items.Add( (Sender as TTreeView).Selected, Edit1.Text);
end;
上面的 CheckRepeated function 是我想出來, 不用 loop 去搜尋 TreeView 的小方法, 不知道這樣好不好, 希望各位多給些意見, 謝謝. 發表人 - FrederickPau 於 2002/12/01 02:18:11
william
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-01 11:44:19 IP:210.3.xxx.xxx 未訂閱
Maybe you can use a TStringList to keep track of all node names since you can search for existing items in a string list easily.
flyup
資深會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-01 21:09:07 IP:61.225.xxx.xxx 未訂閱
Thank FrederickPau to advise with william!
系統時間:2024-07-04 23:34:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!