華表CELL組件的應(yīng)用
本人所在單位于二○○二年購(gòu)買了Cell組件,此期間使用Cell組件開發(fā)了不少項(xiàng)目,現(xiàn)將自己使用的一些感受及經(jīng)驗(yàn)整理成文,拋磚引玉之作,期待得到大家指點(diǎn)。
安 裝 篇
Cell組件是遵循ActiveX標(biāo)準(zhǔn)的控件,很容易安裝到自己的開發(fā)環(huán)境中。
1、安裝華表公司的Cell組件。
2、打開DELPHI,選擇ComponentImport ActiveX Control…菜單。
3、在Import ActiveX窗體中選擇Cell5.2 ActiveX Control Module選項(xiàng),點(diǎn)擊最下面的【Install…】按鈕。
4、在Package窗體中點(diǎn)擊【Compile】、【Install】按鈕,退出時(shí)選擇不保存。
5、在控件區(qū)的ActiveX頁(yè)中出現(xiàn)一個(gè)Cell圖標(biāo),表示安裝成功。
6、直接將Cell圖標(biāo)拖到Form中即可使用。
7、Cell組件提供了幾種開發(fā)環(huán)境中的Demo,可以直接照辦使用,那基本就是一個(gè)現(xiàn)成的產(chǎn)品。
初 級(jí) 篇
初期使用Cell組件進(jìn)行二次開發(fā),主要用于表格套打、表格計(jì)算、表的控制等功能。
1、表格套打
許多行政管理部門在發(fā)放證書或格式文件管理過程中,對(duì)套打功能要求是比較高的。南京建工系統(tǒng)發(fā)放的建筑工程竣工備案證書以前就是用Word排個(gè)模版,但是實(shí)際內(nèi)容與模版預(yù)留空間不符時(shí),或者多敲了換行鍵,整個(gè)格式就亂套了,工作人員又要重新排版,反復(fù)打印、調(diào)試,真是浪費(fèi)時(shí)間、浪費(fèi)紙張、浪費(fèi)精力。我們就用Cell組件做了一個(gè)模版,結(jié)合業(yè)務(wù)系統(tǒng)自動(dòng)提取工程概況,現(xiàn)在用戶點(diǎn)擊工程名稱,馬上就在屏幕上看到備案證書全部?jī)?nèi)容,各單元格中的文字可以用調(diào)整大小、自動(dòng)換行等方法控制展現(xiàn),并且只打印原來(lái)要手工填寫的內(nèi)容,大大地提高了工作效率和正確率。這點(diǎn)在金山WPS和微軟Word、Excel都沒有實(shí)現(xiàn)。
屏幕登記界面 套打預(yù)覽效果
技術(shù)提示:對(duì)套打中要控制單元格內(nèi)容是否打印,有兩種方法:一是最終用戶進(jìn)入單元格屬性直接設(shè)置。二是開發(fā)人員使用SetCellPrintHide命令控制打印機(jī)是否打印。
2、表格計(jì)算
這一點(diǎn)與Excel的計(jì)算功能類似,就不多說了。
3、表的控制
最近寫一個(gè)業(yè)務(wù)單操作與流程管理對(duì)應(yīng)的軟件項(xiàng)目,要求在一張完整的業(yè)務(wù)單上,A登記前半部分申報(bào)內(nèi)容,不能看到后面的記錄和審批內(nèi)容,B只能查看A登記內(nèi)容的一部分,且不允許修改A登記的任何內(nèi)容,但對(duì)自己的內(nèi)容可以輸入,如此一層一層的控制,最后F可以看到全部?jī)?nèi)容,但仍然不允許修改。經(jīng)過各種試驗(yàn)比較,最后選用Cell組件完成了這個(gè)項(xiàng)目主體框架部分。整個(gè)程序只用了80多行語(yǔ)句就實(shí)現(xiàn)了控制50多種表,而且結(jié)構(gòu)清晰,可維護(hù)性強(qiáng),足以應(yīng)付將來(lái)增加更多業(yè)務(wù)項(xiàng)目表的功能。
A登記(B試驗(yàn)記錄不可見)
B試驗(yàn)(A內(nèi)容部分禁看,全部禁改)
技術(shù)提示:我們首先封閉單元格屬性的直接操作,然后結(jié)合各個(gè)流程點(diǎn)的操作權(quán)限和Cell組件的命令來(lái)控制表單的展現(xiàn)形式。具體使用的命令如下:SetCellShowHide控制哪些單元格內(nèi)容在屏幕上顯示或隱藏,SetRowUnHidden/SetRowHidden控制哪些行需要顯示或隱藏,SetCellInput控制哪些單元格是輸入或只讀。
提 高 篇
Cell組件作為一個(gè)控件,似乎只能被動(dòng)地填充數(shù)據(jù),實(shí)現(xiàn)表格自身的計(jì)算、套打等功能,很長(zhǎng)一段時(shí)間我們也就這么用了。隨著應(yīng)用的深入,我們感覺將Cell表格作為宿主程序,根據(jù)用戶在表格中輸入的內(nèi)容向我們的開發(fā)環(huán)境提出請(qǐng)求很有必要,而且控制更加靈活。經(jīng)過華表公司的介紹,原來(lái)奧秘盡在Cell組件提供的自定義函數(shù)中,我們?cè)谧远x函數(shù)中可以實(shí)現(xiàn)一些表格無(wú)法實(shí)現(xiàn)的功能,包括界面控制和后臺(tái)數(shù)據(jù)庫(kù)處理,使Cell組件完全與我們的開發(fā)環(huán)境融為一體,最大限度地發(fā)揮Cell組件的功能和表格的便利。
在From的Create事件中定義函數(shù)接口。
procedure TForm1.FormCreate(Sender: TObject);
var
strFun: WideString;
begin
strFun := ''"天相函數(shù)" String txInterFace(double n)'';
Cell1.DefineFunctions(strFun); //將自定義函數(shù)添加至CELL中
strFun := ''"天相函數(shù)" Double txGetDb(double n)'';
Cell1.DefineFunctions(strFun);
End;
在Cell的自定義函數(shù)事件CalcFunc中定義函數(shù)的實(shí)現(xiàn)功能。CalcFunc事件根據(jù)表格中輸入內(nèi)容確認(rèn)時(shí)立即觸發(fā)的機(jī)制實(shí)現(xiàn)與開發(fā)環(huán)境的互動(dòng)。而Cell內(nèi)置函數(shù)對(duì)CalcFunc事件無(wú)效,華表公司在這點(diǎn)上設(shè)計(jì)的非常合理。
procedure TForm1.Cell1CalcFunc(Sender: TObject; const name: WideString;
rettype, paranum: Integer);
begin
if name=' txInterFace' then //執(zhí)行界面操作的自定義函數(shù)
begin
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Cell1.SetFuncResult(1, ''調(diào)用窗體成功!'', 1);
//由于函數(shù)定義返回類型為string,所以實(shí)際返回‘調(diào)用窗體成功!'
end;
if name=''txGetDb'' then //執(zhí)行數(shù)據(jù)庫(kù)操作的自定義函數(shù)
with DataModal do
begin
if spTmp.Active then spTmp.Close;
// spTmp是ADOStoredProc的實(shí)例。返回從存儲(chǔ)過程獲取的數(shù)據(jù)
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;
下面是實(shí)際使用情況。
在Cell表格中輸入“=”號(hào),彈出公式框,通過“?”按鈕選擇txInterFace函數(shù)或直接輸入txInterFace函數(shù),最后選擇“√” 按鈕,將立即觸發(fā)CalcFunc事件中的txInterFace函數(shù)執(zhí)行體,彈出Form2窗體,在Form2窗體你可以盡情地做自己的事啦。
使用自定義函數(shù)的另一個(gè)好處就是別人沒法拷走你的表格,因?yàn)闆]有你的程序配合就無(wú)法實(shí)現(xiàn)表格獨(dú)特的功能。
總而言之,我們已經(jīng)利用Cell組件的強(qiáng)大功能解決了許多實(shí)際問題。
相關(guān)文章
互聯(lián)網(wǎng)應(yīng)用廣泛 電子商務(wù)正當(dāng)時(shí)
截止今年上半年,我國(guó)互聯(lián)網(wǎng)普及率由1997年的0.1%上升到19.1%。互聯(lián)網(wǎng)應(yīng)用越來(lái)越廣泛,以電子政務(wù)、電子商務(wù)、企業(yè)信息化等為代表的信息化應(yīng)用熱潮方興未艾。2008-12-12企業(yè)郵件管理有新招 網(wǎng)上網(wǎng)下輕松應(yīng)對(duì)
隨著全球化趨勢(shì)的到來(lái),市場(chǎng)競(jìng)爭(zhēng)更加激烈,因此對(duì)于企業(yè)來(lái)說,信息化、電子商務(wù)成為了必需。正是由于中小企業(yè)信息化和電子商務(wù)的需求催生了企業(yè)郵箱的需求。2008-12-12觀察:中小網(wǎng)站將漸漸成為互聯(lián)網(wǎng)的主角
2008-07-07中文域名狂熱未減 市場(chǎng)價(jià)值無(wú)限攀升
近來(lái),中文域名在輿論界掀起的大潮連綿起伏,雖然在這股輿論大潮中有褒有貶,但不可否認(rèn)的是,中文域名獲得國(guó)際通行證,不止是中國(guó)更是全世界非拉丁用語(yǔ)國(guó)家在互聯(lián)網(wǎng)領(lǐng)域通過不懈努力取得的巨大進(jìn)步。2009-11-11域名深耕電子商務(wù) 幫助企業(yè)厚積而薄發(fā)
2009-07-07微軟推DreamSpark計(jì)劃為學(xué)生提供免費(fèi)軟件下載地址
2008-02-02我國(guó)成為全球第二大服務(wù)器消費(fèi)國(guó)
截至2008年前三季度,中國(guó)服務(wù)器市場(chǎng)出貨量達(dá)到了552824臺(tái),同比增長(zhǎng)14.7%;而市場(chǎng)規(guī)模為25.6億美元,與去年同期相比僅增長(zhǎng)了1.6%。2009-01-01域名產(chǎn)業(yè)極速升溫 融入企業(yè)經(jīng)濟(jì)發(fā)展戰(zhàn)略
隨著互聯(lián)網(wǎng)的加速發(fā)展,“域名”也在不斷升溫,而近年來(lái)各著名的域名搶注、域名開發(fā)以及各級(jí)政府對(duì)域名的重視,使得域名產(chǎn)業(yè)從萌生到火爆。2009-06-06