起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: newjack

[请求]北京图王的VG控件转X3控件时报错**

[复制链接]
发表于 2008-1-11 12:16:01 | 显示全部楼层
已经电话沟通,由于在平台中无法对IGroup接口的坐标属性赋值,导致无法画出图形。

具体原因不明,需要visual-Graphic公司提供信息。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-11 12:19:14 | 显示全部楼层
图王公司答复:
坐标属性只是普通的变量而已,出现这种情况,应该是赋值没有赋进去
回复 支持 反对

使用道具 举报

发表于 2008-1-11 14:10:46 | 显示全部楼层
楼主,经过多次测试,在平台中为IGroup的left、top等属性赋值无效(见图片)。

在平台上,我们也使用过很多接口,做属性赋值这些操作都没有出现什么问题,估计应该是与这个接口的具体实现方式有关。
我们单方面无法确定问题原因,请楼主协调控件的提供商跟我们共同来解决这个问题。

1.png

19.01 KB, 下载次数: 55

回复 支持 反对

使用道具 举报

发表于 2008-1-25 13:59:48 | 显示全部楼层
找到原因了:
图王控件 IUnit 接口的
procedure SetPropertyValue(const Name: WideString; Value: OleVariant); safecall;
方法传递了一个OleVariant参数,而平台不支持直接传递Variant对象。
所以需要在vg_TLB.pas中封装一下
procedure SetPropertyValue(obj: IUnit; propName: String; prop: IDispatch);
这样,在x3中用这个方法替代所有的IUnit.SetPropertyValue方法调用(两处 ):
procedure TvgDemoform.vgctrl1SheetChange(Sender: TObject; const ASheet: ISheet);
begin
     if vgctrl1.ActiveSheet<>nil then
     begin
     vgx3.vg_tlb.SetPropertyValue((vgctrl1.ActiveSheet as IUnit), 'cursheet', vgctrl3.ActiveSheet);
     vgx3.vg_tlb.SetPropertyValue((vgctrl2.ActiveSheet as IUnit), 'cursheet', vgctrl3.ActiveSheet);
     vgx3.vg_tlb.SetPropertyValue((vgctrl4.ActiveSheet as IUnit), 'cursheet', vgctrl3.ActiveSheet);
     vgx3.vg_tlb.SetPropertyValue((vgctrl5.ActiveSheet as IUnit), 'cursheet', vgctrl3.ActiveSheet);

     {vgctrl1.ActiveSheet.SetPropertyValue('cursheet', vgctrl3.ActiveSheet);
     vgctrl2.ActiveSheet.SetPropertyValue('cursheet', vgctrl3.ActiveSheet);
     vgctrl4.ActiveSheet.SetPropertyValue('cursheet', vgctrl3.ActiveSheet);
     vgctrl5.ActiveSheet.SetPropertyValue('cursheet', vgctrl3.ActiveSheet);
     }
     end;
end;


procedure TvgDemoform.vgctrl3SelectChange(Sender: TObject);
var
   s:string;
begin
     vgx3.vg_tlb.SetPropertyValue((vgctrl4.ActiveSheet as IUnit), 'selected', vgctrl3.ActiveSheet.Selection);
     //vgctrl4.ActiveSheet.SetPropertyValue('selected', vgctrl3.ActiveSheet.Selection);

     vgctrl1.Execute('OnSelectChange()');
     vgctrl1.Execute('btnUndo.Enable=CurSheet.Owner.CanUndo()');
     vgctrl1.Execute('btnRedo.Enable=CurSheet.Owner.CanRedo()');
     //s := 'SetMsg( 1,"["+str(' + SysUtils.FloatToStr(vgctrl3.ActiveSheet.Selection.Left ) + ',3)+","+ ';
     //s := s+'Str(' + SysUtils.FloatToStr(vgctrl3.ActiveSheet.Selection.Top) + ',3) + "]-[" +';
     //s := s+'str(' + SysUtils.FloatToStr(vgctrl3.ActiveSheet.Selection.Width) + ',3)+","+ ';
     //s := s+'Str(' + SysUtils.FloatToStr(vgctrl3.ActiveSheet.Selection.Height) + ',3) + "]" )';
     //vgctrl4.Execute(s);
end;

vg_forjustep.rar

57.55 KB, 下载次数: 48

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-6 03:35 , Processed in 0.042273 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表