‘手机通讯录已经运行!‘

时间:2022-01-04 07:58:40

有两个窗口
formLogin是登陆窗口,formMain是主窗口
我想让formMain显示出来,并且formLogin窗口*或者隐藏
这牵扯到 如果是* 在formMain就不用去管formLogin的问题了
如果是隐藏那formMain就还要*formLogin窗口  

我是这样想的 本人对delphi的机制不太了解~!

 我在formLogin中添加
       formMain:=formMain.Create(Application);
      formMain.ShowModal;
      formLogin.Close;
这样并没有隐藏formLogin窗口,是不是还要加什么语句~!

感谢感动您对这个问题的回答~!

dpr里面这么写(uses Controls)

begin
Application.Initialize;
Application.CreateForm(TformMain, formMain);
formLogin = TformLogin.Create(Application);
if formLogin.ShowModal = mrOk then
begin
formLogin.Release;
Application.Run;
end;
end.

我的工程文件是这样的
  Application.Initialize;
  Application.CreateForm(TformMain, formMain);
  Application.ShowMainForm := false;
  Application.Run;

我的想法是先创建formMain窗口 在从formMain的OnCreate事件中创建formLogin窗口
      formLogin:=TformLogin.Create(Application);
     formLogin.ShowModal;

当正确输入用户名和暗码后
      formLogin.Free;
      formLogin:=nil;
      formMain.ShowModal;

这样有个问题是 当*formMain后并没有*formLogin

procedure Tform1.formcreate(sender:Tobject);
begin
formLogin:=TformLogin.Create(self); 
 try 
   if formlogin.showmodal<>mrok then
       close;
  finally
      formlogin.free;
 end;
end;

工程文件中是这样的.
begin
  Application.Initialize;
  F_pos_start := tF_pos_start.Create(application);
  F_pos_start.show;
  F_pos_start.Update;
  Sleep(2000);
  F_pos_start.Close;
  Application.Title := ‘大药房连锁打点系统-连锁店端‘;
  Application.CreateForm(TF_pos_main, F_pos_main);
  Application.CreateForm(TF_pos_login, F_pos_login);
  .............................
  Application.CreateForm(TF_pos_select_unit, F_pos_select_unit);
  Application.CreateForm(TF_pos_check_stock, F_pos_check_stock);
  F_pos_Main.Visible := true; //显示主窗体
  F_pos_login.ShowModal; //显示登录窗体
  Application.Run;
end.

释放在 登录告成的时候 做个 free 什么的不就行了吗?或者 oncolose 里  action:=cafree;

建议给与MDI,这样就可以实现楼主意思了
在工程文件中只创建主窗体,,
然后在主窗体中在进行登陆对话框的创建,完毕后释放。

不大白你的意思是什么

我说下本身的例子。。

MainForm 主窗体

LoginForm 登录窗体

在MainForm的FormShow事件里判断当前是否已经登录
如果么有。。就LoginForm.ShowModal;

在LoginForm的FormClose事件里判断当前是否已经登录
如果么有。。就Application.Terminate

你把LoginForm设为主窗体。。。然后判断用户名 暗码

验证通过 MainForm 显示。。。 loginform 释放

应该是这样的!~!~!

ShowModal 是显示模式窗体的,只有该窗体*后才华执行下面*语句
窗体隐藏的要领的Hide

Self.Hide; //先隐藏
frmMain := TForm.Create(Application);
frmMain.ShowModal;

handle_1,handle_2:hwnd;
begin
  //数据库文件检测
  If (not fileexists(ExtractFilePath(ParamStr(0))+‘up.mdb‘)) or (not fileexists(ExtractFilePath(ParamStr(0))+‘handset.mdb‘))  Then
     Begin
        messagebox(0,‘系统文件丢掉,请从头安置!‘,‘提示‘,MB_OK);
        Application.Terminate;
     End;
  Application.Initialize;
  //获取窗口句柄
  handle_1:=findwindow(‘TForm_handset_Login‘,nil);
  handle_2:=findwindow(‘TForm_handset_Main‘,nil);
  If (handle_1=0) and (handle_2=0) Then
       Begin
       //启动登录窗口
        Form_handset_Login:=TForm_handset_Login.Create(Application);
        Form_handset_Login.ShowModal;
        If (Form_handset_Login.ModalResult=mrok) Then
            Begin
               Application.Title := ‘手机通讯录‘;
               Application.CreateForm(TForm_handset_Main, Form_handset_Main);
               Application.CreateForm(TDM, DM);
               Application.Run;
            End;
       End
  Else
      messagebox(0,‘手机通讯录已经运行!‘,‘提示‘,MB_OK);
end.