我的程序中怎么form在create后show以前就出现了?请指教(50分)

  • 主题发起人 主题发起人 yankk
  • 开始时间 开始时间
Y

yankk

Unregistered / Unconfirmed
GUEST, unregistred user!
我的是子窗体程序,在子窗体创建而没有show时就出现了,我本来还要在创建后改变一个变量
结果,:(,有人可以告诉我为什么么?听说可以改过来,怎么改呢?
 
你是不是把设为自动建立了呀?如是。在Project-->options的Auto-Create forms 里去
掉就行了。
with TXXX.create(self) do
begin
try
ABC:=XXX;
showmodal;
finally
free;
end;
end;
 
请在delphi的目录project--》option的autocreate forms里放到available forms里面
然后要show该form的话。yong
if form1=nil then
application.createform(TForm1,form1);
form1.show
 
To marknew: 我用的是子窗体,不可以用showmodel的
To sword_liu :用子窗体那是最基本的一步,我已经作了
我是说在我需要显示一个子窗体时,create后不经show就出现了
form2:=tform2.create(self);
还是谢谢两位!
 
MDI子窗体都是这样的
自动会SHOW出来的。
 
好象不太可能啊,能不能给些具体的代码?
 
在该子窗体的create事件里改变你想改变的变量: 如下例:
procedure Tfrm_mdiEdit.FormCreate(Sender: TObject);
begin
MyVariable := 'Myvalue';
end;

希望能有帮助!
 
to xianjun:
但是我想在子窗体创建后给它传一个参数,让它在显示的时候在屏幕上看到
该怎么办啊?

 
form1中:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=tform2.create(self);
form2.d:=true;form2.Show;//d是form2中的一个boolean型的公共变量
end;

form2中:
procedure TForm2.FormShow(Sender: TObject);
begin
if d then
begin
showmessage('d is true!');
end;
end;
 
form1中:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Form2) then
Form2:=TForm2.Create(Application);
form2.d:=true;
form2.Show;//d是form2中的一个boolean型的公共变量
end;

form2中:
1.在 OnClose 中:Action:=caFree;
2.在 OnDestroy 中:Form2:=Nil;

procedure TForm2.FormShow(Sender: TObject);
begin
if d then
begin
showmessage('d is true!');
end;
end;

 
to zhihuali; 不行
 
你是指不能显示还是其它?
 
我的是子窗体程序,在子窗体创建而没有show时就出现了
这是绝对正常的.
create之后hide
 
to zhihuali:d还是false;没有传过去
to 张剑波:但是我想在子窗体创建后给它传一个参数,让它在显示的时候在屏幕上看到
该怎么办啊?
 
创建完毕后隐藏掉
然后再在你喜欢的时候显示出来。
用API: ShowWindow
 
to xianjun:可以可详细点么?
 
to yankk:
你的 d 变量放在什么地方?
请把 d 变量放在 Form2 窗体 的
var
Form2: TForm2; 下面
d:Boolean;
并将
form1中:
procedure TForm1.Button1Click(Sender: TObject);
begin
//////////////////////////
unit2.d:=true;
///////////////////////////////
if not Assigned(Form2) then
Form2:=TForm2.Create(Application);
form2.Show;//d是form2中的一个boolean型的公共变量
end;

form2中:
1.在 OnClose 中:Action:=caFree;
2.在 OnDestroy 中:Form2:=Nil;

form2中:
1.在 OnClose 中:Action:=caFree;
2.在 OnDestroy 中:Form2:=Nil;

procedure TForm2.FormShow(Sender: TObject);
begin
if d then
begin
showmessage('d is true!');
end;
end;

 
真是太感谢你了!!!!!
 
用我的这段代码吧,一定能满足你的。
先在父窗体中定义一个过程:
procedure OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;

打开子窗体是如下:
procedure TfrmMain.dxBarButton5Click(Sender: TObject);
begin
OpenForm(TfrmUnlock,frmUnlock, self);
end;
 
后退
顶部