多个FORM如何处理?

flycolt 2000-06-16 03:36:00
我在编写一个数据库处理程序,整个程序里有好多的窗口,我现在所用的方法是程序启动时全部生成(系统默认),可是速度是在是too slowly!!!,请教诸位大虾,可有什么办法改进?
另外,我想问象word这种有好多窗口的程序他是怎么做的呢?
...全文
310 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bitter 2000-06-19
  • 打赏
  • 举报
回复
是不是一开始就把数据库关联上了,这样就慢了,使用TDATAMODULE也许好些
光明山人 2000-06-18
  • 打赏
  • 举报
回复
我来总结一下:

1、首先,在Progject | Options中将除主窗口和DataModule外的窗口都设成不是自动创建的。
2、在运行时,如果要打开某窗口,用手工创建窗口的办法。上面都有好多朋友说了。
3、补充一点:
如果想一直开了窗口不关闭,执行菜单或按钮命令时将它调出来,可在Screen.Forms中查找该窗口是否已经打开,如果打开就将其显示并扯到前面来,否则就创建它。
LittleStar 2000-06-18
  • 打赏
  • 举报
回复



MDI与SDI都可使用其方法!
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
// Application.CreateForm(TForm2, Form2);
Application.Run;
end.
//////////////////////////
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses Unit2;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
if Form2=nil then
begin
Form2:=TForm2.Create(self);
Form2.Show;
end else Form2.SetFocus;
end;
end.
///////////////////////////
unit Unit2;

interface

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

type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
Form2:=NIL;
end;

end.

supershan 2000-06-18
  • 打赏
  • 举报
回复
是啊,应该自动创建窗体我做的所有程序,全部是自动创建,这样启动是很快的。
如果你想做成WORD一样,只能用MDI如下
Form1:=TForm1.Create(self)
Form1.Show;
在close时可写下:
Action:=cafree;
如用SDI可如下:

Form1:=TForm1.Create(self)
Form1.ShowModal;
Form1.Free;
不要忘了Free;
coala 2000-06-18
  • 打赏
  • 举报
回复
窗口多了,速度是很慢!Delphi在默认的情况下,是自动创建所有的窗口。如果你要速度快,你只能用动态的方法来建立窗口!比如:Form1:=tform.create;这样的话速度就很快!至于Word,他是用的MDI的方法!象Wingsun说的一样!!
jll 2000-06-16
  • 打赏
  • 举报
回复
Delphi默认的是自动生成所有的窗体,你可以在Opition中的Form页面中移动不需要自动生成的窗体到右边...
Wingsun 2000-06-16
  • 打赏
  • 举报
回复
在调用的时候在生成即可加快速度。如下:
Form1:=TForm1.Create(self);
Form1.Show();
WORD是一个MDI程序,在Delphi中将主窗口的FormStyle设置为:fsMDIForm,可将该窗口设置成为MDI主窗口。fsMDIChild,比表示MDI子窗口。一个程序中可以有很多个MDI子窗口,但是只有一个MDI主窗口.在WORD中你看到的文档窗口都是MDI子窗口。
蝈蝈俊 2000-06-16
  • 打赏
  • 举报
回复
必要时再生成呀。
WORD2000以前的WORD 是采用MDI多文档界面方式,WIN内部处理了。

5,386

社区成员

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

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