- 积分
- 1074
- 明经币
- 个
- 注册时间
- 2002-11-28
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2005-2-15 22:13:00
|
显示全部楼层
使用SelectOnScreen(FilterType,FilterData)时,给定FilterType,FilterData也有麻烦:
var vType,vData:OleVariant; ... vType:=VarArrayCreate([0,1],varInteger); vData:=VarArrayCreate([0,1],varVariant); vType[0]:=8; vType[1]:=62; vData[0]:='0'; vData[1]:=7; CadSelect.SelectOnScreen(vType,vData); 运行时提示“参数FilterType(位于SelectOnScreen)无效”
有大虾告知将vType:=VarArrayCreate([0,1],varInteger);中varInteger改为VT_I2则通过(当然先要uses ActiveX)。
分析原因是类型错误,varInteger位置正确的类型是varSmallInt,换用varSmallInt测试通过。
这个问题麻烦的是:VBA帮助中对FilterType的类型说明是Integer,类型库转换后的AutoCAD_TLB.pas中只说明FilterType类型为OleVariant,我们很自然推论FilterType为变体数组,元素为varInteger类型,没有任何线索说明元素类型为varSmallInt!
唉,经常被这些隐蔽的小问题困挠,有些气馁...
|
|