窗口的问题

sls 2000-06-19 01:46:00
各位高手有一问题请教:
主窗口包含一菜单执行菜单的某一项时产生一个新的窗口如下:
Form1:=Tform.create(application);
form1.showmodal;
结果主窗口不可见菜单亦不可见必须把form1关掉,主窗口才可见,如何操作才能生成新窗口同时老窗口还可见或新窗口包含在老窗口之中.
谢谢
...全文
209 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
menxin 2000-06-26
  • 打赏
  • 举报
回复
忘了说,这是PASSWORD在MAINFORM之前显示的方法,如果要在MAINFORM后显示,就直接 application.Terminate就行了。
menxin 2000-06-26
  • 打赏
  • 举报
回复
忘了说,这是PASSWORD在MAINFORM之前显示的方法,如果要在MAINFORM后显示,就直接 application.Terminate或MAINFORM.CLOSE就行了。
menxin 2000-06-26
  • 打赏
  • 举报
回复
如果要实现PASSWORDFORM,应该在PROJECT中手工创建FORM1

program XXX;

uses
....

pass in 'pass.pas' {Form1};

{$R *.RES}

var Forma:TForm1;
begin
Application.Initialize;
Application.CreateForm(TForm2, Form2); //create main form
Form1:=TForm1.Create(Application); //create password form
if Forma.ShowModal=MrOK then begin //由PASSOWRD的返回值决定是否继续。
Application.CreateForm(TForm3, Form3);
.....//Create other form
Application.Run;
end;
Form1.Free;
end.

sls 2000-06-26
  • 打赏
  • 举报
回复
hi menxin
if Forma.ShowModal=MrOK then
编译时出错:undeclared identifier MrOK
怎么解决?
谢谢!!!
wai_lf 2000-06-23
  • 打赏
  • 举报
回复
第一步:如果这个窗口是必须的,那么第一步采用前面limu同人的方法;
如果一步不行。
第二步:选择view/project manager/菜单项,在打开的对话框中选择project group下面的‘你的应用程序名.exe’,单击右键选择options,在打开的对话框中选择forms菜单(一般是默认的),看到main form标签了吗?然后选择你想程序运行第一次出现的form.
ok?
shylsz 2000-06-23
  • 打赏
  • 举报
回复
form1设置成fsnormal.
form1关闭用form1.hide;其实是隐藏
然后
form2.show;
sls 2000-06-20
  • 打赏
  • 举报
回复
谢谢前面的回答,问题1,2 基本解决,还有如下问题请教?

一个工程有4个FORM
FORM1:PASSWORD FORM(?)
FORM2:MAINFORM(FORMSTYLE:fsMDIForm)
FORM3:CHILDFORM(FORMSTYLE:fsMDIChild)
FORM4:CHILDFORM(FORMSTYLE:fsMDIChild)
要求运行时,FORM1先运行,验证口令,通过后,FORM1关闭,FORM2启动,进入正式系统?
FORM1,FORM2,FORM3,FORM4....的FORMSTYLE该如何设置?
或者实行起来有别的方法?
(FORM1,的(FORMSTYLE设置成fsNormal,fsMDIForm,fsMDIChild似乎都不行)
jll 2000-06-20
  • 打赏
  • 举报
回复
1、可以设置打开Form1后,菜单对应栏为Disable,然后关掉Form1再Enable
2、Form1.close
3、一般PASSWORD窗口不是主窗口,关闭的方法同2。一般PASSWORD窗口应该用ShowModel
halfone 2000-06-20
  • 打赏
  • 举报
回复
(1):
function TFormmain.findchild(prform:string):Boolean;
var
i:integer;
begin
result:=False;
for i:=0 to MDIChildCount-1 do
if (uppercase(MDIChildren[i].name)=prform) then
begin
result:=True;
MDIChildren[i].BringToFront;
//MDIChildren[i].setfocus;
//MDIChildren[i].Activate;
if MDIChildren[i].windowstate=wsMinimized then ShowWindow(MDIChildren[i].handle,SW_RESTORE);
break;
end;
end;

在菜单项下面写:
if not findchild(uppercase('formname')) then //给出表单名字。
form1:=tfrom1.create(nil);


(2)
onclose 事件中。action:=cafree;

(3)PASSWORD 窗口不是主窗口
只是在主窗口之前CREATE而已。而且
Limu 2000-06-20
  • 打赏
  • 举报
回复
form1:=tform.create(self)
sls 2000-06-20
  • 打赏
  • 举报
回复
这样一来有几个问题:
(1)子窗口北打开多次.
(2)子窗口如何关闭.
(3)PASSWORD 窗口是主窗口吗要求通过验证后,PASSWORD窗口关闭.
谢谢!

halfdream 2000-06-19
  • 打赏
  • 举报
回复
那不用ShowModal改用Show
Form1.Show();

要新窗口包含在老窗口中:
Form1.Parent:=self;

主窗口FormStyle =fsMDIForm;
子窗口FormStyle =fsMDIChild;

5,386

社区成员

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

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