我的习惯是能用 vcx 的尽量用 vcx,除了楼主所说的好处外,有时候必须用 vcx 才能达到目的,甚至有些偏好者把不能用 vcx 设计的类也转成 vcx,楼主是老鸟,应该听说过 prg2vcx 之类的吧
前面所说的 COM/ActiveX 就是典型情况,而且一些 COM/ActiveX 还需要设计时授权才行,很多菜鸟都不明白为什么在自己的电脑上用 NewObject('') 实例化一个共用对话框没问题,在某些客户的电脑上就报错?通常为了简单起见老鸟都会告诉他搜一个叫 vb6controls.reg 的文件,下载双击导入注册表。把正版开发工具(假设哈)才有的设计时授权直接转移给用户,严格来说是违法的
正确做法是先在 vcx 中子类化一个共用对话框的 OLE 控件,假设取名 comdlg,代码中使用时用 NewObject('comdlg')即可,无论用户是否有设计时授权都可以正常创建这个对象。原因吗,我猜测是 vfp 把这些注册和授权信息保存在 vcx'ole 字段中了
楼主所说的智能提示确实是个问题,例如在自定义的 grid 成员类 header、column 中我们就添加了很多属性,由于它们都只能在 prg 中定义,智能提示没有相应的 descript 使用时确实很容易犯迷糊,目前也只能去翻看 prg 中的注释。vcx 中的 descript 是放在 Reserved3 字段中的,智能提示照道理也应该是从这取的,vfp 的这些工具源码都在 xsource.zip 中,希望有好事者能把这个 foxcode.prg 改改!
[此贴子已经被作者于2023-3-26 20:30编辑过]