读书人

关于delphi 窗体切换有关问题

发布时间: 2013-02-17 10:44:47 作者: rapoo

关于delphi 窗体切换问题
本帖最后由 lyyailxj13 于 2013-01-23 15:48:23 编辑 现有3个窗体 1、2、3,2是主窗体 1是登录窗体,1首先显示,登录成功后 1free 2显示,2关闭时候弹出3
3上面有选择 关闭 或 注销,注销就是打开1 同时关闭3 因为2是主窗体不能关闭

program SysLogin;

uses
Forms,
Frm_login in 'Frm_login.pas' {FrmLogin},//1
Frm_Main in 'Frm_Main.pas' {FrmMain},// 2
DMUnit in 'DMUnit.pas' {DM: TDataModule},/
Unit1 in 'Unit1.pas' {Form1};//3

{$R *.res}
var
FrmLogin: TFrmLogin;
begin
Application.Initialize;
Application.CreateForm(TDM, DM);
Application.CreateForm(TFrmMain, FrmMain);//2
Application.CreateForm(TForm1, Form1);//3
FrmLogin:=TFrmLogin.Create(nil);//1
try
FrmLogin.ShowModal;
Finally
FrmLogin.Free;
end;
Application.Run;
end.

如何实现啊 因为1已经free了 我在3上面选择注销 就报错 1根本show不出来,能否点击注销时 重新运行程序呢?或者 重新creat1窗体
[解决办法]
做了个小例子

项目文件

program Project8;

uses
ExceptionLog,
Forms,
frm_main in 'frm_main.pas' {FrmMain},
frm_Login in 'frm_Login.pas' {FrmLogin},
frm_QueryClose in 'frm_QueryClose.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TFrmMain, FrmMain);
// Application.CreateForm(TFrmLogin, FrmLogin);
// Application.CreateForm(TForm1, Form1);
Application.Run;
end.


//主窗体单元文件
unit frm_main;

interface

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

type
TFrmMain = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
procedure Login;
{ Private declarations }
public
{ Public declarations }
end;

var
FrmMain: TFrmMain;

implementation
uses frm_Login, frm_QueryClose;
{$R *.dfm}

procedure TFrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//选择 关闭 或 注销 的窗口
with TForm1.Create(self) do
try
if mb_ok = ShowModal then //关闭, 则程序退出
Application.Terminate;

Login;
finally
free;
end;
end;

procedure TFrmMain.Login;
begin
with TFrmLogin.Create(self) do
try
if mb_ok <> ShowModal then //登录失败后程序退出


Application.Terminate;
finally
free;
end;
end;

procedure TFrmMain.FormCreate(Sender: TObject);
begin
Login;
end;

end.

读书人网 >.NET

热点推荐