文字管理控件TX

这段时间一向在切磋TX Text
Control的应用,由于那上面包车型地铁素材相对少之甚少,首要靠下载版本的案例代码进行钻探,以致合法的局地博客案例进行学习,使用总括了一些体验,特将其总括出来,供大家分享学习。本篇小说首要介绍TX
Text Control V20的相干应用体验。

1、TX Text Control控件介绍

TX Text Control是生机勃勃款效果看似于 MS Word
的文字管理控件,包蕴文书档案创造、编辑、打字与印刷、邮件合并、格式调换、拆分归拢、导入导出、批量生成等功能。普遍应用于公司文档管理,网址内容发表,电子病历中病案模板创立、病历书写、修改历史、接二连三打字与印刷、病案归档等效果的落到实处。

以此控件主要的法力就是足以视作Word以至任何文书档案的编辑器使用,纵然显示WOTucsonD内容的控件也是有局地,如作者辈得以应用DevExpress里面的RTF文书档案编辑器来落实,肖似运转的很好,结合Aspose.Word后台的文书档案管理,大家得以做到相仿报表的多寡变化,并且能够把变化后的文档举办展示、编辑等操作管理。

TX Text
Control即便作为文书档案编辑各地点都表现不错,可是其MailMerge邮件合併成效依旧不常接受的叁个功效,正是把大家的数额和文书档案模板来叁个联合,然后呈现最后的文书档案内容,这种能够用来做一些看似小票、邮件、职员和工人新闻等的数据管理和体现,MailMerge邮件合并能够绑定主从表的数量,能够相符超过半数的渴求。

自家当然想用它做三个左近电子病历同样的成效模块,不说在文书档案里面,大家很难产生一些下拉列表的管理(
官方博客里面有三个差不离的案例,但是倒霉用卡塔尔,经常情况下,借使大家只是做文书档案展现、数据统一等正规的操作,依旧很科学的。

本条控件的坚守介绍,能够参见葡萄城之中的网页介绍(卡塔 尔(阿拉伯语:قطر‎,那几个控件的连带开采职员使用然后分享资历的稿子相当少,能在英特网搜到的好些个是蒲陶城职员对那个控件的德姆o代码进行多少个归纳粘贴表明,未有进一层的入木九分介绍和采取场景的牵线。即使葡萄干城列举了多少个电子病历的商铺出品案例,不过这几家厂家的电子病历付加物是很难下载到,也绝不可知道真假只怕应用意况。

目前自个儿把这几个控件的各样风味做了一些学学,并再度把官方网址的文档编辑例子实行了全新开辟,参谋着做了一个全然同样的编辑器版本,也大都对它的顺序属性、方法处理有了二个越来越尖锐的问询。

大家先经过三个软件分界面来打探全部软件的有的效应(那些是本人仿照官方案例做的一个主次卡塔 尔(阿拉伯语:قطر‎。

图片 1

以此控件暗中认可安装后,会包含相当多德姆o案例,具体能够参照目录C:UsersAdministratorDocumentsTX
Text Control 20.0.NET for Windows FormsSamples 进行通晓。

 

2、TX Text Control控件的汉化

本条控件分界面暗中认可是塞尔维亚共和国语版本的,控件的相关菜单以致提示都以保加利亚共和国(The Republic of Bulgaria卡塔尔国语,因而大家供给对财富做一些国语本地化处理技能科学显示。

法定尚未提供粤语汉化包,只提供多个行业内部的日语能源,如下所示。

图片 2

咱俩须要做的正是将它们进行汉语翻译,然后再一次编写翻译(使用buildres.bat脚本编写翻译卡塔尔国为汉语财富dll。

作者们先选用VS编辑工具,把这几个葡萄牙共和国(República Portuguesa卡塔尔语财富记录调换为德文(这是三个相比较麻烦的行事,官方网站上有一点旧版本的汉语包可供参考,以致最新的V20软件(编辑器软件卡塔 尔(阿拉伯语:قطر‎下载下来运营参照卡塔尔。

图片 3

咱俩各类开展普通话管理,能够运用百度、谷歌的翻译,以致软件分界面包车型大巴参考哦。

图片 4

以管理员形式运维VS的命令行,然后实行命令举行编写翻译能源就可以。

buildres.bat zh-CN

图片 5

编写翻译成功后,在目录里面,会增添五个能源程序集。

txdocumentserver.resources.dll

txtextcontrol.resources.dll

然后大家把它复制到运维目录下,并投身zh-CN的目录里面就能够。有了那么些普通话化的能源程序集,大家就能够运用它实行对控件的放置菜单提醒举行中文化了。

汉语化操作和此外常规的做法一点差距也未有于,大家在Main函数里面,增添如下代码就可以。

Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-CN");

运行程序,我们使用右键菜单,开采中间的能源都早就平常汉化了,其余连锁的放权菜单和分界面也都足以看看平常汉化。

图片 6

 

3、TX Text Control的使用

有了汉化,只是大家健康使用控件的第一步,我们须要在前后相继里面整合控件,那么就需求对它实行应用,甚至对控件的属性、事件進展管理,本领拿到最好的利用成效。

咱俩在VS工具栏里面参预相应的控件,能够观看有以下相关的控件对象可供使用,平常情况下大家应用TextControl,然后在其底蕴上创办别的RulerBar、ButtonBar、StatusBar就可以,而借使大家必要联合数据(很常用卡塔尔就须求参预MailMerge控件对象。

图片 7

增多控件后,大家得以对控件的相干根底的复制、粘贴、剪切等操作能够平昔动用控件的API就可以达成。

        private void menuEdit_Undo_Click(object sender, EventArgs e)
        {
            _textControl.Undo();
        }

        private void menuEdit_Redo_Click(object sender, EventArgs e)
        {
            _textControl.Redo();
        }

        private void menuEdit_Cut_Click(object sender, EventArgs e)
        {
            _textControl.Cut();
        }

中间查找、替换对话框也是足以由此API实行调出。

        private void menuEdit_Find_Click(object sender, EventArgs e)
        {
            _textControl.Find();
        }

        private void menuEdit_Replace_Click(object sender, EventArgs e)
        {
            _textControl.Replace();
        }

利用这个最底子的API是寻常的操作。

而采取插入相关的靶子,如图片、文本框等,就必要做一些轻便的编码,方便把目的参加到TextControl对象里面。

        private void menuInsert_Image_Click(object sender, EventArgs e)
        {
            TXTextControl.Image imageNew = new TXTextControl.Image();
            _textControl.Images.Add(imageNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.ImageInsertionMode.DisplaceText);
        }
        private void menuInsert_TextFrame_Click(object sender, EventArgs e)
        {
            try
            {
                // Force Exception if standard version:
                _textControl.TextFrames.GetItem();
                Size sizeTextFrame = new Size(2268, 2268);   // 4 x 4 cm

                TXTextControl.TextFrame textFrameNew = new TXTextControl.TextFrame(sizeTextFrame);
                _textControl.TextFrames.Add(textFrameNew, TXTextControl.HorizontalAlignment.Left, -1, TXTextControl.TextFrameInsertionMode.DisplaceCompleteLines);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, ProductName);
            }
        }

其意气风发控件最广大的正是MailMerge实行合併数据的操作了,那个也是我们应用它来管理很多模板化文书档案的目标。

MailMerge对象合併数据的操作,首若是担任会集对象可能是DataTable对象,所以我们不得不将大家的数额转变为这种格式,不然归并数据得不到要的结果。

统大器晚成数据的管理形式,最开头便是亟需规划好模板,那一点超重大,模板的宏图如故沿用了常规Word文书档案域对象的定义,必要丰盛一些域来做继续数据替换的目的占位符,如下是自家测量试验的叁个模板。

图片 8

本条里面根本是主从表整合的三个模板,大家供给绑定常规的主表记录,也要求绑定明细表的成团记录,可是最终我们都亟待把数据对象调换为集聚(如DataSet卡塔 尔(英语:State of Qatar),然后技艺绑定到文书档案对象上去。

在上边包车型客车文书档案里面,你知识见到了域对象,而还未看出二个隐蔽的四个会合记录的起来和了结的书签设置。关于书签的功效和如何操作,能够明白自己事先的小说作品《应用Aspose.Word控件完结Word文书档案的操作》、《运用Aspose.Word控件和Aspose.Cell控件,实现Word文书档案和Excel文书档案的模板化导出》

书签的效能很器重,否则不可能符合规律剖析集合的笔录并绑定在WO君越D分界面上的,大家张开书签管理对话框,能够观望上述文书档案里面有多少个地点,书签标志的开头和终止地方。

图片 9

那样大家兼备好模板后,第二步正是由此代码生成相关对象,然后和文书档案进行联合就能够了。

比如小编创设一个主表和二个从表的记录,统生机勃勃把它们生成二个DataSet对象供役使。

        public static DataSet CreateDataSet()
        {
            DataSet ds = new DataSet();

            DataTable dtMain = DataTableHelper.CreateTable("Company,HandNo,Creator,CreateTime|DateTime");
            dtMain.TableName = "main";
            DataRow dr = dtMain.NewRow();
            dr["Company"] = "广州爱奇迪软件科技有限公司";
            dr["HandNo"] = "123456";
            dr["Creator"] = "伍华聪";
            dr["CreateTime"] = DateTime.Now;
            dtMain.Rows.Add(dr);

            DataTable dt = DataTableHelper.CreateTable("ID,ProductName,Description,Price|decimal,Quantity|int");
            dt.TableName = "ProductInfo";
            dr = dt.NewRow();
            dr["ID"] = "1";
            dr["ProductName"] = "海飞丝洗发水";
            dr["Description"] = "海飞丝洗发水, 550ml";
            dr["Price"] = 19.8M;
            dr["Quantity"] = 100;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "2";
            dr["ProductName"] = "联想品牌电脑";
            dr["Description"] = "联想Y700-15ISK-ISE 旗舰版";
            dr["Price"] = 6500M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            dr = dt.NewRow();
            dr["ID"] = "3";
            dr["ProductName"] = "IPhone7 128G";
            dr["Description"] = "苹果IPhone7, 128G";
            dr["Price"] = 5800M;
            dr["Quantity"] = 10;
            dt.Rows.Add(dr);

            ds.Tables.Add(dtMain);
            ds.Tables.Add(dt);
            return ds;
        }

先加载模板文档

if (setting == null)
{
    setting = new TXTextControl.LoadSettings();
    setting.ApplicationFieldFormat = TXTextControl.ApplicationFieldFormat.MSWord;
}
_textControl.Load(Application.StartupPath + "\Template\template1.docx", TXTextControl.StreamType.WordprocessingML, setting);

结缘合併数据

DataSet ds = PurchaseInfoHelper.CreateDataSet();
mailMerge1.MergeBlocks(ds);
mailMerge1.Merge(ds.Tables["main"], true);

末段就能够见见大家所急需的结果了。

图片 10

理当如此,借使很熟练Aspose.Word控件的接收,大家其实也得以使用Aspose.Word控件来做后台的数目整合管理,Aspose.Word控件扶助广大变量定义,以致更加复杂的拍卖,如笔者把原先在框架模块里面的人口消息导出Word效率收抽取来,这一个模块原先是行使Aspose.Word来管理数量统生龙活虎的,笔者不修改此中的逻辑,只是把归中国人民解放军总后勤部的数量显示在TX
Text Control就能够,如下代码所示。

var saveFile = StaffHelper.GenerateDoc();
//加载文档
_textControl.Load(saveFile, StreamType.MSWord);

末段就生成了大家初叶介绍的软件分界面效果。

图片 1

本条控件如今利用起来还算不错,可是对于部分数据源的拍卖方面,以往希望持续扩张更加多的接口,继续保险阅览,希望能将探究的成果用在具体的类型上。

发表评论

电子邮件地址不会被公开。 必填项已用*标注