轉(zhuǎn)帖|其它|編輯:郝浩|2012-03-25 21:07:18.000|閱讀 531 次
概述:Text Control 中的域可以與MS Word中的域進行相互的導(dǎo)入和導(dǎo)出操作,Text Control中的ApplicationField類為獲取/設(shè)置域的數(shù)據(jù)/參數(shù)提供了相應(yīng)的公共接口。下面將結(jié)合MS Word中最常用的MERGEFIELD 和 FORMTEXTBOX功能來講解域相關(guān)的操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Text Control 中的域可以與MS Word中的域進行相互的導(dǎo)入和導(dǎo)出操作,Text Control中的ApplicationField類為獲取/設(shè)置域的數(shù)據(jù)/參數(shù)提供了相應(yīng)的公共接口。下面將結(jié)合MS Word中最常用的MERGEFIELD 和 FORMTEXTBOX功能來講解域相關(guān)的操作。
相應(yīng)的源代碼可以在TX Text Control.NET的安裝目錄中找到:
Samples\WinForms\VB.NET\ ApplicationFields
Samples\WinForms\CSharp\ ApplicationFields
(一)實現(xiàn)MERGEFIELD 類
在MS Word和RTF文檔中會經(jīng)常用到合并域,通過合并域能在模板設(shè)計器中為文本域添加一些附加信息,例如:可以指定文本應(yīng)該顯示在文本域的前面還是后面,或者指定文本的顯示格式。為了能夠處理這些字段和相應(yīng)的功能,示例程序中實現(xiàn)了三個不同的類:
MergeField類繼承與TextField,并擴展了相應(yīng)功能。通過MergeField可以得到該類所處理的ApplicationField的引用。此外,MergeField包含下面的這些屬性:
當(dāng)設(shè)置MergeField的TextBefore屬性時,會相應(yīng)地設(shè)置ApplicationField的Text屬性,此外,新的設(shè)置會以一種合適的值保存在Parameters屬性中。
MergeFieldCollection是一個MergeField的集合類,它實現(xiàn)了標(biāo)準(zhǔn)集合類型的公共屬性和方法。
最后,需要實現(xiàn)TextControl和MergeFieldCollection集合中各個對象的同步。當(dāng)ApplicationField集合改變時 都需要進行同步操作。這個類型提供了兩個重要的事件,用于監(jiān)聽TextControl中的變化:TextFieldCreated 和 TextFieldDeleted。
啟動示例程序之后,點擊File/Load菜單加載示例文檔,該文檔包含很多合并域字段,將輸入光標(biāo)定位到一個存在的字段中,例如《COMPANY》字段:
從MergeField菜單中選擇Edit..菜單項,打開合并域字段的編輯對話框:
在這個對話框中,可以處理MergeField的所有屬性,選中“Text to be inserted after”復(fù)選框,然后輸入相應(yīng)的文字,這些文本將被插入到該字段的后邊,點擊【OK】按鈕關(guān)閉設(shè)置該設(shè)置對話框。
通過Merge/Merge fields...菜單打開客戶數(shù)據(jù)表格,選中一條客戶信息,點擊【Merge】按鈕將數(shù)據(jù)庫中數(shù)據(jù)合并到文檔中。
以上操作時通過循環(huán)遍歷MergeFieldCollection中的字段,并替換字段的Text屬性,代碼如下:
[C#]
DataGridViewRow curRow = dataGridView1.SelectedRows[0];
foreach (MergeField curMergeField in m_mergeFieldCollection)
{
foreach (DataGridViewTextBoxCell curCell in curRow.Cells)
{
if (curCell.OwningColumn.Name == curMergeField.MergeFieldName)
curMergeField.Text = curCell.Value.ToString();
}
}
(二)實現(xiàn)FORMTEXT類
FormText字段在MS Word中用來創(chuàng)建可填充的文檔。在許多應(yīng)用系統(tǒng)中,例如文檔自動化,這些字段必須是完全自動可讀的。ApplicationField對象就像是這些字段所有屬性的一個容器。
為了與第一個例子有所區(qū)別,這個例子中為FormText字段實現(xiàn)了一個類型,該類型不是繼承于TextField。在該示例中沒有需要同步的集合類型, 每次編輯一個FORMTEXT類型的ApplicationField,都會創(chuàng)建一個FormText對象:
[C#]
FormText curFormText = new FormText(textControl1.ApplicationFields.GetItem());
ApplicationField的應(yīng)用被存儲在FormText實例中,與第一個例子類型,ApplicationField通過get或set訪問與FormText屬性相對應(yīng)的Parameters。可以通過對話框來改變特定窗體文本字段的屬性設(shè)置:
(三)創(chuàng)建、合并MS Word 模板
郵件合并是TX Text Control最典型的應(yīng)用場景。將TX Text Control中與MS Word一致的字段功能與TX Text Control .NET Server的自動郵件合并組件相結(jié)合,可以構(gòu)建出高性能的郵件合并應(yīng)用系統(tǒng)。
TX Text Control不僅支持合并操作,而且提供了所見即所得的模板編輯器。
本示例工程主要演示TX Text Control的郵件合并能力,主要操作步驟如下:
該功能與MS Word 的郵件合并功能極為相似,而且還提供源碼,完全支持用戶自定義操作。下面講解如何使用該示例。
1、 鏈接數(shù)據(jù)庫
通過點擊工具欄中的下拉框查看加載的數(shù)據(jù)表,如果該數(shù)據(jù)庫包含多個數(shù)據(jù)表,你可以只選擇你需要的數(shù)據(jù)表,然后合并字段將制動添加到Insert Field下拉按鈕中。
2、插入合并字段
3、導(dǎo)出文檔
最后,點擊導(dǎo)出按鈕,開始數(shù)據(jù)合并操作。
這實際是打開一個新的窗體,窗體包括一個TX Text Control和一個簡單的工具欄。通過DocumentServer.MailMerge組件在后臺完成模板與數(shù)據(jù)庫中數(shù)據(jù)合并的工作,這一個合并操作只需3行代碼:
[C#]
mailMerge.TextComponent = tx;
mailMerge.LoadTemplateFromMemory(Document,
TXTextControl.DocumentServer.FileFormat.InternalUnicodeFormat);
mailMerge.Merge(DataTable, true);
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載