一个ShowModal的小小问题(50分)

  • 主题发起人 主题发起人 qlw
  • 开始时间 开始时间
Q

qlw

Unregistered / Unconfirmed
GUEST, unregistred user!
刚遇到的,一个窗体showmodal另一个窗体,并且showmodal出
的窗体必须在主窗体内,我用
form2.parent:=form1;
form2.align:=alClient;
form2.showmodal;
结果子窗体也没有反应了,请问有没有解决办法?
 
把form1设置成父窗体!
 
我就是把form1设为form2的父窗体才出问题的...
 
qlw:能说得清楚此吗?
 
我想:
1.子窗体充满主窗体某区域(所以我设form2.parent:=form1;

form2.align:=alClient;)
2.子窗体出现时,主窗体停止运行
 
with TForm2.Create(Form2)do
try
Showmodal;
finally
free;
end;
既然Showmodal了,当然主窗体停止运行.
为何要指定form2的父窗口呢?难道form2是动态创建的吗?
 
我想让子窗体充满主窗体所以我用
form2.parent:=form1;
结果子窗体也不动了
 
unit1:
var
Form1: TForm1;
implementation
uses unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
with form2do
begin
parent:=form1;
align:=altop;
show;
end;
end;

dpr:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

 
unit2:

var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
 
绝对不会的,我前两天还试了呢。
应该是这样:
with Tform2.Create(self)do
try
Parent := Self;
ShowModal;
finally
Free;
end;

要不然你的 form2 中有什么不对的地方。
 
的确如此,但用Show没毛病,不知你如此做要实现什么要求,换一种思路吧
 
请大家试试如下代码
form2.parent:=form1;
form2.align:=alclient;
form2.showmodal;
程序不动了我现在想要它动, 实在不行只好用其他方法了
 
对了,什么叫不动,上面有东西吗?可以点吗?
可以关闭吗?(别说把 borderstyle 改为 none)
alt+f4 管用吗?
 
我想是因为Form2.ShowModal后,再返回之前,Form1会是不可用的,而又设置
了Form2.Parent:=Form1,Form2属于了Form1的一部分,也不可用了,因此,进入了
死循环:要Form1可用,要先关闭Form2,而要关闭Form2,又先要Form2可用
 
哈哈,我明白你的意思,应该卤虾:
form2.borderstyle:=bsnone;//这是关键!!!!!!!
form2.parent:=form1;
form2.align:=alclient;
form2.showmodal;
 
>>程序不动了我现在想要它动
你是想要Form1动吧?
form2.parent:=form1;
form2.align:=alclient;
form2.show;
已经都alclient了,为何要用showmodal呢
 
子窗体是一个录入界面,该界面出现时后台的程序应停止,同时
为了美观,子窗体应充满主窗体的某一区域,所以我用了上述方法,
结果失败了
 
多人接受答案了。
 
后退
顶部