很简单——Form的显示问题(50分)

小天

Unregistered / Unconfirmed
GUEST, unregistred user!
DPR文件中写有:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;

Form1中写有:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
end;

Form2中写有:
procedure TForm2.MButton1Click(Sender: TObject);
begin
hide;
end;

我在Form2中按了按钮后就什么也没有了,请问我怎么才能把Form1显示出来呢?
 
在hide后面加上
form1.show;试试看
 
我用的是delphi5
autocreate的form-->form1

form2光hide总不是办法,不用最好关掉算了
 
lhxu:你的方法可行,但我用了下面方便会出错
procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
begin
form2.free;
close;
end;

为什么不能关闭程序呢?
 
这么作是没办法的,
form2是处于模态,
程序仍在等待form2的响应,而form2被你hide了,
form1也由于等待form2的执行结束来show.


除非你把showmodal改为show;

不过不知道你想完成什么功能?
 
不明白你要做什么,是要给form1加个封面吗?
 
form2是一个登陆确认窗口,
HIDE它中因为我还要用它上面的控件
 
Form2.ShowModal;是以模态显示窗口,这是application只对form2的消息做出响
应,而不执行下面的程序,直至form2被close,执行form2.hide只是隐藏form2,这时
应用程序还是只对form2响应,但此时form1还没有被创建,而且只要form2没有被
close,创建form1 的代码就不会被执行,所以form1不会出现。

Form2.ShowModal;//执行完这行后如果不close掉form2,下面的代码不会执行
form2.........
showmessage('...............');
 

同意amo
另外,在 form2.onclose里加上 action:=caFree
试试看
 
先close form2才能轮到form1显示.
 
showmodal改成show也没用 :-(
 
同意amo、www ,不知道小天你在form2上的是什么控件呢?
如果是dateset,我想只要加上uses form2,即使form关闭了,也是
可以访问的。

 
你看这么做行不行,我一向用这种方法做登陆窗口:
dpr:
Application.Initialize;
form2:=tform2.create(application);
form2.Show;
form2.Update;
while (not wait) do
application.ProcessMessages;
if pas then
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
form2:
var
Form2: TForm2;
wait,pas:boolean;
implementation

{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);
begin
pas:=true;
wait:=true;
end;
 
另,你为什么不用form2.Release,我一向用它
 
原来这样,
应该用kchsun的方法。

只是,
即然form2:=tform2.create(application);
干吗还要form2.release,
再说,小天同志说过,"因为我还要用它上面的控件"
一release就没得用了。
 
不要用Application.CreateForm(TForm2, Form2);
用下面的方法就可以了。

unit Unit1
......
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.ShowModal;
end;
procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
begin
Form2.Free;
end;
end.

unit Unit2;
....
implementation
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
begin
对登陆条件作判断,设置boolPassed
boolPassed := true or false;
Close;
end;
procedure TForm2.FormClose(Sender: TObject
var Action: TCloseAction);
begin
if(boolPassed) then Action := caHide
else ......
end;
end.
 
procedure TForm2.MButton1Click(Sender: TObject);
begin
modalresult := 1;
end;

procedure TForm2.FormClose(Sender: TObject
var Action: TCloseAction);
begin
action := caHide;
end;
 
多人接受答案了。
 
叙述的不清楚,不明白要做什么,如果是想在Form1 show之前,进行在Form2上进行一些操作,再把Form1调出来,那么很简单.不知是不是这人意思!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
640
import
I
顶部