原創|使用教程|編輯:郝浩|2013-04-27 14:15:31.000|閱讀 605 次
概述:如果需要定期使用一個非內置函數或者是將多個內置函數合并成一個獨立的函數,那么你可以定義自己的自定義函數。這些自定義函數可以用來調用任意內置函數。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
如果需要定期使用一個非內置函數或者是將多個內置函數合并成一個獨立的函數,那么你可以定義自己的自定義函數。這些自定義函數可以用來調用任意內置函數。
一個自定義函數的名稱可以和內置函數相同。自定義函數優先級別高于內置函數。自定義函數是動態鏈接的。因此,應用程序可以重新定義現有的自定義函數。
1、 定義自定義函數。
2、 在表格中注冊函數。
3、 使用自定義函數。
第一步是創建一個自定義函數。在這個例子中,我們創建三個自定義函數:一個立方體的數學函數,一個XOR邏輯函數,和一個空字符串函數。下面是具體的實現代碼。
CUBE定制函數是用來計算數字的三次方。即,CUBE(x)相當于POWER(x,3)。
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自定義函數執行兩個布爾值的專用OR運行。這是類似于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); } }
NULL函數返回恒量值NULL。(類似于FALSE()函數返回恒量值false)。
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; } }
第二步是使用下面的代碼片段注冊自定義函數。
C#
FpSpread1.ActiveSheetView.AddCustomFunction(new CubeFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new XorFunctionInfo()); FpSpread1.ActiveSheetView.AddCustomFunction(new NullFunctionInfo());
第三步是在公式中使用自定義函數,如下面的代碼所示。
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)");
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網