原創(chuàng)|其它|編輯:郝浩|2012-11-19 10:59:23.000|閱讀 325 次
概述:如果你在Spread ASP.NET創(chuàng)建應(yīng)用程序中需要定期使用不在內(nèi)置函數(shù)里的一些其他的函數(shù),又或者說你想要將一些內(nèi)置的功能添加到單個函數(shù)上,你可以通過自定義函數(shù)來實現(xiàn),那么你就可以將其作為內(nèi)置的函數(shù)進行調(diào)用了。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如果你在創(chuàng)建應(yīng)用程序中需要定期使用不在內(nèi)置函數(shù)里的一些其他的函數(shù),又或者說你想要將一些內(nèi)置的功能添加到單個函數(shù)上,你可以通過自定義函數(shù)來實現(xiàn),那么你就可以將其作為內(nèi)置的函數(shù)進行調(diào)用了。
自定義函數(shù)可以同內(nèi)置函數(shù)有一樣的名字,單數(shù)自定義函數(shù)優(yōu)先于內(nèi)置的函數(shù),自定義功能被動態(tài)的鏈接到評估時間,所以應(yīng)用程序可以定義一個現(xiàn)有的自定義函數(shù)。
來看一下實例:
第一步就是創(chuàng)建自定義函數(shù),在這個例子里面呢,有一個多維的數(shù)學(xué)函數(shù),一個XOR邏輯函數(shù),以及一個空字符串函數(shù),將通過下面的代碼實現(xiàn)自定義功能:
C#代碼如下:
public class CubeFunctionInfo : FunctionInfo { public override string Name { get { return "CUBE"; } } public override int MinArgs { get { return 1; } } public override int MaxArgs { get { return 1; } } public override object Evaluate (object[] args) { double num = CalcConvert.ToDouble(args[0]); return num * num * num; } }
XOR自定義函數(shù)執(zhí)行異或運算兩個布爾值,這類似于在C 中的“^”操作符或在VB中XOR運算符。
C#代碼如下:
public class XorFunctionInfo : FunctionInfo { public override string Name { get { return "XOR"; } } public override int MinArgs { get { return 2; } } public override int MaxArgs { get { return 2; } } public override object Evaluate (object[] args) { bool arg0 = CalcConvert.ToBool(args[0]); bool arg1 = CalcConvert.ToBool(args[1]); return (arg0 || arg1) && (arg0 != arg1); } }
空函數(shù)返回空值,類似于FALSE()函數(shù)返回假的常量值。
C#代碼如下:
public class NullFunctionInfo : FunctionInfo { public override string Name { get { return "NULL"; } } public override int MinArgs { get { return 0; } } public override int MaxArgs { get { return 0; } } public override object Evaluate (object[] args) { return null; } }
第二步就是用下面的代碼生成自定義函數(shù)。
FpSpread1.ActiveSheetView.AddCustomFunction(new CubeFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new XorFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new NullFunctionInfo());
第三步就是在公式中使用自定義函數(shù),如下代碼所示:
C#代碼如下:
FpSpread1.ActiveSheetView.SetFormula(0, 0, "CUBE(5)"); FpSpread1.ActiveSheetView.SetFormula(1, 0, "XOR(FALSE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 1, "XOR(TRUE,FALSE)"); FpSpread1.ActiveSheetView.SetFormula(1, 2, "XOR(FALSE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(1, 3, "XOR(TRUE,TRUE)"); FpSpread1.ActiveSheetView.SetFormula(2, 0, "CHOOSE(1,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 1, "CHOOSE(2,100,NULL(),300)"); FpSpread1.ActiveSheetView.SetFormula(2, 2, "CHOOSE(3,100,NULL(),300)");
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件