起步软件技术论坛-X3

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 幽蓝星空

【搞定】formula升级后,引用它的地方编译通过但运行错误**

[复制链接]
发表于 2007-3-30 14:03:46 | 显示全部楼层
不是的,5楼是包装到平台之前,从word直接看ocx的结果,就是只有两个参数
你在客户端执行一下ocx的注册,确保你注册的是10楼给的控件,然后在看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-30 14:27:45 | 显示全部楼层
我们用delphi6 update2按照控件导入方式再次尝试了一次,ocx也重新注册了一次,但最终还是老问题,“无效的参数数目”
回复 支持 反对

使用道具 举报

发表于 2007-3-30 15:28:37 | 显示全部楼层
这个控件好像有问题吧,我在Delphi中注册这个控件,执行下列程序
取单元格的值正常,可以取到
但是设置时候就提示错误,而且这个错误是EOleSysError,是这个控件报过来的

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not assigned(f) then
    f := TF1Book.Create(Self);
  f.Parent := Self;
  showmessage(f.TextRC[1, 1]);
//  f.TextRC[1, 1] := 'abc';
end;
回复 支持 反对

使用道具 举报

发表于 2007-3-30 15:29:49 | 显示全部楼层
从他提供的VB例子看,是就是应该这样赋值的
    F1View.TextRC(1, 1) = "Date"
    F1View.TextRC(1, 2) = "Ref"
    F1View.TextRC(1, 3) = "ayee"
    F1View.TextRC(1, 6) = "Clr"
    F1View.TextRC(1, 8) = "Balance"
    F1View.TextRC(2, 3) = "Category"
    F1View.TextRC(2, 4) = "Memo"

不清楚为什么了
回复 支持 反对

使用道具 举报

发表于 2007-3-30 15:30:10 | 显示全部楼层
跟Delphi中调用控件的机制有关吧
回复 支持 反对

使用道具 举报

发表于 2007-3-30 15:48:02 | 显示全部楼层
改成
  F1Book1.DefaultInterface. TextRC[1,1] := 'asdf';            
这样就好了,没有明白为什么
回复 支持 反对

使用道具 举报

发表于 2007-3-30 15:49:32 | 显示全部楼层
找到原因了,是Delphi生成TLB.pas文件时候的bug
生成的函数是
procedure TF1Book.Set_TextRC(nRow: Integer; nCol: Integer; const Param3: WideString);
  { Warning: The property TextRC has a setter and a getter whose
  types do not match. Delphi was unable to generate a property of
  this sort and so is using a Variant to set the property instead. }
var
  InterfaceVariant: OleVariant;
begin
  InterfaceVariant := DefaultInterface;
  InterfaceVariant.TextRC := Param3;
end;
但是,应该的代码是
procedure TF1Book.Set_TextRC(nRow: Integer; nCol: Integer; const Param3: WideString);
  { Warning: The property TextRC has a setter and a getter whose
  types do not match. Delphi was unable to generate a property of
  this sort and so is using a Variant to set the property instead. }
var
  InterfaceVariant: OleVariant;
begin
  InterfaceVariant := DefaultInterface;
  InterfaceVariant.TextRC[nRow, nCol] := Param3;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-30 16:19:08 | 显示全部楼层
谢谢你,看来花费了你不少时间,我们再试一试!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-30 17:26:37 | 显示全部楼层
成功!
结贴!
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-29 08:58 , Processed in 0.040173 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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