程序不能关闭的问题 (50分)

  • 主题发起人 主题发起人 仙侣边缘人
  • 开始时间 开始时间

仙侣边缘人

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个两个窗口的程序程序是从Login窗口启动的,再从Login开启FRegWz窗口,但当我关闭了FRegWz窗口后后程序并没有结束,下面是两个窗口的源代码,老大们帮我看看到底错在那里啊!!!
这里第一个窗口的代码:
unit login;

interface

uses
; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
; Dialogs, StdCtrls, ExtCtrls, LMDCustomComboBox, LMDComboBox;

type
; TFlogin = class(TForm)
; ; Bevel1: TBevel;
; ; Label1: TLabel;
; ; Label2: TLabel;
; ; PassWord: TEdit;
; ; Cmdlogin: TButton;
; ; Cmdexit: TButton;
; ; CmdRegWz: TButton;
; ; CheckBox1: TCheckBox;
; ; CheckBox2: TCheckBox;
; ; Uid: TLMDComboBox;
; ; procedure Button2Click(Sender: TObject);
; ; procedure CmdRegWzClick(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; Flogin: TFlogin;

implementation
uses RegWz;

{$R *.dfm}

procedure TFlogin.CmdexitClick(Sender: TObject);
begin
close;
end;

procedure TFlogin.CmdRegWzClick(Sender: TObject);
begin
if FRegWz=nil then
//FRegWz:=TFRegWz.Create(self);用这一行打不开窗口
Application.CreateForm(TFRegWz,FRegWz);
FRegWz.Show;
Release;;
end;

end.

下面的是第二个窗口的代码:


unit RegWz;

interface

uses
; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
; Dialogs, StdCtrls, ExtCtrls;

type
; TFRegWz = class(TForm)
; ; Notebook1: TNotebook;
; ; CmdBack: TButton;
; ; CmdNext: TButton;
; ; CmdClose: TButton;
; ; procedure CmdCloseClick(Sender: TObject);
; private
; ; { Private declarations }
; public
; ; { Public declarations }
; end;

var
; FRegWz: TFRegWz;

implementation
; ; {$R *.dfm}

procedure TFRegWz.CmdCloseClick(Sender: TObject);
begin
close;//在这里关闭了窗口但程序还在运行中?
end;

end.
 
呵呵,你这样做了以后,你的FLogin就成了程序(Application)的主窗体,所以
你后来把FRegWz Close了,程序也不会终止。个人认为这种做法不太好。
你可以这样做:
1、先用FLogin.Close试试,改你的:
procedure TFRegWz.CmdCloseClick(Sender: TObject);
begin
//close;在这里关闭了窗口但程序还在运行中?
; FLogin.Close
end;
关闭主窗体,这是按正常的思路,如果不行,再来:
2、用Application.Terminate试试:
procedure TFRegWz.CmdCloseClick(Sender: TObject);
begin
//close;在这里关闭了窗口但程序还在运行中?
; Application.Terminate;
end;
这种方法比较正统,一般都用。还不行?不会吧,不过还有一招:
3、用Halt一定行了!
procedure TFRegWz.CmdCloseClick(Sender: TObject);
begin
//close;在这里关闭了窗口但程序还在运行中?
; Halt;
end;
呵呵,这是暴力的做法了。
三种方法你都试试吧。
 
把FRegWz 做程序(Application)的主窗体
 
谢谢老大了!!我的分很少不成尊意哈!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
551
import
I
I
回复
0
查看
756
import
I
I
回复
0
查看
701
import
I
后退
顶部