阅读:2332回复:8
高手帮我看看FlashShape问题...(C++ Builder 6.0)
<P>实现一图层闪烁,发现问题,不知如何修改,代码如下(C++Builder 6.0)</P>
<P>void __fastcall TForm1::Button1Click(TObject *Sender)<br>{<br> IMoMapLayerPtr lyr=(IDispatch*)CreateOleObject("MapObjects2.MapLayer");<br> lyr=MapOBJ1->Layers->Item(Variant(0));</P> <P> IMoRecordsetPtr rect;<br> rect=lyr->Records;</P> <P> IMoFieldPtr field;<br> field=rect->Fields->Item(Variant("Shape"));</P> <P> MapOBJ1->ControlInterface->FlashShape(field->Value,4);</P> <P>}</P> <P>提示出错:不能将tagVARIANT转换为IDispatch * (最后一行)</P> <P>函数声明为:FlashShape(IDispatch *,short);</P> <P>而field->Value的类型为tagVariant,如何修改?</P> <P>改成MapOBJ1->ControlInterface->FlashShape((IDispatch*)field->Value,4);依然不对,郁闷。我折腾半天也没弄好。请求帮助</P><br> [此贴子已经被作者于2007-1-9 15:51:59编辑过]
|
|
1楼#
发布于:2007-01-09 17:10
field->Value.不要value行不行
|
|
2楼#
发布于:2007-01-09 19:19
<P> IMoMapLayerPtr lyr=(IDispatch*)CreateOleObject("MapObjects2.MapLayer");<BR> lyr=MapOBJ1->Layers->Item(Variant(0));</P>
<P> IMoRecordsetPtr rect;<BR> rect=lyr->Records;</P> <P> IMoFieldPtr field;<BR> field=rect->Fields->Item(Variant("Shape"));<BR> MapOBJ1->FlashShape(field,4);</P> <P>将field->Value改为field,可以运行,没有错误,但是功能达不到呀,不闪烁。</P> |
|
3楼#
发布于:2007-01-09 22:59
<P>把Variant改成TVariant,看看。</P>
<P>试过用Variant生成新图层运行会出错。</P> |
|
4楼#
发布于:2007-01-10 09:40
<P>哈哈,我知道了.................</P>
[此贴子已经被作者于2007-1-10 11:26:29编辑过]
|
|
5楼#
发布于:2007-01-10 14:55
<P>有没有cbuilder选择地物的源程序??</P>
|
|
6楼#
发布于:2007-01-11 10:03
我这有本书《地理信息系统二次开放实例教程-C++Builder和MapObjects实现》,不过是CB5编的,很多要改,讲的是编写“北京市地理信息公众查询系统”,有选择地物的部分。我刚刚买,还没来得及细看。
|
|
7楼#
发布于:2007-01-11 21:11
<P>我也就有这本书。感觉资料太少了。</P>
|
|
8楼#
发布于:2007-01-13 19:26
资料太少
|
|