lazybones
发表于 2005-2-15 22:13:00
使用SelectOnScreen(FilterType,FilterData)时,给定FilterType,FilterData也有麻烦:
<BR>var<BR>vType,vData:OleVariant;<BR>...<BR>vType:=VarArrayCreate(,varInteger);<BR>vData:=VarArrayCreate(,varVariant);<BR>vType:=8;<BR>vType:=62;<BR>vData:='0';<BR>vData:=7; <BR>CadSelect.SelectOnScreen(vType,vData);<BR>运行时提示“参数FilterType(位于SelectOnScreen)无效”
有大虾告知将vType:=VarArrayCreate(,varInteger);中varInteger改为VT_I2则通过(当然先要uses ActiveX)。
分析原因是类型错误,varInteger位置正确的类型是varSmallInt,换用varSmallInt测试通过。
这个问题麻烦的是:VBA帮助中对FilterType的类型说明是Integer,类型库转换后的AutoCAD_TLB.pas中只说明FilterType类型为OleVariant,我们很自然推论FilterType为变体数组,元素为varInteger类型,没有任何线索说明元素类型为varSmallInt!
唉,经常被这些隐蔽的小问题困挠,有些气馁...
jauni
发表于 2005-2-25 09:29:00
类型varSmallInt 困扰了我好久了,迫使我不得不又编了lsp放在cad里,用command去调用,感觉总是不好,太感谢了!