華表CELL組件的應用技能提升( 二 )


strFun := '"天相函數" Double txGetDb(double n)';
Cell1.DefineFunctions(strFun);
End;
在Cell的自定義函數事件CalcFunc中定義函數的實現功能 。 CalcFunc事件根據表格中輸入內容確認時立即觸發的機制實現與開發環境的互動 。 而Cell內置函數對CalcFunc事件無效, 華表公司在這點上設計的非常合理 。
procedure TForm1.Cell1CalcFunc(Sender: TObject; const name: WideString;
rettype, paranum: Integer);
begin
if name=’ txInterFace’ then //執行界面操作的自定義函數
begin
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Cell1.SetFuncResult(1, '調用窗體成功!', 1);
//由于函數定義返回類型為string, 所以實際返回‘調用窗體成功!’
end;
if name='txGetDb' then //執行數據庫操作的自定義函數
with DataModal do
begin
if spTmp.Active then spTmp.Close;
// spTmp是ADOStoredProc的實例 。 返回從存儲過程獲取的數據
spTmp.ProcedureName:= 'PJC_SET_TRPT';
spTmp.Parameters.Refresh;
spTmp.Parameters.ParamValues['@XBH']:= '1010';
spTmp.Parameters.ParamByName('@RBH').Direction:= pdOutput;
spTmp.ExecProc;
Cell1.SetFuncResult(spTmp.Parameters.ParamValues['@RBH'], '', 0);
spTmp.Close;
end;
end;
下面是實際使用情況 。

華表CELL組件的應用技能提升

文章插圖

在Cell表格中輸入“=”號, 彈出公式框, 通過“?”按鈕選擇txInterFace函數或直接輸入txInterFace函數, 最后選擇“√” 按鈕, 將立即觸發CalcFunc事件中的txInterFace函數執行體, 彈出Form2窗體, 在Form2窗體你可以盡情地做自己的事啦 。
使用自定義函數的另一個好處就是別人沒法拷走你的表格, 因為沒有你的程序配合就無法實現表格獨特的功能 。
總而言之, 我們已經利用Cell組件的強大功能解決了許多實際問題 。

推薦閱讀