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

边框线间距,默认为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列表中检索用户登录操作历史记录对象。

public int DeletorIndex{get;set;} 逻辑删除该文档元素的用户历史记录编号。 public DCSoft.Writer.Security.UserHistoryInfoList UserHistories{get;set;} 用户登录操作记录列表。它是一个列表,其最后一个元素就是当前用户登录历史记录。该列表元素类型为DCSoft.Writer.Security.UserHistoryInfo。UserHistoryInfo类型的属性有

int Index{get;set;} 记录编号。 string ID{get;set;} string Name{get;set;} DateTime SavedTime{get;set;} int PermissionLevel{get;set;} string Description{get;set;} string Tag{get;set;} 登录用户编号。 登录用户名。 保存文档的日期时间。 用户授权等级。 用户登录时附加的说明文字。 扩展数据。 文档中所有的元素都派生自DCSoft.Writer.Dom.XTextElement类型,该类型具有一个签名为“public int StyleIndex{get;set;}”的属性,系统就根据这个属性值在文档对象的ContentStyles.Styles列表中检索文档样式对象。

由于已经有了这些数据,编辑器软件就通过以下流程查找权限信息。

1. 获得文档元素对象(都是派生自XTextElement类型)的StyleIndex属性,检索文档对象

的ContentStyles.Styles列表,也就是通过代码“document.ContentStyles.Styles[ element.StyleIndex ]”获得文档样式对象。

2. 根据文档样式对象的CreatorIndex检索文档对象的UserHistories列表,也就是通过代码

“document.UserHistories[ style.CreatorIndex 或 style.DeletorIndex ]”获得用户登录历史记录信息对象。

3. 获得了文档历史记录对象的PermsissionLevel值,也就是创建或者逻辑删除该文档元素

的用户权限等级,然后跟当前用户权限等级进行比较。若大于当前等级,则当前用户无法修改该文档元素;若小于等于当前的等级,则当前用户可以修改或者删除该文档元素。

也就是说编辑器通过element.StyleIndex →document.ContentStyles.Styles →document.UserHistories这样的查询路径获得文档元素的授权信息。此时应用系统也可以通过这样的路径直接访问文档中的权限及痕迹保留信息。

启用权限控制

要应用文档内容等级权限控制,首先要启用授权控制,需要设置编辑器的以下属性 ctl.DocumentOptions.SecurityOptions.EnablePermission

是否启动文档内容等级权限控制,这是最基础的属性。 Ctl.DocumentOptions.SecurityOptions.EnableLogicDelete

是否启用逻辑删除功能。一般的用户功能需求都需要设置该属性。 ctl.DocumentOptions.SecurityOptions.ShowLogicDeleteContent

是否显示被逻辑删除的内容。这个视用户需求而设置。 ctl.DocumentOptions.SecurityOptions.ShowPermissionMark 是否显示用户痕迹标记。 用户登录 启用编辑器的权限控制后,应用程序通过两种模式进行登录。 1.自动登录。

应用程序设置编辑器控件的AutoUserLogin属性为true,这样启用自动登录,然后设置

编辑器控件的AutoUserLoginInfo属性值,定义好自动登录时的用户信息。

AutoUserLoginInfo属性值是DCSoft.Writer.Security.UserLoginInfo类型。该类型的属性有 string ID{get;set;} 用户登录号。 string Name{get;set;} int PermissionLevel{get;set;} string Description{get;set;} string Tag{get;set;} 用户名。 用户权限等级。该数值越高,用户权限等级越高。 用户此次的登录的说明信息。供应用程序使用,编辑器内部不使用。 扩展信息。供应用程序使用,编辑器内部不使用。 当设置好自动登录后,编辑器控件每次加载文档后就会自动登录,将指定的用户信息添加到文档中并设置为当前用户。 2.应用程序登录。

应用程序设置编辑器控件的AutoUserLogin属性为false,这样就需要应用程序登录了。应用程序在调用编辑器控件的LoadDocument方法加载文档后,或者响应编辑器控件的DocumentLoad事件来进行登录。

应用程序调用编辑器控件的UserLogin方法执行登录。通过这个方法来传递用户名、授权等级等登录信息。

4.5. 文本编辑器控件

DCWriter的GUI模块的核心就是文本编辑器控件,该控件类型为DCSoft.Writer.Controls.WriterControl。它是一个WinForm控件,并且是COM公开的。

该控件常用的成员有

public bool AllowDragContent{get;set;} 能否直接拖拽文档内容,默认为false。

Public bool IsCommandEnabled( string commandName )

判断指定名称的编辑器功能命令在当前是否可用。注意:调用这个函数只是返回命令状态,不会自动设置该命令绑定的按钮或菜单栏的状态。 Public bool IsCommandChecked( string commandName ) 判断指定名称的编辑器功能命令在当前是否处于勾选状态。注意:调用这个函数只是返回命令状态,不会自动设置该命令绑定的按钮或菜单栏的状态。

Public object ExecuteCommand( string commnadName , bool enableUI , object parameter ) 执行指定名称的编辑器功能命令。第一个参数指定命令名称,第二个参数为是否允许显示用户界面,第三个参数为用户指定的额外参数。 Public event CommandEventHandler CommandError

执行编辑器功能命令时出错时的事件。

Public virtual void OnCommandError( WriterCommand cmd , WriterCommandEventArgs cmdArgs , Exception exp ) 处理在执行编辑器功能命令时抛出的异常。 Public DateTime LastUIEventTime

最后一次用户界面事件的发生时间,用户界面事件包括鼠标键盘事件、OLE拖拽事件。应用程序可以根据这个属性值来实现超时锁定用户界面的功能。 Public bool Readonly{get;set;}

联系客服:779662525#qq.com(#替换为@)