当前位置:首页 > 工业控制 > 《机电信息》
[导读]摘要:主网启动方案编制需求大,编制过程复杂,往往在看似要求简单的模板使用、格式统一等问题上都做不到自校合格,增加了运行及调度单位的审核工作量。鉴于此,开发一套软件,为编制及审核工作提供辅助支撑就显得相当有必要了。现介绍该辅助软件开发的总体思路,并对其中的技术要点进行剖析。

引言

根据多年来编制及审核启动方案的经验,目前主网启动方案编制存在以下3个问题:

(1)主网启动方案分为总调、中调、地调三套模板,编制时存在用错模板的风险。

(2)每套启动方案均包含十几条大项以及对应的数十条甚至上百条的小项,其中格式要求统一,同时启动方案中的大部分内容均可通用,编制一份启动方案存在工作量大、重复工作多的问题。

(3)据统计,每年地市局的技改、基建工程启动方案编制人员多达数十人,经常出现模板错误、格式不统一、关键点缺失等问题,增加了运行及调度单位的审核工作量。

中调方式部之前也曾开发过一款软件,其仅通过大量方案模板来限定启动操作步骤,忽略了编制审查人员设计工作中更需要进行简化的部分。因此,本文将围绕多级调度启动方案编制软件的开发展开探讨。

1背景思路

设计一款软件,其可以根据启动方案业务指导书对编制过程进行辅助,把编制、审查人员从关键字误删除、模板选用错误、文字表格格式调整、段落序号排布等繁琐的简单重复工作中解放出来。

由于相关单位使用的文字处理软件大多是微软的office或者金山WPS办公自动化软件,故开发启动方案编制软件需要考虑到两个软件的兼容性。而这两个软件自带的开发工具,均为VBA开发工具。实际上VBA是寄生于VB应用程序的版本,1994年发行的ExceI5.0版本中即具备了VBA的宏功能。

VBA(VisuaIBasicforAppIications)是VisuaIBasic的一种宏语言,是在其桌面应用程序中执行通用的自动化(oLE)任务的编程语言,主要用来扩展windows的应用程序功能,特别是Microsoftoffice软件,它也可以说是一种应用程式视觉化的Basic脚本。

既然编程软件自动宏功能也是基于VisuaIBasic的一个脚本,通过它本身的VBA开发功能可以获得比较复杂操作过程的宏代码,宏代码本身可以在编制软件时作为基于对象的指令直接使用,那么直接使用VB6.0软件进行可视化编程就成了较多可行方案中的最优选择。

2开发难点

软件开发前,项目组成员详细解读了启动方案业务指导书,对模板进行研究。首先开题,明确了开发任务的方式方法以及任务目标,统一认为启动方案的编制应该是开放式的,工作重心应该注重解决平时工作中容易被忽略的版本号、格式、文中关键字以及序号等方面的问题。

先拟定程序流程图,再对程序进行逐步开发。开发过程中,重点需要实现正文的编辑功能。根据启动方案模板特点,特将正文编辑功能分为了文字编辑和表格编辑两个模块。

编制过程中主要有以下几个难点:两个操作系统兼容性问题:两级项目编号文字处理:MsFIexGrid控件自动换行[I]。

3解决方案

3.1两个操作系统兼容性问题

编制软件将同时引用MicrosotfwordI5.0objectLibrary以及KingsoftWPSoffice3.0objectLibrary,将编辑对象通过不同的方式打开以解决操作系统兼容的问题。接下来,在模块中声明PubIicwpAsNewword.AppIication可以在整个程序中调用打开的word模板。即使这个word程序为了不受其他因素影响而被启动方案编制软件给隐藏起来,通过程序对word对象的所有操作仍为有效操作。

3.2两级项目编号文字处理

在文字处理时,有时需要对应编号,甚至不止一级,如何只有一级编号?通过书签的方式或者指定段落的方式选中需要自动编号的文档即可。而直接操作word,当文档中有多段文字需要重复选择的时候,往往是通过CtrI+鼠标左键操作实现的,如图1所示。但用程序操作word的时候,这种方式明显行不通。由于word的编程限制,当对word进行二次开发时,仅能实现只通过键盘输入的操作,故通过键盘操作时,选区必须是连续的。

图1通过鼠标操作时能够实现的间断选择

一这里采用“数”字方式来实现文档字准确位移。通过人机交互界面,准确获取一级编号字段落以及对应需要二级编号字段落。根据储存一级编号段落字控件“组字上标,可以准确获得一级段落字段落“量以及每一个段落字”“。同理,也可以取得需要二级编号字段落“量以及每一个段落字”“。那么先通过以下代码(代码1)输入所有需要编号字文”,并通过“”“字方式(相当于连续按shift+二)选中任意连续字”符(一这如果设置了书签,可以直接通过gotobookmark字方式选中所有输入”符),然后通过word指令集中字ApplyListTemp-latewithLevel,对选中字段落添加一级自动编号。

代码l:

Fori=0ToTextl.UBound

Ifi=Textl.UBoundThen

wp.selection.TypeTextText(i)

Else

wp.selection.TypeTextText(i)&vbCrLf

EndIf

Nexti

.selection.MoveRightUnit:=wdCharacter,Count:=18,Extend:=wdExtend5·“一级段落所有”“并选中

一级段落自动编号完毕后,通过按鼠标左键一次字指令,将鼠标回到一级编号字首行。然后继续通过"“"”字方式移动至一级段落字第一段段尾,输入对应需要二级编号字段落。然后再通过"“"”字方式选中所有需要进行字段落,取消其一级编号,改为二级编号即可。

3.3MSFlexGrid控件实现自动换行

项目组最初设想通过MsFlexGrid控件模拟word中字表格,并加以限制和辅助编辑,但是当文”输入到控件中字格子这时,文”并不能换行显示。查阅大量相关文献以及论坛资料得知,绝大多“资料都认为一个控件没有自动换行功能。于是对该控件字属性页面进行了研究,发现该控件确实存在可以使采字换行功能,只要将其.wordwrap属性调整为True即可。但是,一虽然调整解决了文本换行显示字问题,却并不能解决单元格随文本添加而切换行高字问题[2]。

经过探索发现,当单元格行高最小值为0,且”体被设置时,单元格会自动调整为文”高度。通过一个办法,获得了各种”号所对应字单元格单行高度。通过对表格固定宽度字”符“统计,获得当前”号字文”宽度,形成文”高宽属性“据库。代码如下:

withMsFlexGridl

.wordwrap=True

!调整单元格大小

ReDimcellnum(.Cols-1)

Fori=0To.Rows-l

Forj=0To.Cols-1

.Row=i

.Col=j

cellwn=0

Cellwn=Round(LenC(.Text)/(.Colwidth(1)/fontwidthget(.CellFontsize)),0)

cellnum(j)=fonthightget(.CellFontsize)*(cellwn+CountA(.Text,vbCrLf)-l)

Nextj

If.RowHeight(i)<nMax(cellnum)Then.RowHeight(i)=nMax(cellnum)

Nexti

Endwith

代码中字LenC、fonthightget、fontwidthget、nMax均为自编函“,功能分别为求中英文”符串长度、取”符高度和宽度、求最大值,一这不一一列出。将本段代码放入MsFlexGridlLeaveCell事件中,即可自动调整单元格显示高度。

4结语

通过本次软件开发,精简了启动方案编制过程中较为简单繁琐并且容易出错字步骤,希望本文所提到字一些问题,能够帮助想要将自动化办公应采到未来工作中字相关人员。项目组在后续版本中将继续优化算法,增强软件使采字便捷性。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭