DCWriter文本编辑器软件使用说明

更新时间:2024-05-14 02:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

DCWriter电子病历文本编辑器软件说明

1. 简介

DCWriter电子病历文本编辑器软件(简称DCWriter)是一款完全用C#编写的、运行在微软.NET平台上的软件组件,没有使用MS Word、RichEditBox等其他任何文本编辑器组件,完全自主实现了富格式文本编辑功能。可以非常完美的集成到各类.NET应用系统中,包括WinForm.NET、WPF、ASP.NET、命令行程序或者后台服务程序。

DCWriter除了实现了强大的通用文本编辑功能外,还针对电子病历业务添加了续打、输入域、半结构化文档、级联模板、三级查房权限控制、痕迹保留、医学表达式等功能,是开发电子病历应用系统的理想基础。

2. 运行环境

DCWriter运行在微软Windows操作系统以及微软.NET框架2.0及更高版本的系统中,硬件为x86 PC机及兼容系统。

3. 功能点介绍

DCWriter详细的功能点有

3.1. 文档编辑功能

1 2 3

DCWriter提供强大的文档编辑功能,主要有:

文字编辑功能。包括设置字体名称、字体大小、粗体、斜体、下划线样式、文字颜色、文字背景色、上下标。

支持数字式的和圆点式的段落列表。

支持图片,支持鼠标拖拽改变图片大小,支持在图片中添加批注信息,批注信息保存后可以再编辑。可以使用如下图所示的对话框来编辑图片批注信息。

4

支持段落设置。支持段落左缩进、行首缩进、段前间距、段后间距、行间距。可以使用如下图所示的对话框来设置参数。

5 6

支持表格。支持单元格的无限制的横向合并和纵向合并。单元格内可以进行图文混排。支持无限制的表格套嵌表格。可以设置表格的标题行。

可以使用如下图所示的对话框来设置单元格和图片的边框和背景。

7

DCWriter支持两种页面视图模式

分页视图模式,这种模式下文档的显示结果和打印一样:

普通视图模式:

8 被选择区域高亮度显示模式。DCWriter支持两种被选择区域的显示模式。

反色高亮度显示被选择区域,如下图所示:

半透明色高亮度显示被选择区域,如下图所示:

9

重做、撤销。DCWriter支持不受次数限制的重做和撤销操作。对文档的任何修改都能重做和撤销。

10 OLE拖拽。DCWriter支持OLE拖拽来插入内容。可以从Windows资源管理器中拖拽图片文

件到编辑器中而插入图片内容。也支持从MS Word或者其他文档编辑器中拖拽插入数据。还支持拖拽文档内容来编辑文档内容。

3.2. 痕迹保留和权限控制

DCWriter支持痕迹保留和权限控制。实现的功能点有: 1. 分等级的权限控制

DCWriter支持分等级的权限控制。用户能向编辑器登记用户登录信息并指定用户的权限等级,用户权限等级是一个整数,数值越大则权限就越高。低权限的用户不能修改和删除高权限的用户输入的文档内容,而高权限的用户能修改和删除低权限的用户输入的内容;而且低权限用户输入的内容被高权限的用户修改了样式后,则这些内容就转而属于高权限的用户的,此时低权限用户就不能修改和删除这些曾经由自己输入的内容了。

DCWriter编辑器提供一种管理员模式,当运行在该模式下,权限控制无效,文档中的任意部分都可修改。

2. 逻辑删除和物理删除

DCWriter支持逻辑删除和物理删除,逻辑删除就是程序并不删除文档内容,而是标记为逻辑删除了,不可见。此时当编辑器允许显示逻辑删除的内容时,这些被隐藏的内容又显示出来了,此时会附加上红色删除线的标记。

物理删除就是真正的删除文档内容,此时被删除的内容就不再存在,也就不可能再次显示出来了。

3. 痕迹保留和再现

DCWriter支持痕迹保留和再现。能以单条蓝色下划线显示权限等级为1(一般对应于主治医师)输入的内容;以蓝色双下划线显示权限等级大于等于2(一般对应于主任医师)输入的内容;以单条红色删除线显示被权限等级为1的用户逻辑删除的内容;以红色双删除线显示被权限等级大于等于2的用户逻辑删除的内容。

当鼠标移动到标记了痕迹信息的文档内容上面时会显示相关的提示文本进行详细说明。如下图所示,这段文档就留下了用户修改痕迹:

在这里,被红色删除线标注的文档内容就是被逻辑删除的部分。当编辑器不显示逻辑删除的内容时,这段文档就显示如下:

当不显示修改痕迹时,也就是处于整洁显示模式下,此时文档内容显示如下:

DCWriter支持整洁打印,此时打印出来的文档不显示被逻辑删除的内容,也不会显示权限标记。在进行整洁打印时,当文本编辑器处于整洁视图模式下,支持续打、支持打印当前页。若文本编辑器显示了用户修改痕迹时,不支持续打,也不支持打印当前页的功能。

3.3. 输入域

DCWriter支持输入域的功能,应用系统据此能实现半结构化文档的功能。 DCWriter支持文本输入域,如下所示:

当插入点在文本输入域中或者鼠标光标悬停在文本输入域的上面时,整个文本输入域就会以蓝色背景高亮度显示,以提醒用户。

文本输入域可以设置背景文本,例如:

当这个文本输入域中没有任何内容时,就会显示灰色的背景文本以提醒用户。当用户输

入了内容后,就不再显示背景文本了。

文本输入域可以设置为带有数据校验格式的,例如:

这个年龄输入域设置为不得为空,而且只能输入数字,最小值为0,最大值为150,当输入的数据不符合校验格式时,系统会自动设置为红色背景高亮度显示,当鼠标移到输入域上面是还会显示错误提示信息。

DCWriter还支持时间日期数据的输入,并显示用户界面让用户选择时间日期。例如下面是一个日期数据输入域:

当插入点在文本输入域时按下F2键或者鼠标双击输入域,则会弹出日期选择界面,而用户就可以在这个界面中选择日期值了。 DCWriter支持时间日期输入域,如下所示:

DCWriter还支持下拉列表方式编辑输入域的值,例如:

该输入域能弹出下拉列表来帮助录入数据,在这个列表中,用户可以鼠标点击操作选择列表项目,而可以输入拼音码来快速定位列表项目。这里的拼音码是根据列表中显示的文本自动生成的,无需维护。

这个下拉列表还可以设置为多选,例如:

而且这个列表中的列表项目既可以在编辑文档时录入,也可以通过编程从其他地方加载,比如从数据库加载。

3.4. 医学表达式

DCWriter目前支持2种医学表达式,如下所示:

具有4个文本的医学表达式:

当用户用鼠标双击医学表达式或者选中表达式按下F2键,则医学表达式进入编辑模式,此时显示为:[2012年05月29日,Value2,Value3,Value4]。在这里用户可以直接编辑医学表达式的内容,而且可以套嵌插入输入域来编辑数值。

具有3个文本的医学表达式:。

处于编辑状态下的医学表达式:[Value1,Value2,Value3]。

3.5. 条形码

DCWriter支持30种条码,其样式如下: UPCA UPCE SUPP2 SUPP5 EAN13 EAN8 Interleaved2of5 I2of5 Standard2of5 Code39

Code39Extended Code93 Codabar PostNet BOOKLAND ISBN JAN13 MSI_Mod10 MSI_2Mod10 MSI_Mod11 MSI_Mod11_Mod10 Modified_Plessey CODE11 USD8 UCC12 UCC13 LOGMARS Code128A

Code128B Code128C 3.6. 单选框、复选框

DCWriter支持单选框和复选框。入下图所示: 对于单选框,当鼠标点击设置了勾选状态后,同组的其他单选框就会去掉勾选状态,而且当鼠标光标移动到单选或者复选框上时,系统会以蓝色背景高亮度突出显示同组的其他的单选框或复选框的。

3.7. 级联模板

DCWriter支持级联模板,能根据当前输入域中的值来动态的设置文档其他部分是否可见,而且这种操作是可以套嵌的。例如:

在这里,当用户选择了“吸烟”,则后面的详细描述吸烟的文本片段将显示出来。 当用户选择了“不吸烟”或者为空时,后面的详细描述吸烟的文本片段将自动隐藏掉。如下图所示:

这个过程是可逆的,也就是说,当后面文本片段隐藏后,若用户再次设置“吸

烟”值,则后面的那段文本又显示出来了。

级联模板时可以套嵌的,如下图所示: 当用户选择“有戒烟治疗”时,后面的详细描述戒烟治疗的文本片段会显示出来,当用户选择“无戒烟治疗”时,后面的文本就会隐藏掉,如下图所示:

DCWriter支持更复杂的级联模板功能。

3.8. 数据源绑定

DCWriter中的文本输入域域可以绑定数据源,文档对象有一些内置参数,字段域就可以绑定到这些参数来显示参数值。

字段域也可以修改绑定的数据源,比如编辑控件有一个ServerObject属性,将数据源对象设置到该属性上,然后可以在文档中使用参数名ServerObject来获得该对象,并可读取或设置该对象的属性值。

关于数据源绑定的详细信息可以参考后续相关章节。

3.9. 表达式

DCWriter支持表达式,例如“len( value ) > 3 && value < 999 ”,表达式文本不区分大小写,但字符串值是区分大小写的。目前支持的运算有:

逻辑运算:运算符有“OR”逻辑或、“AND”逻辑与、“NOT”逻辑反。 数学运算:支持加减乘除、“MOD”取模,支持圆括号修改运算优先级。 函数:DCWriter支持以下内置函数 ABS(V) ACOS(V) ASIN(V) ATAN(V) ATAN2(X,Y) 获得绝对值。 计算反余弦值。 计算反正弦值。 计算反正切值。 计算反正切值。

AVERAGE(X1,X2...) CDOUBLE(V,DefaultValue) CEILING(V) CINT(V,DefaultValue) COS(V) COUNT(X1,X2,...) EXP(V) FLOOR(V) INT(V) LOG(A,BASE) LOG(V) MAX(V1,V2...) MIN(V1,V2...) MOD(V,DIVISOR) ODD(V) POW(NUMER,POWER) PRODUCT(V1,V2,V3...) RADIANS(V) RAND() ROUND(V) ROUNDDOWN(V) ROUNDUP(V) SIGN(V) SIN(V) SQRT(V) SUM(V1,V2...) TAN(V) 计算算术平均值。 将指定数据转换为浮点数,第二个参数为转换失败后的返回的默认值。 获得大于等于指定数值的最小整数。 将指定数据转换为整数,第二个参数为转换失败后返回的默认值。 返回指定角度的余弦值。 返回参数的个数。 返回e的n次方。 返回小于等于指定数字的整数。 四舍五入的数字取整。 返回指定底数的对数值。 返回以10为底数的对数值。 返回最大值。 返回最小值。 返回两数相除的余数。 将正(负)数向上(下)舍入到最接近的奇数。 返回某数的乘幂。 返回所有参数的乘积。 将角度转换为弧度。 返回一个介于0到1之间的随机数。 进行四舍五入计算。 向下舍入数字。 向上舍入数字。 为正数返回1,为零返回0,为负数返回-1 。 返回指定角度的正弦值。 返回数值的平方根。 返回所有参数的和。 返回指定角度的正切值。 变量:表达式支持变量。例如“value”表示当前执行表达式的元素的Text值;也可以使用“this.属性名”获得当前元素的指定属性的值,例如“this.Text”、

“this.ID”、“this.Name”;也可以直呼其名的获得文档对象Parameters列表中的文档参数值;还可以直呼其名的获得文档中指定ID或者名称的输入域的值,例如文档中具有一个ID或Name值为“身高”的文本输入域,则可以执行类似“身高<150”这样的表达式。

3.10. 打印

DCWriter支持所见即所得的打印。除了常规的文档打印外,还支持整洁打印和续打。

3.10.1. 整洁打印

整洁打印文档时,不会将文档中的痕迹保留信息打印出来,此时打印的文档比较整洁,不包含各种用户修改痕迹。

3.10.2. 续打

续打,也就是断点继续打印,是一种很特殊的打印功能,DCWriter支持续打功能,如下图所示:

当文本编辑器处于续打模式,此时用户可以使用鼠标点击操作来设置续打位置,此 时蓝色半透明区域中的内容不会打印,而且发生续打的那一页不打印页眉页脚。

3.11. 视图模式

DCWriter支持多种文档视图模式,目前有:

3.11.1. 页面视图模式

页面视图模式如下图所示:

3.11.2. 普通视图模式

普通视图模式如下图所示:

3.11.3. 续打视图模式

续打视图模式如下图所示:

3.11.4. 表单视图模式

表单视图模式如下图所示:

在表单视图模式下,用户只能在文本输入域中编辑内容,输入域之外的内容是只读的,甚至是不可选的,插入点也限制在文本输入域中。

表单视图模式可以和其他视图模式搭配使用。

3.11.5. 复杂视图模式

编辑器控件在复杂视图模式下,能显示所有的用户操作痕迹,包括新增和被逻辑删除的内容。在这种视图模式下,用户删除内容的操作都是逻辑删除。

如下图所示,在复杂视图模式下,文档内容显示如下:

/// 打开文件 /// /// /// 打开的文件流对象 Stream Open(string fileName); ///

/// 保存文件 /// /// /// 文件流对象 Stream Save(string fileName); /// /// 浏览打开文件用的文件名 /// /// /// 选择的文件名 string BrowseOpen(string initalizeFileName); /// /// 浏览保存文件时用的文件名 /// /// /// 选择的文件名 string BrowseSave(string initalizeFileName); } 开发者若要扩展文件系统,需要自己开发一个自定义类型来实现该接口,然后将自定义类型调用代码“ctl.AppHost.Services.AddService(typeof(IFileSystem), 自定义类型对象实例)”将自己开发的文件系统操作对象注册到应用系统宿主中。这样编辑器内部就可以调用开发者自定义的文件系统对象了。

4.1.8. Printing

Printing是打印相关的功能模块。

4.1.9. Security

Security是安全和授权相关的模块,是实现痕迹保留和权限等级的基础。

4.2. 文档视图的度量和坐标

DCWriter的文档视图的度量单位是System.Drawing.GraphicsUnit.Document,也就是三百

分之一英寸,而没采用和设备相关的像素单位,这样就能实现所见即所得了。

由于.NET框架中描述打印相关的度量单位就是百分之一英寸为单位,为此DCWriter的页面设置中采用是的百分之一英寸为单位的。因此文档对象的纸张大小、页边距等都是采用百分之一英寸为单位的。

默认情况下,DCWriter文档采用A4大小的纸张,也就是宽度827个单位(8.27英寸)、高度1169个单位(11.69英寸),采用纵向打印模式,页边距都是100个单位(1英寸)。页眉顶端距离纸张上边缘为50个单位(0.5英寸),页脚低端距离纸张下边缘为50个单位(0.5英寸)。

4.3. 文档内容样式开发接口

在大部分情况下,开发者想要改变文档内容,都是通过调用编辑器命令的方式来实现的,关于编辑器命令可参考后面的相关章节。

DCWriter支持复杂的文档内容样式,包括字体、颜色、边框、对齐方式等等。DCWriter中是集中管理文档样式信息,并且文档元素引用文档样式。

文档对象XTextDocument有一个签名为“public DCSoft.Writer.Dom.DocumentContentStyleContainer ContentStyles{get;set;}”的属性。该属性值就是文档内容样式容器,DocumentContentStyleContainer类型主要属性有 public DCSoft.Drawing.ContentStyle Default{get;set;}

文档默认样式,它实际上返回一个类型为DCSoft.Writer.Dom.DocumentContentStyle的对象实例。

public DCSoft.Drawing.ContentStyleList Styles{get;set;}

文档中所有样式的列表,该列表元素成员类型实际上是DCSoft.Writer.Dom.DocumentContentStyle。

DCWriter文档元素都是从XTextElement类型派生的,XTextElement类型有一个签名为“public virtual int StyleIndex{get;set;}”的属性,该属性值就是其引用的文档样式编号,因此可以使用代码“document.ContentStyles.Styles[ element.StyleIndex]”获得文档元素引用的文档内容样式;若StyleIndex为-1或者其他不合理的值,则文档元素引用默认样式,也就是document.ContentStyles.Default的值。

注意:当文档在一个编辑器控件中显示和编辑时,文档的默认字体就自动设置为编辑器控件的字体;文档的默认文本颜色就自动设置为编辑器的前景色。这个过程是自动的,外界即使修改了文档的默认属性也是没有用的。

XTextElement类型有一个签名为“public DocumentContentStyle Style{get;set;}”的属性就是返回改文档元素引用的内容样式对象。

文档元素在实际使用文档内容样式时不会直接使用其引用的文档样式,而是先将文档样式和文档默认样式进行合并,再使用它。为此XTextElement类型有一个签名为“public DocumentContentStyle RuntimeStyle{get;}”的属性来返回这个运行时实际使用的文档样式。

DocumentContentStyle类型主要属性有 背景相关属性

public System.Drawing.Color BackgroundColor{get;set;}

背景色。默认为透明色。

public DCSoft.Drawing.XImageValue BackgroundImage{get;set;} 背景图片。

public System.Drawing.ContentAlignment BackgroundPosition{get;set;}

背景对齐方式。

public float BackgroundPositionX{get;set;} 背景X轴方向偏移量。

Public float BackgroundPositionY{get;set;} 背景Y轴方向偏移量。

public bool BackgroundRepeat{get;set;} 是否重复绘制背景。 文字相关属性

public System.Drawing.Color Color{get;set;} 文字颜色。

public DCSoft.Drawing.XFontValue Font{get;set;} 字体。

public string FontName{get;set;}

字体名称,默认为系统默认字体名称。 public float FontSize{get;set;} 字体大小,默认为9。 public bool Italic{get;set;} 斜体,默认为false。 public bool Underline{get;set;} 下划线,默认为false。 public bool Strikeout{get;set;} 删除线,默认为false。 public bool Bold{get;set;} 粗体。

public bool Superscript{get;set;} 上标样式,默认为false。 public bool Subscript{get;set;} 下标样式,默认为false。 public float Spacing{get;set;} 字符间距,默认为0。 边框相关属性

public bool BorderLeft{get;set;}

是否显示左边框线,默认为false。 public bool BorderTop{get;set;} 是否显示上边框线,默认为false。 public bool BorderRight{get;set;} 是否显示右边框线,默认为false。 public bool BorderBottom{get;set;} 是否显示下边框线,默认为false。 public float BorderWidth{get;set;} 边框线粗细,默认为0。

public System.Drawing.Drawing2D.DashStyle BorderStyle{get;set;} 边框线样式,默认为Solid。 public float BorderSpacing{get;set;}

边框线间距,默认为0,仅适用于段落。 public float PaddingLeft{get;set;} 左内边距,默认为0。 public float PaddingTop{get;set;} 上内边距,默认为0。

public float PaddingRight{get;set;} 右内边距,默认为0。

public float PaddingBottom{get;set;} 下内边距,默认为0。 段落相关属性

public bool BulletedList{get;set;} 段落是否采用圆点式列表方式。 public bool NumberedList{get;set;}

段落是否采用数字式列表方式。

public DCSoft.Drawing.DocumentContentAlignment Align{get;set;} 段落对齐方式。可选值有Left,Center,Right,Justify,默认为Left。 public float SpacingBeforeParagrah{get;set;}

段落前间距,默认为0。

public float SpacingAfterParagraph{get;set;} 段落后间距,默认为0。 public float LineSpacing{get;set;} 行间距。

public DCSoft.Drawing.LineSpacingStyle LineSpacingStyle{get;set;} 行间距样式,它决定了LineSpacing属性值的意义,其可选值为 SpaceSingle Space1pt5 SpaceDouble SpaceExactly SpaceSpecify 单倍行距,此时LineSpacing值无意义。 1.5倍行距,此时LineSpacing值无意义。 双倍行距,此时LineSpacing值无意义。 最小值,此时LineSpacing值无意义。 固定值,此时LineSpacing指定了行间距。 注意在DCWriter中,行间距是文本行的上边缘和下行的上边缘之间的距离,而不是本行下边缘和下一行上边缘之间的距离,因此算是行高。 多倍行距,此时LineSpacing指定的倍数。 public DCSoft.Drawing.VerticalAlignStyle VerticalAlign{get;set;} 文本垂直对齐方式。仅适用于表格单元格。 public float FirstLineIndent{get;set;} 段落首行缩进量。

public float LeftIndent{get;set;} 段落左缩进量。 授权相关

public int CreatorIndex{get;set;}

创建文档内容的创建者历史记录编号,默认为-1。 public int DeleterIndex{get;set;} 删除文档内容的删除这历史记录编号,默认为-1。

SpaceMultiple

4.3.1. 修改文档样式

由于具有运行时的文档样式,因此当应用程序只是修改了文档的默认样式,则整个文档所有元素的样式也会随着更换。

由于采用样式列表引用的方式来设置文档元素的样式,因此不能直接修改文档元素的样式设置,例如执行“element.Style.Bold = true”这样的代码是错误的。而是需要执行以下代码: DocumentContentStyle style = new DocumentContentStyle(); style.Bold = true; element.Style = style; 也就是开发者不能直接设置元素的element.Style下面的设置,而必须创建一个新的DocumentContentStyle对象,然后设置它的值,最后将其设置到文档元素的Style属性值上。而且这种方法运行速度快,但只是更新了文档DOM结构,最后还必须调用编辑器控件的RefreshDocument方法更新文档视图,而且不能调用Undo/Redo命令重复和撤销操作。

4.4. 权限和痕迹保留开发接口

DCSoft.Writer支持文档内容等级权限控制。在打开文档后用户可以在编辑器中执行登录操作,每一次用户登录都系统都记录用户名和用户授权等级。此时新增、修改或逻辑删除的内容都归于当前用户名下。 操作控制

对于开发人员来说,用户授权等级就是一个整数,该数值越大,用户等级越高。在一篇文档内部,高等级用户制造的文档内容对低等级的用户来说是只读的,只能看不能修改。而低等级用户制造的文档内容高等级用户是可以查看和修改、删除的。 可视化显示

另外编辑器还能可视化的显示用户操作痕迹。对于等级小于等于0的用户,其内容正常显示;对于权限等级为1的用户,其插入的文档内容使用蓝色的单下划线来突出显示,其逻辑删除的内容使用红色的单条删除线来突出显示;对于权限等级大于等于2的用户,其插入的内容使用蓝色双下划线来突出显示,其逻辑删除的内容使用红色的双删除线来突出显示。

当鼠标停留在到文档内容上时,会显示一个提示标签,说明文档内容的创建信息和被逻辑删除的信息。

这样文档的权限控制从传统的文件级别深入到文档内部,这成为电子病历应用系统实现三级查房功能的技术基础。相信其他行业应用也可能存在类似的需求。 权限及痕迹数据的存储

应用程序可以通过DCSoft.Writer提供的DOM结构直接访问权限和痕迹信息。

文档对象是DCSoft.Writer.Dom.XTextDocument类型,它具有以下和痕迹和权限相关属性:

public DCSoft.Writer.Dom.DocumentContentStyleContainer ContentStyles{get;set;}

整个文档都使用的文档内容样式容器。该对象的Styles属性就是一个文档样式列表,其列表元素类型是DCSoft.Writer.Dom.DocumentContentStyle。该类型中权限相关的属性有

public int CreatorIndex{get;set;} 创建该文档元素的用户历史记录编号。系统使用该编号在文档对象的UserHistories列表中检索用户登录操作历史记录对象。

本文来源:https://www.bwwdw.com/article/b7c7.html

Top