关于Form的问题!(50分)

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

Harold

Unregistered / Unconfirmed
GUEST, unregistred user!
主form有scroll,子form的Parent设为主form的scroll
子form的一些属性如下:
BorderStyle := bsnone;
Parent := scrollbox1;
Align:=alclient;
position:=podefault;
主form有一函数调用
setcurrentform(TFcjname);{TFcjname为子form的name}
在实行中靠setcurrentform来关闭子form,如何用子form的
自己来关闭自己?Fcjname.close,Fcjname.release都出错。

附:setcurrentform函数:
procedure TFMainForm.SetCurrentForm(AFormClass : TFormClass);
begin
if(FCurrentForm = Nil) or (FCurrentForm.ClassType <> AFormClass) then
begin
if(FCurrentForm <> Nil) then
begin
if messagedlg('有数据窗体,继续?',mtconfirmation,[mbYes,mbNo],0)=mrYes
then
begin
FCurrentForm.release;{用函数来关闭子form}
Application.CreateForm(AFormClass, FCurrentForm);
panel5.Caption := FCurrentForm.Caption;
FCurrentForm.BorderStyle := bsnone;
FCurrentForm.Parent := scrollbox1;
FCurrentForm.Align := alclient;
FCurrentForm.position:=podefault;
FCurrentForm.Show;
end
else
begin
end
end
else
begin
Application.CreateForm(AFormClass, FCurrentForm);
panel5.Caption := FCurrentForm.Caption;
FCurrentForm.BorderStyle := bsnone;
FCurrentForm.Parent := scrollbox1;
FCurrentForm.Align := alclient;
FCurrentForm.position:=podefault;
FCurrentForm.Show;
end;
end;
end;
 
我认为是你得Child Form得Parent不能设置为Scrollbox1,如果不是特殊需要,没
必要这样!
如果 不改Child Form得Parent,将Child Form得OnClose中加入Action:=caFree;
这样你的程序就可以正常运行了。
看看其他网友是否还有其他好得解决办法。 {B-(
 
奇怪,我把form2的parent设为scrollbox之后,根本看不到form2 ????
 
to cAkk:
他是将两个Form分别FormStyle设置为fsMDIForm,fsMDIChild,此时Form2会出现,
不过我想不通的是为何要将Parent设置为ScrollBox,设置为Scrollbox程序酒会出
错,可能是Delphi的Bug,我认为用是Delphi的编程限制来描述更准确。 {B-(
 
我想法可能比较简单,没法用子form的 Fcjname.close,Fcjname.release
是因为,fcjname没有被定义成全局变量。把var fcjname:tform;放到单元
的变量定义处就行了。
 
......
//FCurrentForm.BorderStyle := bsnone;
//FCurrentForm.Parent := scrollbox1;

FCurrentForm.ParentWindow := scrollbox1.Handle;
FCurrentForm.BorderStyle := bsNone;
......
......
 
这段代码来源于acl20控件包的demo程序,加以改变。
another_eYes的代码使用后,scrollboa 的滚动条不出现,不好控制。
主form,子form没有MDI属性,普通窗口。
 

release 的前面要加 一行:

FCurrentForm.Parent:=nil ; //这行比较重要
FCurrentForm.release;{用函数来关闭子form}
 
主人为何长久不发言????
 
后退
顶部