请高手指教:控件类型不匹配的问题

哇呜 2004-08-24 09:13:11
我写了一个动态库,里面有个GridFiller类,用我定义的某种方式来填充给定的MSFlexGrid控件,其中grid控件是通过参数传到类里的。

现在存在的问题是:当在本机上使用动态库中的GridFiller类时,一切运行良好。但是如果包含GridFiller类的动态库在我的机器上编译,而别人想在他的机器上使用这个GridFiller时,就会出现grid类型不匹配的问题。简单的说,就是在不同的机器上,grid不能相互匹配。

已经多次遇到这样的问题,但一直不知道原因和解决办法,希望高手指教,万分感谢!
...全文
211 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
哇呜 2004-09-28
  • 打赏
  • 举报
回复
只能尽量避免在模块接口间传递控件引用了。要不你也可以做一个自定义控件,从而可以对控件的行为进行定制。
a达哥a 2004-09-27
  • 打赏
  • 举报
回复
我和你遇到同样的问题,不知道你解决了没有? 可以指点一下吗?
哇呜 2004-08-25
  • 打赏
  • 举报
回复
根本就不涉及到安装程序的问题,我自己就是写代码的,是在开发过程中遇到的问题。

我创建了一个公共模块,里面用了Grid控件的引用,然后其它很多模块里面都使用了这个公共模块,别的同事也要用,但现在他们如果不重新编译就用不了!而到最后合并的时候,所有相关的模块都必须在同一台机器上(假设称为“编译主机”)重新编译才能正常运行。这样就会留下无穷后患——以后所有相关的模块的更新都必须通过这台编译主机重新编译才行;甚至在编译主机系统重装过之后,所有相关模块都必须重新编译!然后就是重新发布……

天啊……!
哇呜 2004-08-25
  • 打赏
  • 举报
回复
呵呵,谢谢!

我现在也只能用变通的方法了,也许得做做自定义控件……
lovebeethoven 2004-08-25
  • 打赏
  • 举报
回复
帮顶吧,比较高深
yijiansong 2004-08-24
  • 打赏
  • 举报
回复
打包,将所有用到的库包括进去!
哇呜 2004-08-24
  • 打赏
  • 举报
回复
to zscjp():
我已经编译成本机代码了,也在别人机器上注册过了……

不光是MSFlexGrid的问题,TableStripe、EsriMapControl(ArcGIS中的)控件也不行,我现在怀疑是不是大部分控件都不行……
哇呜 2004-08-24
  • 打赏
  • 举报
回复
to LGYAN(紫衣随想):
我就是通过Object来传的,好像不能直接用MSFlexGrid来传……但还是不行:(
LGYAN 2004-08-24
  • 打赏
  • 举报
回复
看看你的函数定义
//其中grid控件是通过参数传到类里?

试用Object看看

zscjp 2004-08-24
  • 打赏
  • 举报
回复
试一试修改工程属性:
选 “编译”卡,将其编译为本机代码。
呵呵,我没试过这样子。会不会是你的动态库要在别的机上也注册一番才能用呢?
programfish 2004-08-24
  • 打赏
  • 举报
回复
关注
哇呜 2004-08-24
  • 打赏
  • 举报
回复
up
rainstormmaster 2004-08-24
  • 打赏
  • 举报
回复
生成安装程序了吗?
哇呜 2004-08-24
  • 打赏
  • 举报
回复
当然会有啊,我不是说过了别人的机器上也有grid控件吗?我自己写的动态库当然也在他机器上注册了。
fishmans 2004-08-24
  • 打赏
  • 举报
回复
要注意dll中引用过的东西在别人的机子上也得有啊
哇呜 2004-08-24
  • 打赏
  • 举报
回复
to LGYAN(紫衣随想):
现在的问题不是客户机器上没有那个控件——而是任意两台机器上的同一个控件不能兼容。我的机器上有MSFlexGrid控件,客户的机器上也有,而且各自都运行得很好,但是——在两台机器之间,这两个控件不能兼容。MapControl控件也是一样的。如果我所有的模块都在客户机器上编译,不会有问题;如果都在我自己的机器上编译,也不会有问题;但是如果一部分模块在客户机器上编译,一部分在我自己的机器上编译,它们就不兼容了。(当然这个不兼容的问题只是在你把控件引用作为接口参数进行传递的时候才会出现,如果在模块内部使用了控件但不和与外界的接口相关联,这不会有这个问题)

比如说我在自己机器上编译了一个动态库A,它要求外界传入一个grid控件的引用。我又在自己机器上创建了应用程序B,它使用了一个grid控件,我把这个控件的引用传给A——什么问题都没有,运行得很好!

但是,如果别人在他的机器上创建了应用程序C,它也使用了一个grid控件,它也想使用在我机器上编译的那个动态库A,于是他把那个grid控件的引用传给A——这时就发生了类型不匹配的错误。

实际上,如果将在我机器上编译的那个动态库A在别人的机器上重新编译一遍,那C和A的交互就没有问题了——但现在出现的新问题是:在我机器上的B和在别人机器上重新编译的A的交互又会出现那个类型不匹配的错误了。

真实头疼……不知道是不是VB本身固有的问题。
LGYAN 2004-08-24
  • 打赏
  • 举报
回复
EsriMapControl(ArcGIS中的)应该有许多支持库的,打包可能找不全的!建议在每台机器上先安装ArcGIS客户端,然后再安装你的程序!!!
哇呜 2004-08-24
  • 打赏
  • 举报
回复
自己up……

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧