问题,急!ActiveForm上调用另一个Form出现问题了。(100分)

阿蛮

Unregistered / Unconfirmed
GUEST, unregistred user!
在ActiveForm中调用了另一个Form,在该form上的所有控件访问都没有问题,但在该form中想访问ActiveForm上的控件,却做不到。Form为普通Form,该怎让访问ActiveForm的控件呢?
 
你可以同DelphiControl来获取
 
那是因为,无法确定这个系统的实例,你必须在在activexForm中赋值,或者将activexForm的实例传递到目标Form中去
 
这个问题看来没有一个很好的解决方案,换一个问题,我想应该是很简单的。
怎样删除ActiveFrom中的所有属性、事件?我在Type Library中删除相应的属性、事件
后,编译没有问题,但当我要把残留在工程里的属性、事件代码删除,它就给我编译不了了。
 
在typelibrary中删除后要重新注册

就是还要点一下
register type library按钮
 
我把OnActiveat事件删除后,一编译就报
TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnActivate) - Cardinal(Self);
这句出错:Undeclared identifier: "FOnactivate"
把这句话删掉编译可以通过,但如果一刷新,这句话又自己跑出来了。[:(]
 
manboo,你说的
‘在activexForm中赋值,或者将activexForm的实例传递到目标Form中去’
该怎么做阿,可不可以说详细点阿。
我在另外的form中调用activeform的过程和函数也遇到了同样的问题,望指教!
 
为什么一定要调用ActiveForm中的东东,换一个方式不行吗?
 
to wkp13_8:
因为我在activeform在有一个控件在用之前必须要先初始化端口,我想在几个窗体中都要调用到这个控件。
  可以换成什么方式?
 
把这个控件放在一个一般的Form内,在其他Form中进行引用。通过ActiveForm激活这个Form即可,类似于SplashForm。在该Form中,放入其它公用的组件、变量、过程、函数等。其实,ActiveForm相当于一个应用的载体。
 
通过打开浏览器的方式来使用应用程序,其实在delphi中实现起来很简单,我们以用delphi6.0为例把实现的完整步骤写出如下:
1、选择“file/new/other”于new items对话框中选择activex选项,在其中选择建立activex form。此时会弹出一个对话框用于输入你所建立activex组件的名称、object pascal程序单元名称、项目名称等。还有一些activex包含版本控制编号等可选项,可以按缺省的设置直接点击ok即可。
2、现在你可以在打开的工程中来设计你的程序了,这里和一般的应用程序的设计一样,可以根据自己的需要来创建不同的form来实现自己的功能。但需要注意一点的是各form之间的调用不能用form.showmodal来实现了,需要动态调用form来实现,如以下定义过程:
Procedure Tform1.ShowForm(AFormClass:TFormClass);
Begin
With AFormClass.Create(Self) do
try
ShowModal;
finally
Free;
end;
End;
调用form2可以用:showform(Tform2),程序设计完成后,保存单元文件和工程文件到相应的目录下。假设保存在“c:/my documents”。
3、程序设计完成之后,可以准备生成你所想要的应用程序了,但这里不是点击运行,而是首先选择“project/web deployment options” 在project选项中的“Target dir”中添入“./”, “Target URL”中添入“./”, “HTML dir”中添入“./”来设置一些文件存放路径。最后选择“project/web deploy”,点击“yes to all”即可。
此时打开 “c:/my documents”会看到已生成的htm文件,打开htm文件你会看到你所设计的应用程序已经可以在浏览器中使用了。你可以用网页编辑器来修改所生成的htm文件使它更符合你的要求。至此完整的实现过程结束。实际上Delphi是把编写的应用程序编译成了activex组件,在浏览器中调用activex组件,所以只适用于一些小的应用程序。
 
顶部