首先给大家说明下度量快速开发平台对代码的解析是中和了VB和C#两种语言,虽然大多数情况我们都可以使用智能向导,但是大家还是要对这两种语言有个基本了解才行。
其次大家还需要注意一点,平台中代码的解析暂时还不支持同行写多条代码,一行只能写一个表达式,并且代码结束时不需要结束符。
再者就是平台中的注释符号是:“’”单引号,并且注释语也只能是单独一行写,不能与其他表达式同行写。
当然平台也有一些比好的设计,如平台中的保留字、内置方法属性是部区分大小写的,定义变量时你可以写:DIM,也可以写:Dim,甚至可以写:dIm都是可以的。还有就是平台是中英文都支持的,所以这就对开发人员的要求降低了许多。
1.变量的定义
在平台中如果需要自己写代码的时候,定义变量是必须的,平台里定义变量的语法是采用的VB的形式,也就是用Dim关键字,不用专门指定变量的类型,如下图:
详细的变量使用请查阅“度量快速开发平台 变量介绍”文章。
2.逻辑判断语句
在平台中我们常用的逻辑判断语句有4种,分别是:If判断语句、For循环语句、For Each循环语句以及Do While循环语句。
作用:判断条件表达式是否成立。
格式:
If … Then
…
Else
…
End If
示例:
作用:循环判断条件表达式是否成立,如果成立就循环执行相应代码。使用 Exit For关键字可以提前退出循环。
格式:
For … To…
…
Exit For
Next
示例:
说明:示例中的“&”符号是连接字符串的作用,与“+”用法一样,但是在平台里面用“&”符号就不需要把数字类型转换成字符类型再连接。
作用:循环获取一个集合里的成员。使用 Exit For关键字可以提前退出循环。
格式:
For Each … In …
…
Exit For
Next
示例:
说明:上述示例的意思是循环网格部件1的DataTable里的所有行,并且弹出显示框显示每一行的ID值。“row["ID"]”的意思就是获取当前行某列的值,这是C#里面的写法。
作用:循环判断条件表达式是否成立,如果成立就循环执行相应代码。使用 Exit Do关键字可以提前退出循环。与for循环语句类似。
格式:
Do While …
…
Exit Do
Loop
示例:
● end 表示停止往下执行。
3.注释语法
度量快速开发平台中要注释一段代码,请用单引号进行。注释后的语句颜色是绿色比较好区分。
注意:
不能在一行中后面注释,这样会解析出问题。在校验代码的时候会提示错误。
4.内置函数
内置函数就是平台里面封装的各种方法和属性,这些方法和属性都是根据实际的使用而提炼出来的,所以使用起来非常方便,在我们的智能向导里面就能查询得到所有的内置函数。平台里面的内置函数大概分为:窗体环境的内置函数和基础环境的内置函数。窗体环境的内置函数又分为:窗体函数、工作流函数、智能部件函数。基础环境内置函数则又分为:基础函数、客户端函数。根据这样的分类在下面列出了比较重要且常用的具体的函数。
-->窗体环境的内置函数
●设置窗体变量值:Form.SetParam(参数1,参数2)
参数1:字符串类型 自定义变量的名称。
参数2:任意类型 自定义变量的值。
作用及说明:给其它窗体自定义一个变量并赋值,其中Form表示一个窗体对象(也就是前面的‘其它窗体’),如“创建窗体()”方法返回的值就是一个窗体对象。
示例:
●获取窗体变量值:Me.GetParam(参数1)
参数1:字符串类型 自定义变量的名称。
返回值类型:根据获取类容值的类型而定。
作用及说明:获取当前窗体中某个变量的值,其中Me表示当前窗体(类似与C#里的this)。一般该方法都是写在子窗体中。
示例:
●设置部件只读:Me.SetPartReadOnly(参数1, 参数2)
参数1:Contrl类型 部件的名称,意思就是直接写部件名称就可以,不要加引号。
参数2:布尔类型 true表示只读,false表示非只读。
作用及说明:设置本窗体中的部件或者控件是否只读。
示例:
●设置部件可见:Me.SetPartVisible(参数1, 参数2)
参数1:Contrl类型 部件的名称,意思就是直接写部件名称就可以,不要加引号。
参数2:布尔类型 true表示可见,false表示隐藏。
作用及说明:设置本窗体中的部件或者控件是否可见。
示例:
●设置分组可见:Me.SetGroupVisible(参数1, 参数2)
参数1:字符串类型 分组的名称。
参数2:布尔类型 true表示可见,false表示隐藏。
作用及说明:设置本窗体中的分组(群组)是否可见。
示例:
●设置分组选中状态:Me.SetGroupSelected(参数1)
参数1:字符串类型 分组的名称。
作用及说明:设置本窗体中选项卡模式的分组的焦点。
示例:
●设置功能可用:Me.SetFunctionEnabled(参数1, 参数2)
参数1:字符串类型 功能的名称。
参数2:布尔类型 true表示可用,false表示不可用。
作用及说明:设置本窗体的功能按钮是否可用。
示例:
●设置功能可见:Me.SetFunctionVisible(参数1, 参数2)
参数1:字符串类型 功能的名称。
参数2:布尔类型 true表示可见,false表示隐藏。
作用及说明:设置本窗体的功能按钮是否可见。
示例:
●设置功能显示名称:Me.SetFunctionCaption(参数1, 参数2)
参数1:字符串类型 原功能的名称。
参数2:字符串类型 新名称
作用及说明:重新设置本窗体的某个功能的显示名,一般用于同一个功能按钮有多种状态的使用。
示例:
●添加右键菜单:Me.AddContextMenu(参数1, 参数2)
参数1:Contrl类型 部件的名称,意思就是直接写部件名称就可以,不要加引号。
参数2:字符串类型 功能名称,右键菜单执行的代码是直接调用的功能按钮的代码。
作用及说明:在某个部件上添加右键菜单,当鼠标右键点击这个部件时弹出的菜单。
示例:
●获取或设置窗体标题:Me.FormTitle
返回值类型:字符串类型
作用及说明:获取或设置窗体的标题,这是一个属性。
示例:Me.FormTitle="未命名窗体"
●关闭窗体:Me.Close()
作用及说明:关闭当前窗体。
PS:更多的函数在平台中智能向导——窗体环境——智能窗体里查看,并以此为准。
●启动流程:Me.StartFlow(参数1, 参数2)
参数1:字符串类型 流程ID,也就是我们设计的流程图的ID,一般情况是一个GUID。
参数2:任意类型 流程关键值,在流程流转的过程中可以随时调用这个关键值,更具这个值来查询相关内容。
作用及说明:启动一个流程,流程会根据参数1指定的流程图流转。
示例:
●下一步:Me.GoNextNode()
作用及说明:命令流程根据当前的流程图(当前的流程图就是当前窗体的Flow对象里的流程图)走向下一个节点。
示例:Me.GonextNode()
●设置流程变量:Flow.SetParam(参数1, 参数2)
参数1:字符串类型 自定义变量的名称。
参数2:任意类型 自定义变量的值。
作用及说明:向流程添加一个全局变量,直到在该流程结束前都可以调用。
示例:
PS:更多的函数在平台中智能向导——窗体环境——工作流里查看,并以此为准。
智能部件函数在平台中智能向导——窗体环境下会根据当时使用的部件自动显示。详细的资料请查看《度量快速开发平台——智能部件详解》。
这里需要注意一点的就是:如网格部件、记录部件、树形部件、日程部件、图标部件、分组部件、文档显示部件、文档编辑部件、报表展示部件、office部件这些部件都有一个共同的方法“RefreshData()”,很多人都不明白这个方法到底是什么意思,到底什么时候使用这个方法,这里给大家解释一下,该方法在文档里面是这样注释的:“刷新数据,从服务器获取数据。”,其实说直白一点这个方法就是执行绑定业务表的SQL语句的,执行后把得到的DataTable绑定到部件,这样部件就有了字段结构和数据,刷新一次就重新绑定一次,那么什么时候调用这个方法我想大家应该有个概念了吧。只要需要绑定业务表的部件,肯定都有“RefrshData()”方法。
-->基础环境的内置函数
●转换为字符串:CStr(参数1)
参数1:任意类型。
返回值类型:字符串类型。
作用及说明:把任意类型转换为字符串类型。
●转换为整数:CInt(参数1)
参数1:任意类型。
返回值类型:整数类型。
作用及说明:把任意类型转换为整数类型(int)。
●转换为数字:CDbl(参数1)
参数1:任意类型。
返回值类型:数字类型。
作用及说明:把任意类型转换为数字类型(Double)。
●转换为长整型:CLng(参数1)
参数1:任意类型。
返回值类型:长整型类型。
作用及说明:把任意类型转换为数字类型(long)。
●转换为大写字母:Ucase(参数1)
参数1:字符串类型 需要转换的字符串。
返回值类型:字符串类型。
作用及说明:把一串小写字母转换为大写字母。
●转换为人名币大写:ConvertRMB(参数1)
参数1:数字类型。
返回值类型:字符串类型。
作用及说明:把一个数字转换为人名币大写,如231→贰佰叁拾一。
●判断空值:IsNull(参数1)
参数1:任意类型。
返回值类型:布尔类型,True表示为空值,False表示部位空值。
作用及说明:判断一个值是否为空值(null)。
●执行SQL查询语句:ExecuteSelect(参数1)
参数1:字符串类型 查询的SQL语句。
返回值类型:DataTable类型。
作用及说明:从默认数据库中执行一条查询语句并返回一个DataTable对象,只能是“select”打头查询语句。(有重载函数,详情参看平台中的智能向导)
●执行SQL语句:ExecuteNonQuery(参数1)
参数1:字符串类型 一条SQL语句。
返回值类型:int类型 受有影响的条数(有多少条记录被改变)。
作用及说明:在默认数据库中执行一条SQL语句并返回一个受影响条数,可以是“delete”“update”“insert into”打头的语句。(有重载函数,详情参看平台中的智能向导)
●弹出提示消息:ShowInformation(参数1)
参数1:字符串类型 消息类容。
作用及说明:弹出只有确定按钮的消息提示框。(有重载函数,详情参看平台中的智能向导)。
●打开文件:OpenFile(参数1)
参数1:字符串类型 文件完整路径。
作用及说明:使用Windows默认程序打开指定路径的文件。
PS:更多的函数在平台中智能向导——基础环境——基础函数里查看,并以此为准。
●获取登录用户名:登录用户名 ()
返回值类型:字符串类型 当前登录系统的用户姓名。
作用及说明:获取当前登录系统的用户姓名。
●获取登录用户ID:登录用户ID ()
返回值类型:整数类型 当前登录系统的用户ID。
作用及说明:获取当前登录系统的用户ID,每一个用户ID都是不同的。
●获取登录用户部门名称:登录用户部门名称 ()
返回值类型:字符串类型 当前登录系统的用户所在部门的名称。
作用及说明:获取当前登录系统的用户所在部门的名称。
●获取登录用户部门ID:登录用户部门ID ()
返回值类型:整数类型 当前登录系统的用户所在部门的ID。
作用及说明:获取当前登录系统的用户所在部门的ID。
●获取登录用户部门ID串:登录用户部门串 ()
返回值类型:字符类型 当前登录系统的用户所在的部门ID和所有上级部门ID组成的字符串,以逗号分割。
作用及说明:获取当前登录系统的用户所在的部门ID和所有上级部门ID组成的字符串,以逗号分割,如:“1000,1802,1893”。
●获取登录用户角色名称:登录用户角色名称 ()
返回值类型:字符串类型 当前登录系统的用户所在的角色名称(岗位名称)。
作用及说明:获取当前登录系统的用户所在的角色名称(岗位名称)。
●获取登录用户角色类型:登录用户角色类型 ()
返回值类型:字符串类型 当前登录系统的用户所在的角色的类型,0表示普通类型(普通岗位),1标识领导类型(领导岗位)。
作用及说明:获取当前登录系统的用户所在的角色的类型。
●获取登录用户角色ID:登录用户角色ID ()
返回值类型:整数类型 当前登录系统的用户所在的角色ID(岗位ID),每一个用户的角色ID都是不同的。
作用及说明:获取当前登录系统的用户所在的角色ID(岗位ID)。
●获取组织机构名称:获取机构名称 ()
返回值类型:字符串类型 当前登录系统的用户所属机构的名称。
作用及说明:获取当前登录系统的用户所属机构的名称,也就是在组织机构树里面最上层的名称。
PS:基础环境里面的函数在编写代码的时候是可以直接调出来的,在英文状态下输入”.”可以弹出智能提示,如下图:
但是需要注意的是,目前这个提示智能用键盘的方向键和回车进行选择,不能鼠标点击选择。
这里为什么把DataTable要提出来呢?因为在平台里面对DataTable的操作是比较多的,网格部件、树形部件、记录部件这3大部件是开发中使用最平凡的几个部件,然而这几个部件是与DataTable直接绑定的,(第一章的第三节的业务表里也提到了这个)对DataTable的操作就可以对界面上的数据直接操作。DataTable的用法是和C#完全一样的,大家可以查询相关资料,在下面我列出了DataTable在平台中的一些常用方法属性(大家要注意的是对DataTable的操作是需要区分大小写的):
网格部件、树形部件、记录部件都有一个共同的属性:DataTable,下面这个例子是分别获取这3个部件的DataTable:
PS:当我们在复制DataTable的行(DataRow)时经常会遇到这样的提示:“该DataRow已属于另一个DataTable”或者“该行已属于另一个表”这样的提示,那么使用上面的方法需要用ItemArray属性才行。