如何限制TTreeView元件的各個節點名稱不可重複? |
答題得分者是:FrederickPau
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
FrederickPau
資深會員 發表:4 回覆:161 積分:268 註冊:2002-11-04 發送簡訊給我 |
我的方法是 ...
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 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |