你在Form1单元中引用Form2,在Form2单元中引用Form3,在Form3单元中引用Form2,然后
在Form1中创建Form2这一个不用我写了吧
Form2中创建Form3也不用写了吧
Form3的OnClose中写入:
Form2.Close;
Close;就可以了
在Form1中创建Form2这一个不用我写了吧
Form2中创建Form3也不用写了吧
Form3的OnClose中写入:
Form2.Close;
Close;就可以了
解决方案 »
- 请教如何实现dbgridEh中各列的下拉筛选
- Toolbar上控件排列问题
- 如何得到QRDBTEXT得值
- 别在埋怨自已怀才不遇
- 字段onchange事件的简单问题。
- 编译时出现的一个小错误
- 寻求Delphi6 Update 2# pack
- 用dm1.ADOTable2.filter:= '商品类型 ="音箱"';语句为什么总是得到一个空记录,我的数据库里有符合要求的记录,
- ?在应用程序中怎么样设置应用程序所使用的字体(字库)路径.在delphi里可以设置memo的字体.但是用的是font目录下的字体.我要让memo控件用当前目录下的某个ttf文件来输文本,分数没问题
- 小弟准备攻高程,哪位仁兄推荐一些好用的资料
- 在delphi中怎么调用tc编译环境??
- 极其严重的错误!在线急等!!!!!!
procedure TForm2.Button1Click(Sender: TObject);
var
test2:TForm3;
begin
test2:=TForm3.Create(Application);
test2.show;
end;procedure TForm3.Button1Click(Sender: TObject);
begin
close;
Form2.Close ;
Form2.free;
end; 换个顺序就成了。不能先delete再close的。
另:在创建之前要怎么做
if NOT assigned(form1) then begin
form1 := tform1.create(...);
....
end;
在formclose里写上form1 := nil;
好象就这些了吧,你试试看
//Form2.Close ;--->>執行這一句報錯'報'access violation at address '
//Form2.Close ;--->>執行這一句報錯'報'access violation at address '
begin
Form2.Close ;
Form2.free; //这句可以不要,因为你创建Form2时已指定Application管理她的释放
close;end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”等';
I.Desire := '加不加分随你';
—————————————————————————————————
不對. 您試過沒有哇??
您試我的代嗎.
form1中的代嗎;
procedure TForm1.Button1Click(Sender: TObject);
var
test1:TForm2;
begin
test1:=TForm2.Create(Application);
test1.show;
end;form2中的代嗎;
procedure TForm2.Button1Click(Sender: TObject);
var
test2:TForm3;
begin
test2:=TForm3.Create(Application);
test2.show;
end;form3中的代嗎;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin Form2.Close ;
close;
end;
我點擊form3窗體的'關閉'系統菜單觸發此事件.但出錯.
報'access violation at address '. 您把您的代碼貼出來好嗎??
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
a:tform2;
begin
a:=tform2.Create(application);
a.openner:=self;
a.Show;
end;end.unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
openner:tform;
end;var
Form2: TForm2;implementationuses Unit3;{$R *.dfm}procedure TForm2.Button1Click(Sender: TObject);
var
a:tform3;
begin
a:=tform3.create(application);
a.openner:=self;
a.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
openner.Close;
end;end.unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm3 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
openner:tform;
end;var
Form3: TForm3;implementation{$R *.dfm}procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
openner.Close;
end;end.
var
a:tform3;
begin
a:=tform3.create(self);
a.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
tform(self.Owner).Close;
end;
利用create的owner就可以了。
Action:=caFree
就可以解决问题的了。
form3中就沒有關閉form2的代碼.
請您看清; form3關閉時,希望form2也關閉.怎麼寫 ???
您的第一次帖子好像不對. 第二次帖子好像正確.
看来你还真的是个新手,第一个也可以执行,第二个更可以执行了。
procedure TForm2.Button1Click(Sender: TObject);
var
a:tform3;
begin
a:=tform3.create(self);
a.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
tform(self.Owner).Close;
end;
这样可以了吧?
您的第一次帖子好像不對. 關掉第3個窗體,整個應用程序結束. a:=tform2.Create(application);
a.openner:=self; //form1中為什麼要這條語句??
//此openner與form2/form3中的openner有什麼聯係???
a.Show; 第二次帖子正確.
哈哈,小弟,第一个回答中的form1中的opener没用,去了就行了,关键是你要明白如何close打开自己的form.
哈哈,小弟,第一个回答中的form1中的opener没用,去了就行了,关键是你要明白如何close打开自己的form.
PostMessage(From2.Handle,WM_CLOSE ,0,0);
form3.showmodal;
close;
就搞定了;
人家的form是动态建立的,这样的话在form3中写form2.XX一定会出错的.
要不你试试?在project菜单中选options,在create form中把form2和form3去除auto create,然后再试试?
你試試form1中,注釋掉後出錯'access violation at address 'var
a:tform2;
begin
a:=tform2.Create(application);
//a.openner:=self; //注釋掉後出錯'access violation at address '
a.Show;
a:tform2;
begin
a:=tform2.Create(application);
a.ShowModal;
Close;
end;
呵呵,您还没有试,就知道我的这个不对?我觉的您应该试一试,看它到底对不对;
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
你不是一般的菜,是我见过的最菜的人!真的,I 服了 U!!!!!!!!!!
你告诉我你学了几天delphi了?
您試試; 注釋掉後出錯'access violation at address '
----------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
a:tform2;
begin
a:=tform2.Create(application);
//a.openner:=self; //注釋掉後出錯'access violation at address ' a.Show;
end;end.
----------------------------------------------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
openner:tform;
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit3;{$R *.DFM}procedure TForm2.Button1Click(Sender: TObject);
var
a:tform3;
begin
a:=tform3.create(application);
a.openner:=self;
a.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
openner.Close;
end;end.
-----------------------------------------------------------
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
openner:tform;
{ Public declarations }
end;var
Form3: TForm3;implementationuses Unit2 ;{$R *.DFM}procedure TForm3.Button1Click(Sender: TObject);
begin
close;end;procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
begin
action:=cafree;
openner.Close;
end;end;end.
我就不明白,你真的有这么笨吗?我真的只有初中学历,98年开始学delphi时也没有这么费劲啊?
算了不和你说了,你说哪有问题我就给你解决哪的问题吧,气死我了。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
a:tform2;
begin
a:=tform2.Create(application);
a.Show;
end;end.
----------------------------------------------------------
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit3;{$R *.DFM}procedure TForm2.Button1Click(Sender: TObject);
var
a:tform3;
begin
a:=tform3.create(application);
a.openner:=self;
a.Show;
end;procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;end.
-----------------------------------------------------------
unit Unit3;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
openner:tform;
{ Public declarations }
end;var
Form3: TForm3;implementationuses Unit2 ;{$R *.DFM}procedure TForm3.Button1Click(Sender: TObject);
begin
close;
end;procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
begin
action:=cafree;
openner.Close;
end;end;end.