主窗体unit主窗体对象,通过主窗体打开一个子窗体.子窗体在implement里循环引用了主窗体unit,
子窗体做完事情后关闭, 想调用主窗体的close方法,让他关闭,可是没反应,主窗体关不掉,怎么办呀?
但调用他的其他方法就可以了,为什么呀?
子窗体做完事情后关闭, 想调用主窗体的close方法,让他关闭,可是没反应,主窗体关不掉,怎么办呀?
但调用他的其他方法就可以了,为什么呀?
解决方案 »
- 求Delphi7下Gdi+ 开发所需要用到的GDIPAPI, GDIPOBJ, GDIPUTIL等pas文件, 急!!!
- ◆◆◆为什么我在托盘图标上右击时我自己的菜单和系统的菜单一同出现,有时被其挡住?好困惑?
- 请问在ADOTable中的lookup字段能否用filter过滤?如何实现?此字段并不存在当前表的数据库的!
- 为什么我用IEhelper,地址栏会被3721抢先拦截了?
- 有人会用1stClass的fcoutlookBar的高手么????急急急急急!!!
- 谢谢哪个大侠能够帮我解决这个问题
- 在Delphi中调用API函数需要包含什么单元文件(EexcPragram,在线等待)
- 求Delphi日期操作函数:
- 学delphi应该怎样学?
- 如果您是DELPHI高手,如果您一度因技术转变迷茫,请进
- 问个简单的SQL日期问题
- delphi 为什么第三层form窗口关不了?
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TntStdCtrls, Grids,
TntGrids, YxAdvSGrid,UpdateOrderUnit;
type
TOrderNewBookForm = class(TForm)
///////////////////////
procedure TOrderNewBookForm.updateTntButtonClick(Sender: TObject);
var
updateOrderForm:TupdateOrderForm;
begin
updateOrderForm:=TupdateOrderForm.Create(self);
updateOrderForm.YxAdvSGrid1:=YxAdvSGrid1;
updateOrderForm.FormStyle := fsMDIChild;
updateOrderForm.Show;
end;
///子窗体的代码:
unit UpdateOrderUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TntStdCtrls, ExtCtrls, TntExtCtrls,
YxAdvSGrid,unitDataType,UnitPublic,UnitConst
type
TupdateOrderForm = class(TForm)
var
updateOrderForm: TupdateOrderForm;
issuingDataTab:TissuingDataTab;
implementation
uses
OrderNewBookUnit;
procedure TupdateOrderForm.refresh(issuingDataTab: TissuingDataTab);
var
row:Integer;
begin
OrderNewBookForm.Close;//就是这里执行了不起作用,
end;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus,Unit2;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N6661: TMenuItem;
N7771: TMenuItem;
procedure N7771Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.N7771Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2:= TForm2.Create(self);
form2.Show;
end;
end.
//////////////////
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,Unit3;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
end;
var
Form2: TForm2;
implementation
uses
Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
Form3: TForm3;
begin
Form3:= TForm3.Create(self);
form3.Show;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.
////////////////////////
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form3: TForm3;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
form2.Close;
end;
end.
疑问,form2的按钮能关form1窗口,但form3为什么关不了form2的窗口(这才是我想要的,怎么回事呀?)
把
var
Form2: TForm2;
这两行去掉
Form2,Form3都已经创建了,
// 这时 创建的Form2不是 单元unit2中Form2,你在Unit3中调用Form2.Close所以无效
procedure TForm1.N7771Click(Sender: TObject);
var
Form2: TForm2;
begin
Form2:= TForm2.Create(self);
form2.Show;
end;
end.
你可以这样修改就ok了
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
//var
// Form2: TForm2;
begin
// Form2:= TForm2.Create(self);
form2.Show;
end;end.
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit3, Unit1;{$R *.dfm}procedure TForm2.btn1Click(Sender: TObject);
//var
// Form3: TForm3;
begin
// Form3:= TForm3.Create(self);
form3.Show;
end;procedure TForm2.btn2Click(Sender: TObject);
begin
Form1.Close;
end;
end.unit Unit3;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementationuses Unit2;{$R *.dfm}procedure TForm3.btn1Click(Sender: TObject);
begin
Form2.Close;
end;end.