|
楼主 |
发表于 2009-6-12 10:14
|
显示全部楼层
Excel的xll加载宏的开发(3):解决delphi语言版本的函数和参数描述问题
2007-11-16 18:21 参考C语言版本,发现了Delphi语言版本各个函数的描述和各参数的描述未能加上的原因在于,
EResult := Excel4V(xlfregister,@res,12, // 准备传递给register函数的参数个数12
经过修改后,顺利地把各个函数的描述和各参数的描述加上。
--------------------------------------------------------------------------------------
Function Register_UDF2Args(Const UDFName,UDFTypeText,UDFFunctionText,UDFArgumentText,
UDFCategory,UDFDescr,UDFDescrArgs1,UDFDescrArgs2:ShortString;Const UDFMacrotype:Integer):integer;
var
S:Shortstring;
Begin
Res.xltype := xltypeerr;
Res.val.err := xlerrvalue;
S:=GetName;
pxModuleText.SetStr(S); // Xll名
pxProcedure.SetStr(UDFName); // 函数名
pxTypeText.SetStr(UDFTypeText); // 返回类型
pxFunctionText.SetStr(UDFFunctionText); // 函数向导中的函数名称
pxArgumentText.SetStr(UDFArgumentText); // 函数的参数
pxCategory.SetStr(UDFCategory); // 函数向导中的函数分类名
pxMacrotype.SetNum(UDFMacrotype); // 函数向导中的函数注册类型 1 = 可见, 0 = 隐藏
pxDescr.SetStr(UDFDescr); // 函数的描述
pxDescrArgs1.SetStr(UDFDescrArgs1); // 函数的参数1的描述
pxDescrArgs2.SetStr(UDFDescrArgs2); // 函数的参数2的描述
// function title, argument types, function name, arg names,
// type (1=func,2=cmd),
// group name (func wizard), Hot Key, help ID,
// function description,
// (repeat) description of each argument
EResult := Excel4V(xlfregister,
@res,
12, //准备传递给register函数的参数个数
[pxModuletext.thelpxloper, // 模块名(DLL的名称)
pxProcedure.thelpxloper, // 函数名
pxTypeText.thelpxloper, // 返回类型+参数类型
pxFunctionText.thelpxloper, // 函数名
pxArgumentText.thelpxloper, // 函数的参数
pxMacroType.thelpxloper, // 宏类型
pxCategory.thelpxloper, // 分类名称
zlpxloper, // 快捷键(Hot Key)
zlpxloper, // help ID
pxDescr.thelpxloper, // 函数的描述
pxDescrArgs1.thelpxloper, // 函数的参数1的描述
pxDescrArgs2.thelpxloper // 函数的参数2的描述
]
);
asm pop sink; End; // Never Remove
Result := trunc(res.val.num); // ID Code (4)
End; |
|