关于delphi 窗体切换问题

lyyailxj13 2013-01-23 03:42:44
现有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窗体
...全文
226 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
simonhehe 2013-01-23
  • 打赏
  • 举报
回复
做了个小例子 项目文件
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.

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧