TreeView使用問題 |
答題得分者是:william
|
xwing
初階會員 發表:17 回覆:56 積分:44 註冊:2002-12-31 發送簡訊給我 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
xwing
初階會員 發表:17 回覆:56 積分:44 註冊:2002-12-31 發送簡訊給我 |
引言: HELLO 在新增/刪除TreeView的node時,是否要特別注意什麼呢,我常常會發生存取錯誤 不知為什麼? 有時候一直連按新增 node的button時就會錯了@__@ ------------ 我是瘦鵝...在第二層和第三層新增若干node之後,再把第二層刪除,然後把視窗關掉 就發生存取違規了,有一次還整個當機@_@ http://home.pchome.com.tw/school/anothermail/err.zip var Form1: TForm1; node,node1,root:TTreeNode; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin node:=TTreeNode.Create(Frame2.TreeView1.Items); node1:=TTreeNode.Create(Frame2.TreeView1.Items); root:=TTreeNode.Create(Frame2.TreeView1.Items); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin node.Free; root.Free; node1.Free; end; procedure TForm1.AddButtonClick(Sender: TObject); begin node:=Frame2.TreeView1.Selected; node1:=Frame2.TreeView1.Items.AddChild(node,'未命名'); node1.ImageIndex:=2; node1.SelectedIndex:=2; end; procedure TForm1.killButton1Click(Sender: TObject); begin Frame2.TreeView1.Items.Delete(frame2.TreeView1.Selected); end; procedure TForm1.killButton2Click(Sender: TObject); begin node:=Frame2.TreeView1.Selected; if node<>nil then node.Delete; end; end. ------------ 我是瘦鵝...
------
------------ 我是瘦鵝... |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
I think you may has mis-used the global variables.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2, ComCtrls, StdCtrls; type TForm1 = class(TForm) Frame2: TFrame2; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var node,node1: TTreeNode; begin node:=Frame2.TreeView1.Selected; node1:=Frame2.TreeView1.Items.AddChild(node,'¥¼©R¦W'); node1.ImageIndex:=2; node1.SelectedIndex:=2; end; procedure TForm1.Button2Click(Sender: TObject); begin Button3Click(Sender); end; procedure TForm1.Button3Click(Sender: TObject); var node: TTreeNode; begin node:=Frame2.TreeView1.Selected; if node<>nil then node.Delete; end; end. |
xwing
初階會員 發表:17 回覆:56 積分:44 註冊:2002-12-31 發送簡訊給我 |
yes,you're right!
但是為何書上要宣告成global呢 @_@
另外 TTreeNode的變數在使用前不用先Create嗎
它不是一個指標~?
k:TTreeNode;
k:=TTreeNode.Create() <--不用嗎?
引言: I think you may has mis-used the global variables.------------ 我是瘦鵝...unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2, ComCtrls, StdCtrls; type TForm1 = class(TForm) Frame2: TFrame2; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var node,node1: TTreeNode; begin node:=Frame2.TreeView1.Selected; node1:=Frame2.TreeView1.Items.AddChild(node,'¥¼©R¦W'); node1.ImageIndex:=2; node1.SelectedIndex:=2; end; procedure TForm1.Button2Click(Sender: TObject); begin Button3Click(Sender); end; procedure TForm1.Button3Click(Sender: TObject); var node: TTreeNode; begin node:=Frame2.TreeView1.Selected; if node<>nil then node.Delete; end; end.
------
------------ 我是瘦鵝... |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |