一个关于窗口的问题 急!(25分)

  • 主题发起人 主题发起人 hzyingmu
  • 开始时间 开始时间
H

hzyingmu

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在显示MainForm:gzglmenu后,再显示登录界面:dljmform,并在执行
dljm.Close之前,不能使gzglmenu在dljmform之前,即:即使鼠标点击
gzglmenu,仍然不能使gzglmenu跑到dljmform之前,不能执行gzglmenu
中的功能。
我执行了以下程序后,dljmform却在gzglmenu之后。

procedure Tgzglmenu.FormShow(Sender: TObject);
begin
Application.CreateForm(Tdljmform,dljmform);
dljmform.show;
dljmform.Update;
dljmform.SetFocus;

若使dljmform设置为‘总在最前面’,但仍能进入并使用gzglmenu中的功能,
我想不能进入gzglmenu。
究竟应如何实现以上功能,请各位高手赐教!我的e-mail:hzyingmu@21cn.com
谢谢?

 
dljmform.show -> dljmform.ShowModal;
应该可以了吧
 
用dljmform.ShowModal;
而且应保证在yourproject.dpr中
Application.CreateForm(TMainForm, MainForm)在
Application.CreateForm(TdljmForm, dljmForm)的前面.
 
改成showmadal也不行,因为gzglmenu就没机会显示了
你可以这样做:
在主Form的定义中加:
private
procedure Showdlform(var msg:TMessage); message WM_USER+100;
{ Private declarations }
public
................


procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Handle,WM_USER+100,0,0);
end;

procedure TForm1.Showdlform(var msg:TMessage);
begin
Form2:=TForm2.Create(Self);
try
Form2.ShowModal ;
finally
Form2.Release;
end;
end;

当然Form的名字你得自己改成你的
 

dljmform.show;
dljmform.Update;
dljmform.SetFocus;
gzglform.enabled:=false;// ***********

when dljmform close, enabled the gzglform.

 
看看这个Project1.pas,Form1就是你的MainForm,
Form2就是你的dljmform。

program Project1;

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

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Show;
Form1.Update;
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Update;
Application.Run;
end.
 
呵呵,showmodal是一定要用了。还可以用的就是showmodal的返回值
procedure TForm1.FormActivate(Sender: TObject);
begin
if form2.showmodal<>mrok then
Application.Terminate;
end;
 
在gzglmenu的oncreate中生成dljmform

然后在yourproject.dpr中删除

Application.CreateForm(TdljmForm, dljmForm)
 
dljmform.show -> dljmform.ShowModal;
应该可以了吧
 
多人接受答案了。
 
后退
顶部