+ -
当前位置:首页 → 问答吧 → DELPHI中发现一个很怪异的问题

DELPHI中发现一个很怪异的问题

时间:2011-08-30

来源:互联网

1.新建一个工程-->>修改Form1的创建方式为手动创建 Form1 := TForm1.Create(Application);
2.运行程序:右击程序在任务栏上的图标:出现关闭、最小化的菜单
3.单击关闭菜单,发现竟然失效了……………………
4.有什么方法可以让关闭菜单有效?
Application.Initialize;
  Form1 := TForm1.Create(Application);
  Form1.ShowModal;
  Application.Run;

作者: case5166   发布时间: 2011-08-30

Form1.ShowModal;
改成
Form1.Show;//为什么要用独占式的啊!改成这个试下看!

作者: jayqiang   发布时间: 2011-08-30

Form1.Show;运行不起来,,运行来窗体会自动关闭,
我这个
Form1 := TForm1.Create(Application);
  Form1.ShowModal;
其实做的是一个登陆窗口,
用的是 if Form1.ShowModal = mrok then
//进入主窗体
else
//退出系统的功能,,
但是发现上面的那个功能失效了 ,,
虽然不是什么大问题,但看看有没解决方法

作者: case5166   发布时间: 2011-08-30

楼主:你的写法有问题。

一个project中有很多窗体,其中只有一个是主窗体。哪个是主窗呢? 只要看一下主程序:

  Application.Initialize;
  Application.CreateForm(TForm2, TForm2);
  Application.CreateForm(TForm1, Form1);
  Form1.ShowModal;
  Application.Run;

其中第一个创建的窗体就是主窗体! 这里就是Form2 。主窗体是自动显示的,不需要显式调用 show方法 。
程序运行时,主窗体不应该被关闭,因为一旦关闭主窗体,整个程序就会结束。

你要创建登录功能,借用你的代码,可以稍微修改一下:

  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.CreateForm(TForm1, Form1);
  if (Form1.ShowModal<>mrOK) then exit;
  Application.Run;

这样就行了。

作者: zhoufs   发布时间: 2011-08-30

Application.Initialize;
  Application.Title := '系统模版';
  Application.CreateForm(TData, Data);//数据模块
  Application.Run;
  SysLoginForm := TSysLoginForm.Create(Application);
  if SysLoginForm.ShowModal = mrok then
  begin
  Application.CreateForm(TOSysMainForm, OSysMainForm);
  OSysMainForm.ShowModal();
  end
  else
  begin
  SysLoginForm.Free;
  Application.Terminate;
  end;


其实我是这样考虑的--->>因为主窗体要动态加载菜单等操作--->>让登陆窗口最先加载进来可能运行的比较快些,,,

作者: case5166   发布时间: 2011-08-30

而且一般程序的原理也应该是先加载登陆窗体再加载主窗体吧,,

作者: case5166   发布时间: 2011-08-30

程序创建主窗体时做了一些处理
看看application.createform的代码就知道了

作者: youthon   发布时间: 2011-08-30

热门下载

更多