吾爱分享资源网

 找回密码
 立即注册
查看: 186|回复: 12

[易语言] 详细讲解易语言基础知识

  [复制链接]

1198

主题

1305

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11509
发表于 2017-9-21 20:32:09 | 显示全部楼层 |阅读模式
易语言的基础知识 下面详细讲解各方面的一些基本知识
在易语言应用程序的编写过程中,用户涉及到定义各类名称,如:子程序名、变量名、数据类型名等等,这些名称的命名规则为:名称的首字母必须为全半角字母或汉字,其它字符必须为全半角字母、全半角数字或者汉字。虽然名称中允许半角字符“_”存在,但它被保留为系统专用,因此不要使用。与其它的编程语言相比,易语言的命名规则有以下特点:

无长度限制,用户可以尽情地使用长名称来进行名称描述;

永远不会与易语言的关键字产生冲突。譬如:现已存在“如果”命令,但用户仍然可以定义一个名称为“如果”的变量,两者之间不会产生任何冲突。

程序的启动方式

  每个易语言应用程序都可以在两种启动方式中选择一种,即:

通过名称为“_启动窗口”的窗口启动;

通过名称为“_启动子程序”的子程序启动。

系统安装后默认为第一种启动方式,用户可以使用“程序” → “系统配置 - 通常夹 - 程序启动方式”菜单功能进行更改。

在第一种启动方式下,程序运行时系统将自动查找并载入名称为“_启动窗口”的窗口。在第二种启动方式下系统将自动执行名称为“_启动子程序”的子程序。

易语言的语言要素

  所有的易应用程序,都由下列语言要素或其中的一部分组成:

  一、 数据类型

  数据类型分为系统基本数据类型、库定义数据类型、用户自定义数据类型三类。

· 系统基本数据类型列表及其说明如下:

1. 字节型。可容纳 0 到 255 之间的数值。

2. 短整数型。可容纳 -32,768 到 32,767 之间的数值,尺寸为 2 个字节。

3. 整数型。可容纳 -2,147,483,648 到 2,147,483,647 之间的数值,尺寸为 4 个字节。

4. 长整数型。可容纳 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 之间的数值,尺寸为 8 个字节。

5. 小数型。可容纳 3.4E +/- 38 (7位小数) 之间的数值,尺寸为 4 个字节。

6. 双精度小数型。可容纳 1.7E +/- 308 (15位小数) 之间的数值,尺寸为 8 个字节。

7. 逻辑型。值只可能为“真”或“假”,尺寸为 2 个字节。“真”和“假”为系统预定义常量,其对应的英文常量名称为“true”和“false”。

8. 日期时间型。用作记录日期及时间,尺寸为 8 个字节。

9. 文本型。用作记录一段文本,文本由以字节 0 结束的一系列字符组成。

10. 字节集。用作记录一段字节型数据。字节集与字节数组之间可以互相转换,在程序中允许使用字节数组的地方
也可以使用字节集,或者相反。字节数组的使用方法,譬如用中括号对(“[]”)加索引数值引用字节成员,使用数组型数值数据进行赋值等等,都可以被字节集所使用。两者之间唯一的不同是字节集可以变长,因此可把字节集看作可变长的字节数组。

11. 子程序指针。用作指向一个子程序,尺寸为 4 个字节。

  在以上的基本数据类型中,字节型、短整数型、整数型、长整数型、小数型、双精度小数型被统称为“数值型”,它们之间可以任意转换。不过编程需要注意转换可能带来的精度丢失。譬如:将整数 257 转换为字节后的结果为 1 ,这是因为值 257 超出了字节型数据的最大上限 255 ,从而产生了溢出。

  另外,通用型数据类型仅在系统内部使用,它能够匹配所有的系统基本数据类型、库定义数据类型、自定义数据类型。

· 库定义数据类型:

  库定义数据类型由运行支持库提供,用户在程序中可以直接使用,就如同是系统基本数据类型一样。

· 自定义数据类型:

  用户可以随时在程序中自行定义新的数据类型。自定义数据类型时需要设置数据类型的名称及其成员。数据类型成员各属性的设置方法等同于变量设置设置方法。

· 引用库定义或自定义数据类型对象的成员:

  数据类型成员等同于对象的属性,必须通过具有该数据类型的对象来引用。引用方法参见编程基础知识中的《引用对象的属性及方法》节。

  二、命令及操作符

  命令由运行支持库提供给用户在程序中使用,它们被分为很多类。有些命令的最后一个参数可以被扩展,譬如“相加”,它的“加数”参数可以被无限制地扩展,用作支持连续相加。这些命令在录入到程序中后在编辑窗口内其首部会显示出一个右双箭头作为标志。命令中的某些参数也有可能可以被省略,即调用时可以不提供参数数据。具体情况请参阅《支持库手册》。

  下面列出所有具有操作符的命令及其操作符运算优先级,值越小运算优先级越高。优先级高的命令在计算表达式时将被先执行,同优先级的命令按顺序执行:

命令名称 优先级 中文操作符号 英文操作符号

负 1 - -

相乘 2 × *

相除 2 ÷ / 整除 3 \ \

求余数 4 % % 或 Mod

相加 5 + +

相减 5 - -
不等于 6 ≠ <> 或 !=

等于 6 = = 或 ==

小于 6 < <

大于 6 > >

小于等于 6 ≤ <=

大于等于 6 ≥ >=

近似等于 6 ≈ ?=

并且 7 且 And 或 &&

或者 8 或 Or 或 ||=

赋值 9 = =

三、子程序

将程序分割成较小的逻辑组件就可以简化程序设计任务,这些逻辑组件被称为子程序。 子程序可用于压缩重复任务或共享任务,例如,压缩频繁的计算处理等等。

用子程序编程有两大好处:

· 子程序可使程序划分成离散的逻辑组件,每个组件都比无子程序的整个程序容易调试及理解;

· 一个应用程序中的子程序,往往不必修改或只需稍作改动,便可以成为另一个程序的子程序。

  每次调用子程序时,子程序中的所有语句都将被从第一条开始顺序执行,当执行到子程序尾部或者遇到“返回”命令时即返回到调用此子程序语句的下一条语句处。

  子程序可以接收参数数据和返回值。参数数据由调用子程序的语句传递过来,子程序的返回值被返回到调用子程序的语句处。

  子程序如需要返回值,必须先在子程序定义表的“返回值类型”栏中定义欲返回值的数据类型,然后在子程序中使用“返回”命令返回相应格式的数据。

  子程序如需要接收参数数据,必须先在子程序定义表中参数表部分定义与欲接收数据数目相同的参数。调用子程序时所传递过来的数据将被顺序地填入对应的参数中。如果所传递过来的数据与对应位置处的参数数据类型不一致,在可以互相转换时,系统将自动进行转换,否则会产生运行时错误。参数仅能在子程序内部使用。

定义子程序参数时需要定义以下几项主要属性:

· 参数名。 定义该参数在子程序中的使用名称。参数可以如同变量一样使用;

· 类型。所定义的数据类型应该与欲接收数据的数据类型相同或者能够互相转换;

· 参考。设置系统为当前子程序参数传递数据时是否为传递指向数据的指针。如果所传递过来的参数数据为数组、用户定义数据类型、库定义数据类型、字节集型、文本型数据,则无论此属性是否为真,都将传递指针。如果所传递过来数据的类型与相应位置处参数的数据类型不一致但可以相互转换,譬如将“整数型”数据传递到“小数型”的参数中,则在数据被实际传递前,系统将首先自动将“整数型”数据转换为“小数型” 数据,然后再进行传递。因此在这种情况下,即使本属性为真,系统也无法传递指向原参数数据的指针,只能传递数据本身。如果系统将数据指针成功地传递过来,那么在子程序中对此参数的内容的更改将会相应地反映到调用子程序时所提供的参数数据上。

· 可空。如果本属性为真,那么在调用本子程序时,调用方可以不为此位置处的参数传递数据。主要用作支持具有默认值的参数,也可以在为子程序添加了新参数后又不想去更改以前调用此子程序的语句时使用。在子程序中可以使用“是否为空”命令来查询调用方是否提供了参数数据。

· 数组。设置当前子程序参数是否为接收数组数据。如果本属性为真,则调用方应该为本参数传递数组数据,否则只能传递非数组数据。

四、Dll 命令

  在易应用程序中可以直接调用系统外部动态连接库(即 Dll 库)中的命令。在调用前,必须首先进行定义,定义Dll 命令涉及到以下主要属性:

· Dll 命令名。定义该 Dll 命令在易程序中的使用名称;

· 返回值类型。定义 Dll 命令返回值的数据类型,只能为无、字节、短整数、整数、逻辑及文本型;

· Dll 库文件名。 定义当前 Dll 命令所在动态连接库的文件名。如果不指定库文件名,系统将默认在 Kernel32.dll、Gdi32.dll、User32.dll、Mpr.dll、Advapi32.dll 等 Windows 系统的基本应用程序界面函数(API)库中搜寻指定命令;

· Dll 命令在 Dll 库中的对应命令名。定义当前 Dll 命令在其所在动态连接库中的名称,如果不指定,系统将默认等同于 Dll 命令名;

· 定义 Dll 命令参数时的主要属性:

1. 类型。Dll 命令参数所定义的数据类型应该与实际的 Dll 库命令一致。可以使用除了文本数组及字节集数组外的任何数据类型,包括库自定义和用户自定义数据类型。

2. 传址。某些实际 Dll 库命令的参数需要接收数据地址,设置本属性为真可以确保将参数数据的地址传递过去。如果参数数据的类型为数组、文本、字节集、用户定义数据类型、库定义数据类型,则无论此属性是否为真,都将传递数据地址。如果本属性为真且调用 Dll 命令时所传递过来数据的类型与相应位置处所定义参数的数据类型不一致但可以相互转换,则系统先分配一块临时内存空间,然后进行转换并将转换后的数据存放到该空间,最后将此内存空间的地址传递到实际的 Dll 库命令。参见例程 sample.e 中的相应部分。

3. 数组。意义同上.
五、程序集

程序集顾名思义即子程序的集合,用作将应用程序中的子程序分组归类。在程序编辑过程中,每个程序集将在单独的编辑窗口内进行编辑。

六、变量

  在易语言应用程序执行期间,可以使用赋值语句在变量内临时存储数据。变量有名字(用来引用变量所包含内容的词)和数据类型(确定变量能够存储数据的种类)。

变量有使用范围,在全局变量表内定义的变量被称为“全局变量”(图1),整个应用程序中的所有子程序都可以使用;在程序集变量表内定义的变量被称为“程序集变量”(图2), 仅能够被此程序集中的所有子程序使用;在子程序变量表内定义的变量被称为“局部变量”(图3),仅能够被此子程序所使用。

· 变量的初始化

  所有全局变量、程序集变量、局部静态变量在程序被启动运行前、所有非静态局部变量在其所处子程序被开始执行前,都将被自动分配空间并初始化。其中,数值型变量被初始化为零,逻辑型变量被初始化为假,日期时间型变量被初始化为 1899 年 12 月 30 日 0 时 0 分 0 秒,文本型变量被初始化为空文本(“”),字节集型变量被初始化为空字节集,子程序指针型变量被初始化为空子程序指针。

  特例:系统在对库定义数据类型的对象变量进行初始化时,将首先查询该数据类型的各成员在库中是否指定了初始值。如果指定了初始值,则使用该值进行初始化。譬如:“字体”为系统核心支持库中所提供的库定义数据类型,其“字体大小”成员的初始值在库中被指定为 9 点(1 点等于 1 / 72 英寸),“字体名称”成员的初始值被指定为“宋体”。

· 变量的赋值

  非数组变量可以通过赋予一个常数、常量、资源、对象或者变量来赋值。所赋予过来数据的数据类型必须与被赋予变量的数据类型一致或者可以互相转换。可以将一个对象赋予给变量后再使用该变量间接引用此对象。譬如:假设存在一个数据类型为“标签”,名为“变量1”的变量,使用“变量1 = 窗口1.标签1”语句可以将“窗口1”上的“标签1”窗口组件对象参考到“变量1”上,以后在程序中就可以直接使用“变量1.标题”来引用“窗口1”上“标签1”组件的标题属性。

  数组变量可以通过赋予一个常数集或者另外一个数组变量来赋值。

· 定义变量时的主要属性

1. 变量名。 定义该变量在程序中的使用名称;

2. 类型。定义该变量所能储存数据的数据类型;

3. 静态。本属性仅在定义局部变量时需要被设置。如果局部变量在定义时此属性被设置为假,那么运行应用程序时,此变量在其所在子程序开始被执行前自动分配存储空间并初始化,在所在子程序执行完毕后自动释放所分配的存储空间。也就是说,变量的存储空间仅在其所在子程序执行过程中存在;如果此属性被设置为真,那么此变量与全局、程序集变量一样,被分配给在程序运行期间永久存在的存储空间并仅在应用程序启动运行前被初始化一次。

4. 数组。设置当前变量是否为数组变量及数组各维的上限值(即成员数目)。如为多维数组,定义时各上限值之间用逗号分隔。引用变量数组中某成员的方法为使用被中括号括住的从 1 开始的索引数值,如:“[1]”(单维数组),“[2][1]”(多维数组)。所有多维数组均可以使用单维数组格式引用其成员。譬如:数组定义为“2, 3”的多维数组,其成员“[2][2]”可以被单维数组格式“[5]”所引用。

七、常数

  常数为可以直接在程序中使用的数据,具有以下几种类型:

· 数值型常数。如: 1、100 ;

· 逻辑型常数。如: 真、假 ;

· 日期时间型常数。日期时间常数的内容必须用中括号括住,并且应按以下格式之一提供,年份后的时间部分可以被省略:

1、[1982年4月23日12时30分25秒]

2、[1982/4/23/12/30/25]

3、[1982/4/23/12:30:25]

4、[1982-4-23-12-30-25]

5、[1982-4-23-12:30:25]

6、[19820423123025]

· 文本常数。文本常数的内容为一段文本,必须使用全角或半角双引号括住。如:“文本”、“文本”等等;

· 子程序指针常数。子程序指针常数为指向程序中某一子程序代码地址的指针数值,表达方式为符号“&”再加上子程序名称。如:“&子程序1”、“&_启动子程序”等等;

· 常数集。常数集用作提供其它各类常数或常量的数组形式。表达方式为使用大花括号括住一系列相同类型且通过逗号分隔的各类常数或常量。如:“{ 1, 2, 3 }”、“{ “abc”, “bcd” }”、“{ [1982年4月23日], [2000年1月1日12时] }”、“{ &子程序1, &_启动子程序 }”、“{ #红色,#黑色 }”、“{ #图片1,#声音1 }”等等。常数集也可以为空,表达方式为“{ }”,此时它将被认为包含有 0 个数值型常数,可以用作重新初始化一个数值数组或者将某字节集清空,譬如:“数值数组1 = { }”、“字节集1 = { }”等等。

八、常量

  常量用作存储在整个应用程序执行过程中保持不变的数据,其类型可以为数值、文本、逻辑值和日期时间。易语言核心支持库中已经提供了许多常量,但用户也可以在程序中自行定义。常量的引用表达方式为符号“#”再加上常量名称。如:“#pi”常量等同于数值“3.1415926535”、“#换行符”常量等同于文本 <回车> + <换行> 等等。

九、资源

资源用作存储用户需要在程序中所使用的图片、声音等等字节数据,其数据类型为字节集型。引用表达方式等同于常量

十、窗口、窗口组件及窗口程序集

  窗口为应用程序的界面,窗口组件为窗口的组成成员。每个窗口拥有一个专用程序集,名为窗口程序集。此窗口上所有的事件处理子程序都必须放在此程序集中。窗口程序集中的子程序引用所属窗口上的窗口组件属性或方法时可以省略窗口对象。譬如:假设程序中存在名为“窗口1”的窗口,该窗口上绘制有一个名为“标签1”的标签窗口组件。在其它程序集中的子程序欲引用“窗口1”的“标题”属性需要使用“窗口1.标题”,引用“标签1” 的“标题”属性需要使用“窗口1.标签1.标题”。而在该窗口的窗口程序集中的子程序可以直接使用“标题”、“标签1.标题”来进行相同的引用。

  系统核心支持库中定义的“窗口”窗口组件数据类型的所有方法能够被其它所有非功能类窗口组件数据类型所共享,就好象这些方法是其本身所具有的一样。

  在一个程序集中可以就象引用窗口对象的属性或方法一样来引用另外一个窗口程序集中的程序集变量和子程序。譬如:假设存在名为“窗口1”的窗口,其窗口程序集中存在名为“变量1”的程序集变量,名为“子程序1”的子程序,在其它程序集中可以使用“窗口1.变量1”及“窗口1.子程序1”来引用此程序集变量和子程序。

  窗口组件的属性除了被标明为“只读”的外,其它属性在运行时皆既支持读也支持写。

窗口的载入

  程序内所设计的所有窗口,运行时在使用前都必须先载入。除开“_启动窗口”由系统在启动程序时自动载入外,其它窗口都必须使用“载入”命令载入。有关查阅“载入”命令详细信息的方法,请参见《支持库手册》。在窗口被载入后,所有对此窗口及其所有组件的对象属性的修改,在窗口被关闭后都将自动被复原到设计状态。但是如果在窗口被载入前修改了窗口或其组件的固定属性,则此属性值将永久存在而不会被复原,就好象是在设计窗口时所设置的一样。

窗口组件的固定事件

  所谓窗口组件固定事件,即由系统而非窗口组件本身提供支持的窗口组件事件。其列表如下:

1、鼠标左键被按下:当在窗口组件上按下鼠标左键时产生本事件。

2、鼠标左键被放开:当在窗口组件上放开被按下的鼠标左键时产生本事件。

3、被双击:当在窗口组件上双击鼠标左键时产生本事件。

4、鼠标右键被按下:当在窗口组件上按下鼠标右键时产生本事件。

5、鼠标右键被放开:当在窗口组件上放开被按下的鼠标右键时产生本事件

6、鼠标位置被移动:当在窗口组件上移动鼠标时产生本事件。

事件(1 - 6)的事件参数为:

1、横向位置: 指示鼠标在当前所处窗口组件中的横坐标;

2、纵向位置: 指示鼠标在当前所处窗口组件中的纵坐标;

3、功能键状态:用于查看各功能键是否被同时按下。可以为以下常量值或其和: 1、#Ctrl键状态; 2、#Shift键状态; 4、#Alt键状态。要判断是否同时按下了某个功能键,在此参数值与想要得知功能键的状态常量值之间使用“位与”命令进行比较。如果所得的结果不为零,表示同时按下了此功能键。

7、按下某键:当用户按下某键时产生本事件。被按下某键的组件必须拥有焦点。

8、放开某键:当用户放开所按下的键时产生本事件。被放开某键的组件必须拥有焦点。

事件(7 - 8)的事件参数为:

1、键代码: 为键常量值,如:“#F1键”、“#回车键” 等等。具体所有的键常量见系统核心支持库的库常量表;

2、功能键状态。其意义同上。

  对于事件(1 - 8),对应的事件处理子程序皆可以返回一个逻辑值。如果返回假,则取消本事件,不再将此事件传递到所属窗口组件上去;如果不返回值或返回真,则将此事件继续传递到所属窗口组件上去。

9、获得焦点:当窗口组件获得输入焦点时产生本事件。

所谓“输入焦点”,即当前用户按键操作所对应的目标对象。譬如:用户正在编辑框中输入文本,那么此编辑框就具有输入焦点,因为它将获得目前用户所进行的所有按键操作。所谓“获得”或者“失去”输入焦点,即当前用户按键操作所对应的目标对象发生转移。譬如:现在用户正在编辑框1中输入文本,突然使用鼠标或其它方法切换到了编辑框2上去继续输入。那么此时,编辑框1就“失去”了输入焦点,编辑框2就“得到”了输入焦点,因为在此以后用户所进行的所有按键操作都将被改为编辑框2所获得。

10、失去焦点:当窗口组件失去输入焦点时产生本事件。

11、字符输入:当用户按下和松开一个字符键时产生此事件。

  字符键包括任何可打印的键盘字符及回车(Enter)和退格(BackSpace)键。在对应的事件处理子程序中,将事件处理完毕后可返回一个字符代码,用于替换将继续传递到所属窗口组件上字符键事件中的字符代码;如果返回 0 ,则取消此事件,不再将此事件传递到所属窗口组件上去;如果事件处理完毕后没有返回值,则将本字符键事件继续原样传递到所属窗口组件上去。

本事件的事件参数为:

1. 字符代码: 表明所按下的字符键所对应的字符代码,可以使用“字符”命令取出所对应的具体字符。

窗口组件的固定属性

  所谓窗口组件固定属性,即由系统而非窗口组件本身提供支持的窗口组件属性。在窗口组件属性表中,被显示在以粗线条隔开的第二组属性中。固定属性与普通属性在程序中的使用区别为:固定属性在窗口组件被创建之前也能被程序所使用,而普通属性则不能。其列表如下:

1、 左边、顶边、宽度、高度:指定窗口组件的位置及尺寸。如果窗口组件为“窗口”,其位置值相对于屏幕的左上角,如果为窗口内组件,其位置值相对于其所在窗口或者父组件的左上角。

2、标记:指定跟随于窗口组件的一段文本,用于在程序中取得或设置与该窗口组件相关联的数据。

3、可视:指定窗口组件是否具有可视外形。

4、禁止:指定窗口组件是否可以被操作者操作。

5、鼠标指针:指定鼠标移动到窗口组件上时鼠标的外形。

6、可停留焦点:设置当用户使用 TAB 或光标键在窗口上各组件之间移动输入焦点时是否允许在本组件上停留。

7、停留顺序:本属性必须在上一属性被置为真时才有效。用作设置用户使用 TAB 或光标键在窗口上各组件之间移动焦点时的顺序。当窗口被载入后,输入焦点将被交给具有最小停留顺序值的组件.

易语言数据库应用手册 易语言的数据库功能大部分基于 XBASE 方式,所以您如果曾经接触过 XBASE 数据库系统中的任何一款,如:DBASE、FOXBASE、FOXPRO 等等,就能够相当快地了解并应用易语言的数据库。

所有易语言数据库支持命令的具体解释请在数据库命令参考手册中查看,下面介绍一些概念和编程应用知识。

一、易语言数据库文件的组成:

.edb

数据库主文件

.edt

数据库辅助数据文件,仅在数据库中存在备注型或者字节集型字段时才存在,文件名称除了后缀外与数据库主文件相同,它必须与.edb文件放在同一目录中。

.enx

数据库索引文件。使用 B+ 树结构,由用户根据需要自行创建,用作加快记录的查找速度。

二、数据库的内部结构:

易语言数据库由行和列组成,如下面的数据库内容:

其中每一行被称为一条记录,每一列称为一个字段。如上面的数据库就有四条记录和四个字段。

字段具有“名称”、“类型”、“最大文本长度”三个属性,有关介绍如下:

<1>、名称: 字段名称文本的长度必须在 16 个字符以内;(一个英文字母为一个字符长度,一个中文为两个字符长度)

<2>、类型: 可以为以下常量值之一: 1、#字节型; 2、#短整数型; 3、#整数型; 4、#长整数型; 5、#小数型; 6、#双精度小数型; 7、#逻辑型; 8、#日期时间型; 10、#文本型; 11、#字节集型; 12、#备注型;

<3>、最大文本长度: 此属性仅当字段类型为“文本型”时才有效,用作指定文本的最大可能长度,其值范围必须在 1 到 1024 之间。如果字段类型不为“文本型”,本属性无效。当写入数据到数据库中的文本型字段内时,多出的部分将被自动剪切。

三、系统中的“数据库”菜单功能:

您可以使用“数据库”菜单下的“结构编辑器”来创建一个指定结构的数据库或者修改一个已存在数据库的现有结构。然后,使用“记录编辑器”可以加入或修改初始记录数据。

值得告诉大家的是:这两个菜单功能皆通过调用 dbmanger.exe 文件(由 dbmanger.e 易程序生成)来完成,dbmanger.e 源程序已经随系统一起提供,用户可以对其进行修改或者扩充,使之更能满足您的需要。

--------------------------------------------------------------------------------

下面介绍一些数据库应用程序中常用的编程知识,首先请下载并查看一下示例工资数据库 工资.edb ,其结构如下:



其中的“实发”字段在本数据库中并没有被实际使用,仅用作方便对某些命令进行举例。

一、编程前的准备工作:

强烈推荐:在开始编写数据库应用程序之前,请将程序中所需使用数据库的名称及其内所有字段名设置为常量,因为常量可以使用系统内部的输入法来很快地输入。如:上面数据库内具有一个名称为“姓名”的字段,如果此字段名已经被设置为了常量,那么在程序中需要引用它时可以简单地输入 #xm , 而如果没有设置为常量,您就必须使用 Windows 系统的输入法来一个字一个字地输入 “姓名” ,这样岂非太麻烦了吗?为了让您能够快速地加入所有的相关数据库常量,在“数据库”菜单下有一个“加入数据库常量”功能,使用此功能可以一次性将指定数据库的名称及其所有字段名加入为常量。下面的讲述中假设您已经做了此准备工作。

二、数据库本身的常用操作:

1、创建数据库:

欲在程序中创建数据库请使用“创建”命令,如欲创建上面的示例工资数据库工资.edb ,可以使用类似以下代码:

2、打开数据库:

欲打开指定数据库,请使用“打开”命令。可以同时打开多个数据库(其数目仅受 Windows 操作系统限制)。

注意易语言的数据库抛弃了 XBASE 的工作区概念,以便可以同时打开更多的数据库。

3、置当前数据库:

系统内部有一个“当前数据库”状态值,它被用来指向某一个已被打开的数据库。绝大部分数据库操作命令都针对当前数据库,譬如:记录指针的移动、字段的读写等等。用户可以使用“置当前库”命令来改变系统中“当前数据库”状态值的指向。如:

4、关闭数据库:

欲关闭当前数据库,请使用“关闭”命令。欲一次性关闭已打开的所有数据库,请使用“全部关闭”命令。(如图)

三、记录范围、字段范围、数据库表达式:

易语言中很多数据库命令都支持定义记录范围和字段范围,如:“复制记录”命令能够将当前数据库的记录复制到另外一个数据库文件,其调用格式的后半部分如下:

复制记录 (数据库文件名,记录条件,字段范围,… )

其中,“记录条件”参数即用作让用户定义记录范围,用户需要使用一个子语句来提供参数数据。如,将示例数据库中所有姓王的员工记录都拷贝到新数据库工资表.edb 中:



输入方法:fzjl("工资表",d(#xm)?="王")

其中:读 (#姓名) ≈ “王” 即是用作定义记录范围的子语句,这与 XBASE 的格式基本一样,只不过在 XBASE 中可以直接使用字段名称,而易语言由于不是解释型语言,所以使用 读 (xxx) 替换(其中 xxx 为字段名)。

假如您只想把示例数据库中的“姓名”和“工资”字段复制过去,就需要使用字段范围参数:



字段范围参数一般都为数据库命令的最后一个参数,以便让用户通过增加参数来同时提供多个字段,不过您也可以使用数组来做同样的工作:



假如您想把数据库中所有员工的工资都加上 100 元,就需要使用数据库表达式。完成此工作的相关数据库命令“替换”的调用格式的后半部分如下:

替换 (替换范围,字段名称或替换数据,… )

其每一个“字段名称或替换数据”参数对应“字段名称”、“替换数据”参数各一个。

语句如下:

其中,#工资 为字段名称,读 (#工资) + 100 即为数据库表达式,用作提供“工资”字段替换数据的获取方法。

可以同时替换多个字段,如:

语句可以同时将“扣除”字段清零。

数据库表达式中也可以同时使用多个字段,如:

语句可以计算出每一个员工的实发工资。

还有很多数据库命令使用了数据库表达式,如:

计算最大的实发工资并跳到其员工记录:

根据实发工资排序到 工资表.edb :

四、当前记录指针:

每一个被打开的数据库都有一个“当前记录指针”状态值,它指向数据库中的某一条记录,用作为一些记录读写命令提供位置指示。如:“读”、“写”、“删除”等等。它除了指向正常的记录外,还可能具有以下状态值之一:

1、首记录前。表明当前记录指针已经移动到了数据库首记录的前面,此时如果执行读写当前记录的命令肯定会失败,因为无法找到对应的记录读写位置。使用“首记录前”命令可以测试到此状态值;

2、尾记录后。表明当前记录指针已经移动到了数据库最后一条记录的后面,此时如果执行读写当前记录的命令也会失败。使用“尾记录后”命令可以测试到此状态值;

使用“取记录号”命令可以取回当前记录指针所指向记录的编号(从 1 开始)。如果为 0 ,表示在首记录前,如果大于最大记录编号,表明在尾记录后。

“到首记录”命令可以将当前记录指针移动到数据库的首记录上,“到尾记录”命令可以将当前记录指针移动到数据库的最后一条记录上。“跳过”命令可以相对移动当前记录指针值。

通过移动当前记录指针,我们可以遍历数据库中的所有记录:

反向遍历:

五、读写字段:

记录字段的读写均在当前数据库的当前记录处进行,主要为以下命令:

1、“读”。如: 可以返回当前记录处员工的姓名;

2、“写”。如: 可以将当前记录处员工的姓名改为“张三”;

3、“读字段”和“写字段”可以读写非当前数据库内的记录字段;

4、“修改”命令可以一次性修改当前记录的多个字段。如:

语句可以将当前记录的员工姓名改变为“王五”,工资改为 2000 ,扣除改为 100 。

六、添加记录:

使用“加空记录”命令可以在当前数据库的尾部添加一条新的空记录。

使用“加记录”命令可以同时提供欲添加数据。如:

语句可以在当前数据库的尾部添加一条名为“王五”,工资为 2000 ,扣除为 0 的新员工记录。

使用“添加”命令可以将其它数据库内的记录添加到本数据库,如: 添加 (“工资表”, , ) 可以将 工资表edb 数据库中的所有记录添加到当前数据库的尾部; 语句可以仅添加前 10 条记录; 语句可以仅添加所有未被删除的记录。

七、删除记录:

与 XBASE 数据库一样,记录使用“删除”命令删除,但删除后并不马上从数据库中清除,仅仅只被加上一个删除标记,依旧存在并可以正常访问。只有当执行“彻底删除”命令后,这些被加上删除标记的记录才会被从数据库中真正清除。

使用“是否已删除”命令可以查看当前记录是否被加上了删除标记,被加上删除标记的记录可以使用“恢复删除”命令取消其删除标记。

使用“清空”命令可以彻底删除当前数据库内的所有记录。

八、查找记录:查找记录有两种方法:不使用索引和使用索引。

1、不使用索引:

查找在示例数据库中所有姓王的员工记录的方法类似如下:

到首记录 () 如果当前记录指针在首记录上,则不需要此语句。

判断循环首 (查找 (读 (#姓名) ≈ “王”))

进行所需操作。

跳过 ()

判断循环尾 ()

注意与 XBASE 不同的是:易语言的查找从当前记录开始。

与易语言中的拼音处理类命令结合可以解决在汉字中极常见的近音搜寻问题:

语句中的“删全部空”命令用作预先去除字段数据中可能存在的全半角空格,如果确定所有记录的该字段数据中都不存在空格,可以去掉此命令。

第一条语句可以查找出当前数据库中所有姓名发音为“王屋”的员工,如:“王五”、“王舞”等等;第二条语句完成类似的工作,不过使用的是全拼拼音编码;第三条语句使用的是首拼拼音编码。

2、使用索引:

可以使用结构管理器预先在 工资.edb 上建立索引文件,也可以在程序中创建:



上面的语句建立了一个名为 工资.enx 的索引文件,它基于示例数据库的“姓名”字段,您也可以建立基于多个字段的索引文件。

索引只有被打开后才能被使用。使用“新建索引”命令新建的索引会被自动打开并设置为当前索引。对于已经存在的索引文件,您必须在打开数据库时同步打开:

此语句同步打开了 工资.enx 数据库索引文件,并将其设置为当前索引。

在数据库中搜寻所有姓名为“王五”的员工:

为了解决近音汉字搜寻问题,易语言中可以建立发音索引文件:

这两条语句分别建立了一个基于标准读音和一个基于南方读音的索引文件。

使用发音索引文件即可进行近音搜寻,如: 就可以找到“王五”。

在打开数据库时应该使用其“索引文件表”参数同时打开所有的索引文件,以便索引文件能够得到及时的更新。您也可以使用“更新索引”命令来强制更新当前索引文件。

九、查看数据库命令是否执行成功:

大多数的数据库命令执行完毕后都会返回一个逻辑值,表明是否执行成功。但是也有一部分命令无法做到这一点,如:“取最大值”等。

您可以在任何数据库命令执行完毕后立即调用“取错误码”命令来查看其是否执行成功。如果成功,“取错误码”命令将返回 0 ,否则将返回一个非 0 的错误值。

另外,如果发现命令执行失败,立即调用“取错误信息”命令可以取回对应的错误信息文本,当然是全中文的.

易模块开发手册

一、何为易模块:易模块实际上是一个特殊的易程序,它与普通的易程序相比,有以下特点:

1、必须具有程序名称(通过“程序”→“程序配置”菜单设置),此名称代表模块名称;(如图)

2、必须具有“_启动子程序”,此子程序负责进行易模块的初始化;(如图)

3、必须具有公开此易模块的对外接口,对外接口可以通过以下2种方法生成:

A:新建一个子程序,然后把“公开”选中,在易模块中任何程序集中选中“公开”的子程序都作为对外接口(如图)

B:新建一个接口程序集,然后把程序集名称改为“_接口程序集”,这个程序集下的所有子程序都不需要选中“公开”,均可由外部程序直接调用。(如图)

二、如何开发易模块:

  任何具有第一条中所述三个特点的易程序均可以作为易模块编译。开发易模块时注意点如下:

1、请将初始化易模块的代码放置到“_启动子程序”中,任何使用了此模块的易程序在运行前都会首先自动调用该子程序。如果在“_启动子程序”中发现初始化失败,请返回 -1 ,系统会自动终止其所处易程序的执行;

2、请将所有欲公开给第三方使用的子程序的“公开”选中,或者放置到“_接口程序集”中;

3、程序书写完毕后请选择“编译”将其编译为易模块。(如图)

三、使用易模块:

  在使用第三方所提供的易模块之前,请做如下操作:

1、使用“程序”→“易模块管理”导入该模块到系统;

2、使用“程序->易模块管理”创建对应于该模块的模块程序集,该程序集的名称自动为“_模块_”加模块名称;(如图)

  模块程序集创建完毕后,就可以直接使用该程序集中的子程序了,就如同这些子程序是自己所编写的一样。在编译易程序时所有被使用的易模块会自动被一起编译进去。

  注意点如下:

  1、除了删除模块程序集中的不用子程序外,不要修改程序集中的任何地方,否则有可能会导致编译不通过;

  2、如果想删除对某模块的使用,直接删除为该模块所建立的模块程序集即可。

四、有关“_临时子程序”:

  为了支持对易模块的调试,新增了“_临时子程序”支持,所有在该子程序中书写的代码,仅在调试环境下运行时有效,在编译易模块或者易程序的发布版本前,该子程序中的所有代码将会被自动删除。

注:

1:易语言以前版本的模块源代码均可用易语言最新版本打开重新编译;

2:易语言以前版本编译的易模块均可导入到易语言最新版本程序中使用.

EMB购买专用链接

如何在程序中使用ActiveX组件

ActiveX (也称为 OCX组件),Microsoft 对象链接与嵌入定制控件,是目前极为通用的Windows组件格式,易语言从3.2版本开始,就支持了直接在程序中使用此类型的组件。那么,如果您有一个很好用的ActiveX组件,如何使其能够在易语言中使用呢?

步骤如下:

首先,您需要将其包装成可以在易语言中使用的支持库格式,请执行“工具->封装类型库及OCX组件”

选中您欲在易语言中使用的ocx组件,

如果该组件没有在列表中列出,请单击“注册组件”按钮将其注册到Windows系统中,

然后单击“下一步”按钮显示该ocx的信息

再单击下一步将该组件中的所有英文信息中文化(您也可以不进行翻译而直接使用,但是如果这样在源程序中将显示英文)

最后单击“保存”按钮保存为.npk易语言包装支持库文件

系统会询问您是否将此文件复制到易语言系统中

点击“是”按钮后重新启动易语言即可使用该ocx组件。

再次运行“易语言”,您就会发现一个新的组件

您可以和使用所有内部组件一样使用ocx组件

注意:以上步骤都是假设您没有对应该ocx组件的.npk文件,如果您有对应该ocx组件的.npk文件,则不需要经过以上两个步骤,直接将其拷贝到易语言安装目录的lib子目录内即可使用该ocx组件。

使用ocx组件与使用易语言本身提供的内部组件没有任何区别,欢迎经常到我们的网站或论坛内下载更多已经翻译汉化好的.npk文件使用.

EMB购买专用链接

易语言 DLL 开发手册

一.关于易语言 DLL

  从易语言 3.6 版开始,已经能够支持对DLL动态链接库的开发, 编译出的DLL是标准的DLL,和其他编程语言生成的标准 DLL 的调用方法相同。易语言编写出的DLL,在非独立编译exe时只需要DLL文件随应用程序一起发行,而独立编译 exe 时无需将 DLL 文件随应用程序一起发行。

二.新建易语言DLL程序

新建一个易语言程序,然后选择 “windows动态链接库”图标,易语言就会自动创建

出编写态连接库的代码区(程序集)

创建完毕就可以在代码区里编写DLL程序。

三.如何生成动态连接库 (DLL)

易语言中的 DLL 编写方法和易模块的编写方法类似,都需要有对外的公开接口。下面将通过编写一个“自创信息框”来看一下用易语言如何编写和调用DLL。

编写DLL时的公开接口只能由以下方式生成,新建一个子程序,然后把“公开”选中,在DLL中任何程序集中选中“公开”的子程序都作为对外接口:

修改一下子程序名称,叫“自创信息框”,然后创建2个参数“标题”和“内容”,都定义成整数型:

注意:目前DLL接口函数中的参数只能为以下9种之一:

字节型、短整数型、整数型、长整数型、小数型、双精度小数型、逻辑型、日期时间型、子程序指针型

定义好DLL参数后,我们可以创建新窗体作为信息框窗口,在新窗体上画一个按钮,一个标签,为了让用户按下确定按钮后,窗口能关闭,可以双击确定按钮,创建按钮“被单击”的触发事件,写入代码:

然后返回到刚才的程序集1代码区开始编写代码。

由于2个参数都定义成了整数型,而调用的时候传递过来的标题和内容一定是文本型的,那么怎样去取得里面内容呢?别急,易语言3.6版中考虑到了这个问题,所以新增加了3个命令:“指针到文本”、“指针到字节集”、“写到内存”。

当用户传递的是文本型或者字节集型,易语言将自动转换成指针,我们可以使用“指针到文本”或“指针到字节集”把原来的文本返回出来。如下图所示:

到此已经完成“自创信息框DLL”所有工作,最后可以选择菜单“程序”→“编译”将其编译为DLL。如下图所示:

也可以使用快捷键“F7”编译刚刚编写的DLL,我们将编译以后的DLL名称命名为“自创信息框”,如下图所示:

通过以上,用易语言编写DLL的过程序基本完成。

四.如何使用DLL

用易语言编写的DLL可以在易语言自身调用,同样,也可以在其他编程语言中调用,如(VB,VC,Delphi等)

在易语言中的调用方法如下图所示:

注意:定义时,2个参数都定义成文本型

最后请在窗体上画一个按钮,双击按钮,写上代码调用这个DLL,按下按钮后,就会看到效果了!

注意事项:

1:调用DLL时的Dll对应命令名必须和接口名称完全一样。

2:接口函数的参数必须是基本数据类型,且不能为字节集型、文本型。

3:易语言3.6版中新增加3个命令“指针到文本”、“指针到字节集”、“写到内存”,这3个命令最佳使用场合就是在易语言回调子程序和易语言DLL公开子程序用作获取外部数据。在Dll中使用文本参数的方法请参考“取汉字拼音.rar”程序

4:易语言编写的DLL如果要在其他编程语言中使用,必须附带对应的易语言支持库

1. 如何在易语言中调用类型库

Q: What's 类型库?

A: 类型库是一个描述信息的集合,这些描述信息涉及组件的类、接口及接口上的方法以及这些方法的参数类型。类型库通过 ITYPELIB 接口来访问,用他可以轻松的解决如用户界面等问题,使程序开发更加的简单。

现在在“易语言”中,也可以使用类型库了,那么如何调用类型库呢?

首先运行“易语言”选择“工具”→“封装类型库及OCX组件”菜单

会出现一个注册OCX及类型库的窗口

我们向下拖动滚动条,可以看到一个类型库的分类,在这个分类之前的就是我们系统中的OCX组件,这个我们已经非常熟悉了,这里就不作说明了,在类型库的分类之后,就是我们系统中有的类型库,我们可以选择我们需要使用的注册。

我们可以选择我们需要的类型库之后选择“下一步”

之后我们会看到一个类似我们使用过的OCX注册那样的窗口,我们可以在这里对这个类型库作一些汉化等操作

在完成了我们所需要的汉化工作之后,我们可以点击“保存”按钮来保存我们刚才的操作

点击保存之后,会有提示信息提示你是否要把我们注册好的类型库保存到“易语言”目录中去

我们选择“是”之后,会提示我们安装成功

这时我们再运行“易语言”,在支持库中,就会看到我们刚才注册的类型库。

到这里我们已经完成把类型库注册到“易语言”中的工作了,下面在让我们来了解一下如何在易语言中使用这些类型库

首先我们展开数据类型

我们会看到他下面有很多类型,而这些类型下面又有很多命令,我们可以把它们看作是定义好了的自定义数据,每一个类型就是自定义数据类型的一个类型名,下面的每一个命令都是一个成员。

那么我们怎么使用他们呢?

首先创建一个变量,他的类型就是这些项目的名称,我们可能在类型选择中找不到这些,我们可以点击这项来展开所有的类型,就会发现我们需要的。

选择我们需要的类型就可以了

具体的使用方法就和使用自定义数据类型一样,直接使用我们选择类型中的命令就可以了,如果还不能理解,想一下字体是怎么用的?定义“字体”为字体类型,使用“字体.加粗=真 ”方法是一样。

我们再回过头来看一下,把滚动条向下拉,我们会看到一些事件

箭头所示的就是office类型库包括的事件,这些事件如何使用呢

我们会发现在控件箱中多出了一些控件,这些控件就是刚才我们注册的类型库的触发事件,我们需要使用它的时候,就可其他组件一样把它拖放到窗体上就可以了

这是我们会发现在属性中多出一个控件,我们选择该控件的触发事件就可以了

他的使用和其他触发事件是一样的

到这里,我们已经了解了在“易语言”中是如何使用类型库了,是不是很简单?其实类型库的使用就和其他的命令没有什么区别,不要感觉它多么深奥,只要我们有健全的资料就可以很好的使用它们为我们写出很好的软件。

2. 如何在易语言中使用类型库

如何在易语言中使用类型库,我们下面用一个小例程来说明,首先打开“易语言”

选择“工具”→“封装类型库及OCX组件”注册word类型库。

然后左边支持库表中会出现word的类型库

然后我们在窗体中画上两个按钮以便我们使用,至于旁边画的那个com控件我们等一下

现在我们开始写入代码,如果按照com对象的方法来操作word,我们就要先创建一个word的对象,连接“Word.Application”,其实这也是调用“word”对象中的“Application”对象,但是现在不用这样了,通过类型库我们可以直接来操作“Application”首先我们创建一个程序集变量,类型为“Application” ,这样我们就可以直接操作“Application”中的命令

在“_按钮1_被单击”事件中输入

这两行代码的作用是首先将word的可视属性设置为“真”,然后再将word的标题改为“易语言word”,运行一下看看效果,是不是改变了?

以前我们用com对象操作word可以通过word对象提供的“quit”命令来结束word,但是并没有相应的触发事件,我们只能使用,不能在这些事件中处理其他事情,现在可以做到了,我们上面看到的窗体上画的那个com控件就可以起到这个作用,我们在右边组件箱中选择这个控件画到窗体上。

这个就是word对象中“Application”对象的所有触发事件,我们在选择“Application事件1”下来它的事件组合框选择“quit”事件

会在代码区生成一个“_Application事件1_Quit”子程序,我们再这个子程序下面输入如下代码

这只是“Application”对象的一个触发事件,我们怎么才能触发他呢?在“_按钮2_被单击”子程序中输入如下代码

现在我们运行代码,先单击按钮1创建,再单击按钮2关闭 word,你会发现并没有触发“_Application事件1_Quit”事件,没有弹出信息框,因为我们虽然调用了“_Application事件1_Quit”事件,但是并没有将“_Application事件1_Quit”事件和“Application”挂钩,我们必须在“__启动窗口_创建完毕”将这个事件和“Application”挂钩,不然是无法触发这个事件的。

这样我们运行 Word,单击按钮 2 结束,就会出现信息框了.

程序的输入方法

请注意:每输入一行程序,必须使用回车键确认,否则将自动保存为草稿。

一、概念:

  为了便于输入程序,易语言内置四种名称输入法:首拼、全拼、双拼、英文。三种拼音输入法均支持南方音及多音字。首拼输入法及全拼输入法在系统中被合并为“首拼及全拼输入法”,系统自动判别所输入的拼音是首拼方式还是全拼方式。双拼输入法的编码规则与 Windows 系统所提供的双拼输入法一致。例如:欲输入“取整 (1.23)”语句,各种输入法的输入文本为:

首拼及全拼输入法:

<img alt="" src="http://www.dywt.com.cn/help/zlsc/ime.files/image001.gif" border=0>

或者

<img alt="" src="http://www.dywt.com.cn/help/zlsc/ime.files/image002.gif" border=0>

双拼输入法:

<img alt="" src="http://www.dywt.com.cn/help/zlsc/ime.files/image001.gif" border=0>

英文输入法:

<img alt="" src="http://www.dywt.com.cn/help/zlsc/ime.files/image001.gif" border=0>

以上各种输入法的名称部分输入文本(如:qz、quzheng、quvg、int)简称为“输入字”。拼音类输入法的输入字(如:qz、quzheng、quvg)简称为“拼音输入字”。首拼及全拼输入法的输入字简称为“首拼及全拼输入字”,双拼输入法的输入字简称为“双拼输入字”。

  输入字可以用来输入程序中所涉及到的一切名称,包括:

· 所有当前运行支持库中所提供的命令、组件数据类型及其属性和方法、普通数据类型及其成员和方法、库定义常量等等名称;

· 用户在程序中定义的子程序参数、子程序局部容器、程序集容器、全局容器名称;

· 用户定义的子程序、 Dll 外部命令名称;

· 用户定义的数据类型及其成员名称;

· 用户所加入的资源和所定义的常量的名称;

· 用户在设计窗口时所定义的组件、菜单项目名称;

· 系统数据类型名称。如:“整数型”、“小数型”等等;

· 系统常量名称。如:逻辑值常量“真”和“假”等。

在使用首拼输入字时,需要注意纯韵母发音汉字的输入。如:“按钮”中的“按”字,它的发音是韵母“an”。对于此类汉字,在首拼输入法中必须写全。譬如“按钮”的首拼输入字就应该为“ann”(即an, n)。

例如:输入“按钮1.左边=10”,输入文本为:

二、输入字类型指定:

  在程序中书写输入字时,可以使用一个半角符号来引导该输入字,以指定其类型。各输入字的类型引导符号为:

· 首拼及全拼输入字: 分号(“;”)


· 双拼输入字: 冒号(“:”)

· 英文输入字: 单引号(“ '”)

  系统具有一个当前默认输入法状态,如果某输入字前没有加上类型引导符号,则默认是属于该输入法的输入字。系统安装完毕后,当前默认输入法为“首拼及全拼输入法”。这就意味着:在当前默认输入法为“首拼及全拼输入法”的时候,要想使用双拼输入字,则必须在输入字的前面加上类型引导符“:”。不过此时英文输入字前可以加也可以不加类型引导符“ '”。其原因为:如果当前默认类型输入字不能找到匹配的目标名称时,系统将自动把该输入字转换为英文输入字后再去寻找匹配名称一次。

  可以使用“程序 =》 系统配置 =》 输入 =》 默认输入法”菜单功能修改当前默认输入法。

三、书写拼音输入字的方法(以首拼及全拼输入字举例)

· 为了匹配目标名称中的大小写英文字母和半角数字,请在相应位置处使用对应的大写英文字母和半角数字。如:“jsjA”匹配“计算机a”和“计算机A”,“jsj1”匹配“计算机1”;

如果在输入过程中,遇到英文字母与汉字混杂的情况,字母部分要大写。例如,输入“超级链接框1.Internet地址=”” ”输入文本为:

· 为了匹配目标名称中的汉字符号或不知道发音的汉字,请在相应位置处使用该汉字。如:“j算j1”匹配“计算机1”。此功能用作修改程序非常方便,例如:欲将“如果”命令修改为“如果真”命令,只需要在“如果”的后面加上“z”即可;

· 拼音输入字内不能包含除了“_”以外的所有其它半角符号。

· 如果某拼音输入字匹配了多个目标名称,系统将自动列出来以供选择。

· 如果不想让系统列出来,可以在拼音输入字后加上单引号(“ '”),再后跟用作指定序号的数字 1 - 9 或大小写字母(对应于数值 10 - 35)即可。如:输入字“xc”具有两个匹配命令名称:“相乘”和“相除”,可以使用输入字“xc'1”来指定“相乘”命令,“xc'2”来指定“相除”命令。

四、输入或修改名称本身

  在程序中经常需要输入或修改各类名称本身,譬如:加入一个新子程序后,可能需要修改其子程序名称;在设计窗口上绘制上一个组件后,可能需要修改其组件名称,等等。在输入或修改名称本身的过程中,输入字不能用来引用其它已有名称,但可以引用专用的名称输入词组。所谓“名称输入词组”,类似于通常中文输入法中的自定义词组。用户在输入或修改名称的过程中按下空格键后,系统将自动使用位于当前光标前的输入字去搜寻系统中的名称输入词组,如果找到,就用匹配词组替换该输入字,否则加亮显示该输入字,表示未找到。系统中所有的名称输入词组都被存放在名为“name.txt”的文本文件中,用户可以使用系统中所提供的功能(程序 -> 系统设置 - 输入 - 编辑名称输入词组)进行修改,也可以使用其它文本编辑器直接修改,但注意要以纯文本的格式保存。文本文件中各词组之间应该用换行或全半角空格或制表符分隔开。词组内容必须为全中文,且不能包括 GBK 汉字。系统在处理这些词组时,不符合要求的将被滤去。

程序输入举例

  下面列出了输入一个判别两个数值大小并返回较大值的子程序的全过程,前提为:默认输入法为“首拼及全拼输入法”:

1. 进入易系统后使用“插入 -> 新子程序集”菜单功能插入一个子程序集到程序(如果程序中已经有了子程序集,直接跳转到该子程序集即可);

2. 按下 Ctrl + N 插入一个新的子程序;

3. 在“返回值类型”栏中输入“zsx”后回车(“zsx”匹配系统数据类型名称“整数型”);

4. 回车插入一个空参数,在“参数名”栏中输入“sz”后按空格(“sz”匹配系统安装时提供的名称输入词组文件中的“数值”词组),再输入“1”后回车;

5. 在“类型”栏中输入“zsx”后回车;

6. 重复第4、5步一次,但参数名改输入为“数值2”;

7. 移动光标到参数表下的空程序语句上;

8. 输入“rg (sz1 > sz2)”(中间的空格可以略去。“rg”匹配“如果”命令名称,“sz1”匹配“数值1”参数名称,“sz2”匹配“数值2”参数名称);

9. 下移一行光标后输入“fh (sz1)”(“fh”匹配“返回”命令名称);

10.再下移一行光标后输入“fh (sz2)”

EMB购买专用链接

编程基础知识

  创建一个易应用程序只需要短短几分钟的时间 - 通过在设计窗口上“绘制”诸如编辑框和按钮等组件来创建用户界面。然后,为窗口和组件设置属性以规定诸如标题、位置、尺寸等的值。最后,编写处理程序将生命真正赋于程序。

组件及事件驱动

  组件及其事件驱动是使用易语言在 Windows 环境下编程的基础知识。所谓“组件”,即用作组成用户图形界面的基本成员,譬如:窗口、编辑框、图片框等等。组件按可否容纳其它组件划分为容器类和非容器类。按运行时是否可能具有可视外形划分为界面类和功能类。容器类组件内可以包容其它的组件,譬如窗口、选择夹、图片框等都属于容器类。而功能类组件仅用作在其所在窗口上提供某种功能,运行时看不到。譬如时钟、打印机等。

  所有组件在其状态被改变或操作者在其上进行了某种操作后,都有可能向用户程序发送某种事件信息。譬如:当窗口的尺寸被改变后,窗口将向用户程序发送尺寸被改变的信息,用作给予用户程序通过相应的事件处理程序调整窗口布局或进行其它处理的机会。当操作者单击按钮后,“按钮”组件将向用户程序发送按钮被单击的信息,等等。但并不是所有的状态改变或操作事件都将被发送到用户程序,那些易系统认为用户程序没有必要处理的或者系统完全能够自行处理的事件,都将被系统直接处理。这样用户可以快速创建强大的应用程序而毋需涉及不必要的细节。

  在传统的应用程序中,应用程序自身控制了执行哪一部分程序和按何种顺序执行程序,即从第一行开始并按应用程序中预定的路径执行。在事件驱动的应用程序中,程序不是按照预定的路径执行而是在响应不同的事件时执行不同的事件处理程序。如前所述,事件可以由组件在其状态被改变或者操作者在其上进行了某种操作后触发。这些事件的顺序决定了程序执行的顺序,因此应用程序每次运行时所经过的程序的路径都是不同的。在执行中由于程序本身也可以对组件的状态进行改变,譬如,在程序中改变编辑框中的内容将引发编辑框的“内容被改变”事件。如果该事件在用户程序中定义了相应的处理程序,则该处理程序将被执行。如果原来假设该事件仅能由操作者在该文本框中进行输入或修改所触发,则可能会产生意料之外的结果。所以在设计应用程序时必须完全理解并牢记事件驱动的特点。

对象

易语言是一种基于对象的编程语言,能否熟练地使用易语言,理解对象的概念及其使用方法非常重要。

一、对象的概念:

  所谓“对象”,即为属性、方法和事件的集合。在人们的日常生活中,“对象”也可以理解为“事物”,比如说,一个人、一件东西、一起事情,都可以被认为是一个“对象”。对象的属性记录对象特征,对象的方法提供了对对象进行某种操作的途径,对象的事件用作通知外部它的状态发生了改变。譬如说一个电源开关,其外形、颜色、使用电压等等都可以认为是该电源开关“对象”的属性,而关闭或打开此电源开关则可以认为是电源开关“对象”的方法。在关闭或打开的同时,它可能产生事件,譬如通知与其相连的电器开始工作或者停止等等。在易程序中,例如“画板”组件,即是一个典型的对象,它具有 “画笔类型”、“画笔粗细”等属性,同时又有“画直线”、“画矩形”等方法,在需要重画时还会产生“绘画”事件;

二、对象的创建:

  在易程序中,对象通过定义数据类型的实例来创建。定义方法有多种,譬如将一个组件绘制到设计窗口上或者在程序中定义一个具有该数据类型的变量。被绘制到设计窗口上的组件或者所定义的变量即为对象。所谓“数据类型”,只是定义了对象的构架,就好比是房屋设计图和实际房屋之间的关系。设计图只是指定了该房屋的构造和布局,在使用该设计图建造出实际的房屋之前,房屋对象是根本不存在的。同样,一个数据类型可以定义出无限多个对象,就好比使用某一份房屋设计图可以建造出无数同样的房屋一样;

三、在程序中引用对象的属性及方法:

  通过在对象及其属性或者方法之间加上句点(“.”)即可以引用对象的属性及方法。

例:读取“画板1”对象的“画笔粗细”属性

例:修改“画板1”对象的“画笔粗细”属性

例:调用“画板1”对象的“画直线”方法

举例

  下面举例说明一步步创建显示 “祖国,您好!”信息的易程序。

  创建易应用程序有三个主要步骤:

创建应用程序界面;

设置属性;

编写代码。

为了说明这一实现过程,按照以下步骤可创建一个简单应用程序,该应用程序的界面由一个标签和一个命令按钮组成。单击命令按钮,标签中会出现 "祖国,您好!" 信息。

  一、创建应用程序界面:

  建造易应用程序的第一步是创建并设计窗口,这些窗口将是应用程序界面的基础。然后在窗口上绘制构成界面的组件。对于目前的应用程序,可用组件工具箱中的两个组件:标签 和按钮。

  <1>、进入系统后跳转到名称为“_启动窗口”的窗口设计界面。如果在安装系统后没有使用“程序 -> 系统设置”菜单功能修改易程序的启动方式,新建程序进入编辑后就直接停留在“_启动窗口”窗口的设计界面;

  <2>、在窗口组件工具箱中选中“标签”窗口组件,使用鼠标将它绘制到窗口的上边中部;

  <3>、在窗口组件工具箱中选中“按钮”窗口组件,使用鼠标将它绘制到窗口的下边中部。

  二、设置属性:

  选中被绘制在窗口上的“标签”组件,在属性表中将其“标题”属性值改为空。

  三、编写代码:

  <1>、双击被绘制在窗口上的“按钮”组件或者选中该组件后在属性表最下边的组合框内选取“被单击”事件从而开始编写对应的事件处理子程序;

  <2>、在子程序的程序部分输入“bq1.bt = "祖国,您好!"”后回车。

至此,我们的第一个应用程序已经创建完毕,按下 F5 键或使用“运行 -> 运行”菜单功能开始执行程序,单击窗口中的按钮,标签中即出现 "祖国,您好!" 信息.

EMB购买专用链接

操作手册

一、系统主窗口布局

  在系统安装后第一次进入时,主窗口的顶端为菜单条,菜单条的下面为标准工具条,左边为工作夹,下边为状态夹,中间为“_启动窗口”的窗口设计界面,右边为窗口单元工具箱。另外,系统状态行默认是不显示的,使用组合夹可以将工作夹与输出夹组合到一起,编写程序时将使用程序编辑窗口。

  在主窗口或其各类工具条上单击鼠标右键可以弹出用作设置各种工具条、工具夹显示状态的菜单。

二、工作夹

  在工作夹中包括三个子夹,名为:“支持库”、“程序”、“属性”。

  1、支持库夹:

  在支持库夹中可以查看到当前所有被引入的支持库及其中的所有内容和信息。每选中一条项目,在提示夹或状态行上均可以看到有关此项目的详细帮助文本。在某项目上单击鼠标右键可以弹出一个菜单,在此菜单中可以进行譬如输出此项目及其所有子项目的帮助文本、将现行项目所对应的命令输入到程序中等等操作。双击某项目可以将此项目所对应的命令输入到程序中;

  2、程序夹:

  在程序夹中可以查看到当前程序的所有组成部分。譬如:程序中的所有程序集、所有全局容器、窗口等等。双击某项目可以跳转到该项目所对应的程序部分。在某项目上单击鼠标右键可以弹出一个跳转、插入或删除对应程序项目的菜单;

  3、属性夹:

  属性夹用作显示当前被选中窗口单元的属性表。各组属性之间用粗线条隔开。某属性的子属性将比其父属性缩进一格。灰色文本标题的属性表示此属性需要在其父属性被设置为某值后才有效,但仍然可以进行设置。选中某属性后按下 Delete 键可以删除此属性中的内容(譬如图片、声音等等),按下空格可以进行编辑或修改。

  在属性夹的顶部有一个组合框,用作选择当前设计窗口中的某窗口单元。在属性夹的底部也有一个组合框,用作自动加入或跳转到当前被选择窗口单元的某事件处理子程序。

三、状态夹

  在状态夹中包括三个子夹,名为:“提示”、“输出”、“调用表”。

  1、提示夹:

  提示夹中始终具有针对于当前用户操作的提示,此为用户获取帮助信息的最有效、最直接的地方;

  2、输出夹:

  输出夹中提供当前系统输出给用户的信息。譬如:编译易程序的全过程;易程序在调试运行方式下使用“输出调试文本”命令所输出的文本;易程序的编译及运行错误等等;

  3、调用表夹:

  调用表夹中提供调试时当前被中断运行的易程序的子程序调用过程记录。用户可以双击某项目或者选中某项目后按回车以直接跳转到该调用位置。

  4、查改变量夹:

  查改变量夹中提供调试时当前被中断运行易程序的所有变量内容,用户可以对变量值进行查看或者修改。

四、状态行

  状态行中的内容等同于提示夹中的内容,如信息有多行或超出行外,在任何时候(包括正在显示对话框时)均可使用 Ctrl + / 键浏览其全部。

五、设计窗口界面

  1、绘制新的窗口单元:

  在窗口单元工具箱中选取所欲绘制入的窗口单元(窗口单元工具箱的第一个按钮为返回选择方式,不是窗口单元),然后使用鼠标拖动绘制在窗口上。在绘制过程中如果想中途放弃,可以按 Esc 键或者单击鼠标右键。

  2、选择窗口单元:
· 使用鼠标直接单击欲选择的窗口单元;

· 使用鼠标拖动选择在一个指定矩形区域内的所有窗口单元;

· 使用 Shift + 鼠标左键 选择或者取消选择指定的窗口单元而不影响其它窗口单元的选择状态;

· 使用 Shift + 鼠标拖动 选择或者取消选择指定矩形区域内的窗口单元而不影响其它窗口单元的选择状态;

· 在属性夹顶部的组合框中直接选择某窗口单元。

  3、使用鼠标改变窗口单元的位置:

· 拖动已经被选择的窗口单元即可。

  4、使用鼠标改变窗口单元的尺寸:

· 拖动已经被选择的单个窗口单元四周的对应调节器即可。

  5、编辑窗口菜单:

· 使用 Ctrl + E 即可调入窗口菜单编辑器。

  6、预览:

· 使用 Ctrl + Enter 即可预览窗口在运行时的实际情况,在预览时不会去调用事件的处理子程序。

  7、其它可以进行的操作请参见主菜单及设计窗口上的右键菜单。

六、程序编辑窗口

  1、程序集的组成

  在程序集的首部为程序集定义表,其中可以定义程序集名称、备注和程序集容器。如果程序集容器定义表尚不存在,在程序集定义表上使用回车 或者 Insert 键即可创建并插入一个空的程序集容器。

  在程序集定义表后面顺序记录有此程序集中的所有子程序。

  子程序由子程序定义表、局部容器定义表和程序语句系列组成。在子程序定义表中可以定义子程序名称、返回值类型、备注和子程序参数。如果子程序参数定义表尚不存在,在子程序定义表上使用回车 或者 Insert 键即可创建并插入一个空的参数。在局部变量定义表中可以定义仅在此子程序中使用的变量。如果局部变量定义表尚不存在,在子程序中使用 Ctrl + L 键即可创建并插入一个空的局部变量。

  2、输入备注

  在用户编写易程序的过程中,所有地方均允许用户直接输入相关的备注信息。在子程序中,用户可以使用菜单功能“编辑 -> 修改备注”或者 Alt + Enter 来输入与当前语句相关的备注。

  3、草稿

  由于易系统对用户所输入的语句是先编译后存放,因此不符合语法规则的语句就不能被输入到程序。但是,在实用过程中,用户可能经常需要在输入语句时跳转到其它地方去查阅相关信息,或者需要暂时存放一些临时性的语句文本、需要暂时屏蔽某些语句等等。此时可以使用草稿来满足此需求。在语句上按下 Ctrl + Enter 或者在输入时按下 Ctrl + Enter 键均可以将当前语句以草稿的形式保存。另外,如果在输入的过程中跳转到程序中的其它地方,当前语句将自动以草稿的形式保存,在查看完毕返回此程序编辑窗口后,按下 Tab 键可以继续先前的输入。

  4、光标键操作(同样适用于自定义数据类型表、全局变量表、Dll命令定义表、常量数据表、资源表等等编辑窗口)


在语句行上关闭参数,在表格上左移一列。


在语句行上打开参数,在表格上右移一列。


上移一行


下移一行

Ctrl + ↑

上滚一行

Ctrl + ↓

下滚一行

Shift + ↑

向上选择一行

Shift + ↓

向下选择一行

Ctrl + Alt + ↑

跳转到上一子程序/自定义数据类型/Dll命令

Ctrl + Alt + ↓

跳转到下一子程序/自定义数据类型/Dll命令

Ctrl + Shift + ↑

移动光标到与当前行有箭头关连的前面的行

Ctrl + Shift + ↓

移动光标到与当前行有箭头关连的后面的行

Ctrl + =

打开所有参数

Ctrl + [

水平向左滚动一页

Ctrl + ]

水平向右滚动一页

PageUp

垂直向上滚动一页

PageDown

垂直向下滚动一页

Shift + PageUp

向上选择一页

Shift + PageDown

向下选择一页

Ctrl + PageUp

跳到头部

Ctrl + PageDown

跳到尾部

Ctrl + Shift + PageUp

选择到头部

Ctrl + Shift + PageDown

选择到尾部

Home

在表格中到首列

Ctrl + Home

跳到当前页头部

Ctrl + Shift + Home

选择到当前页头部

End

在表格中到尾列

Ctrl + End

跳到当前页尾部

Ctrl + Shift + End

选择到当前页尾部

Insert

在当前行前插入新行

Enter

在当前行后插入新行

Delete

删除当前行

Ctrl + / 如果当前所提示信息不能被看到或完全看到,则跳转到提示夹或另弹出窗口显示之;如果执行此操作时提示夹已经被显示但无输入焦点,则赋予其输入焦点,以便于用户使用键盘浏览提示信息;如果已有输入焦点,则将焦点转移回程序编辑窗口继续进行编辑。

Ctrl + Tab

在编辑窗口之间跳转。按下 Ctrl 键后不放,然后反复按 Tab 键可以在目前所有的编辑窗口之间跳转;按下 Ctrl 键后同时按下 Tab 键,然后都放开,可以在最近两个编辑窗口之间跳转。

  5、编辑

  <1>、进入编辑状态:

· 按下空格键即可进入编辑,此时原有内容将被调入;

· 按下 Ctrl + V 可以使用当前剪辑板中的文本内容进入编辑,此时原有内容将被此文本替换;

· 直接输入字符或汉字也可以进入编辑,此时原有内容将被该字符或汉字替换;

  <2>、欲删除整个子程序,只需要在子程序表的子程序名称行上进行删除操作即可。

  <3>、编辑过程中可进行的操作(此信息在编辑时可在提示夹或状态行上查阅到):

· F1 键可以浏览并选择输入文件名;

· Ctrl + F 可以进行搜寻,F3 或 Shift + F3键可以继续向后或向前搜寻文本;

· Ctrl + → 或 Ctrl + ← 以单词为单位移动光标,同时按下 Shift 键可以进行选择;

· Tab、Alt + → 或 Shift + Tab、Alt + ← 以 8 个字符为单位快速移动光标,使用光标键时同时按下 Shift 键可以进行选择;

· Ctrl + A 可以全选;

· 在输入程序语句时以 Ctrl + Enter 键结束可以强行将当前输入内容以草稿形式保存;

· 在常量表中输入常量值时以 Alt + Enter 结束可以强行将当前输入内容作为文本类型常量保存,此方法可用作输入带有双引号的文本常量内容。

  6、选择块

  易编辑窗口中的块与其它软件不同之处为:可以同时选择多块。块选择的方法为:

  <1>、键盘方式:使用 Shift + 光标键 进行块选择或者添加,使用 Alt + 光标键 进行不影响当前块定义的光标移动。

  <2>、鼠标方式:使用鼠标直接拖动可以选择一个区域,单击标志列可以选择对应的行。使用 Shift + 鼠标单击或者拖动可以增加一个选择区域。使用 Ctrl + 鼠标单击或者拖动可以取消一个选择区域。

七、失去关联的名称

  易程序中的所有名称,都被系统内置的名称管理器所管理,以便进行改名跟踪等处理。但有时候某些名称可能会被失去关联管理,譬如:假设程序中存在名为“子程序1”的子程序,在程序中的“子程序2”子程序内调用了“子程序1”。那么,用户如果进行了类似以下的系列操作,“子程序1”名称将会与“子程序2”中的相应调用名称失去关联:

  1、剪切“子程序1”到剪辑板。此时由于“子程序1”已被删除,“子程序2”中的相应调用名称将失去其关联对象;

  2、再将剪辑板中的“子程序1”代码粘贴到程序中。此时系统因为无法确认用户是否确切想将其与“子程序2”中的“子程序1”调用名称关联起来,所以不会去自动关联。

  至此,“子程序2”中的“子程序1”调用名称失去了其关联对象,现在用户如果修改“子程序1”的名称,“子程序2”中的相应调用名称不会被自动更改。如果“标记程序中失去关联的名称”系统选项被置位(系统安装后默认不置位。修改设置的方法:使用“程序 -> 系统配置 -> 程序显示夹 - 标记程序中失去关联的名称”菜单功能),“子程序2”中的调用名称前将会被显示一个五角星号。

  将两者重新关联起来的方法是在具有失去关联名称的语句行上按下 Shift + Enter 键重新处理。

  在编译或者运行程序时,系统将会自动寻找与失去关联的名称相匹配的对象名称。

八、其它

  有关所有菜单功能的介绍,请参见易系统中对应菜单项目的提示信息.

所有详解到此结束 如想了解个单项的详细说明可去本网搜索相关资料





上一篇:易语言中的变量和常量的区别与使用
下一篇:易语言编写一个简单代码的例子

0

主题

190

帖子

386

积分

中级会员

Rank: 3Rank: 3

积分
386
发表于 2018-4-27 21:43:40 | 显示全部楼层
下来看看

0

主题

176

帖子

372

积分

中级会员

Rank: 3Rank: 3

积分
372
发表于 2018-5-5 13:09:08 | 显示全部楼层
还是看不懂,复杂

0

主题

183

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
发表于 2018-5-29 20:52:58 | 显示全部楼层
很给力。。。。很喜欢

0

主题

188

帖子

382

积分

中级会员

Rank: 3Rank: 3

积分
382
发表于 2018-6-8 17:56:51 | 显示全部楼层
不错哦  喜欢 嘿嘿

0

主题

188

帖子

392

积分

中级会员

Rank: 3Rank: 3

积分
392
发表于 2018-6-17 23:46:23 | 显示全部楼层
帮帮顶顶!!

0

主题

182

帖子

394

积分

中级会员

Rank: 3Rank: 3

积分
394
发表于 2018-6-19 16:43:37 | 显示全部楼层
看下~什么好东西

0

主题

198

帖子

403

积分

中级会员

Rank: 3Rank: 3

积分
403
发表于 2018-6-20 16:07:45 | 显示全部楼层
期待中......

0

主题

195

帖子

408

积分

中级会员

Rank: 3Rank: 3

积分
408
发表于 2018-6-22 23:03:21 | 显示全部楼层
这个就厉害了,多谢楼主大大分享~

0

主题

176

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
发表于 2018-6-27 23:14:14 | 显示全部楼层
支持支持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|吾爱分享资源网 ( 苏ICP备17042175号 | 苏公网安备 32108102010177号 )

GMT+8, 2018-12-14 15:26 , Processed in 0.269023 second(s), 35 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表