起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 717|回复: 6

【搞定】在静态方法中创建组件的owner参数应该怎么写?**

[复制链接]
发表于 2006-5-23 16:10:15 | 显示全部楼层 |阅读模式
想在一个业务信息的静态方法里面建一个SQLDataSet
DataSetTempQuary := TSQLDataSet.Create(Ower)
这个owner参数应该怎么写?
回复

使用道具 举报

发表于 2006-5-23 17:32:19 | 显示全部楼层
需要传环境,self.context,或者通过调用的功能往里面传环境参数
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 09:30:20 | 显示全部楼层
为什么不能用self也不能用application呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 09:42:21 | 显示全部楼层
self在静态方法里面不可用,self.context更是不可用,需要怎么样才能用?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 10:08:23 | 显示全部楼层
通过调用的功能往里面传self.context的时候报错:不能隐式转换 "TContext" 成为 "TComponent"

TComponent转换TContext的方法是怎么写的?
回复 支持 反对

使用道具 举报

发表于 2006-5-24 12:08:08 | 显示全部楼层
静态函数中创建对象,那么就需要给动态函数传递一个变量,作为创建对象的owner。
因为平台上有环境、隔离级的概念,因此需要传递一个在环境中的对象的变量,通常是传递self,需要取环境时候,就用self.context来获取,因此创建对象时,使用一个对象,而不是对象的环境。

在Delphi中有一个全局变量Application,创建对象时如果没有父,就可以指定Application为Owner,但是平台上没有全局变量,而且Application没有环境,因此不能使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 13:54:14 | 显示全部楼层
原来如此,明白了,问题搞定了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-2-5 17:37 , Processed in 0.039452 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表