为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

十天学会易语言全集易语言菜鸟教程合集【不完全版】

2018-09-10 50页 doc 473KB 213阅读

用户头像

is_024720

暂无简介

举报
十天学会易语言全集易语言菜鸟教程合集【不完全版】易语言常用语句 (转载自.::Etp工作室::.之『教育部』) 对于初学者来说,即使代码是全中文的,也需要别人讲解才能明白其中的意思。如果我们能够理解其中大多数的代码的意思,那我们学习易语言就会相对容易。为此下面列举易语言常见的各类语句供大家学习或编程时参考。 ㈠、赋值型语句。(也可称属性型语句)(特征:有一个“=”号将左右两边连起来) 这是我们学易语言首先会接触的一类语句。比如:标签1.标题 = “祖国,您好!” ,这句代码的意思是:标签1的标题是:“祖国,你好!”——即将标签1的标题属性值定...
十天学会易语言全集易语言菜鸟教程合集【不完全版】
易语言常用语句 (转载自.::Etp工作室::.之『教育部』) 对于初学者来说,即使代码是全中文的,也需要别人讲解才能明白其中的意思。如果我们能够理解其中大多数的代码的意思,那我们学习易语言就会相对容易。为此下面列举易语言常见的各类语句供大家学习或编程时参考。 ㈠、赋值型语句。(也可称属性型语句)(特征:有一个“=”号将左右两边连起来) 这是我们学易语言首先会接触的一类语句。比如:标签1.标题 = “祖国,您好!” ,这句代码的意思是:标签1的标题是:“祖国,你好!”——即将标签1的标题属性值定为“祖国,你好!”(所谓赋值也)。我们所见的给变量赋值就是用此类语句。赋值语句常见有以下两类: ...⑴、将某一对象的某种属性值赋给另一对象。 比如:标签1.标题=编辑框5.内容。意思即是“标签1的标题跟编辑框5中的内容一样”。比如我们在编辑框5中输入“易语言使英语盲也学会了编程”,那么在相关事件(比如单击按钮)的驱动下,标签1的标题也相应显示为“易语言使英语盲也学会了编程”。 ...⑵、将某一类型的属性值赋予某个对象。 比如:标签1.标题=“祖国,你好!”,将“祖国,你好!”赋给标签1的标题。 所赋予的属性值可以是各种类型的,比如:窗口1.可视=真,这个“真”是一个逻辑型数值。如果是文本型数值要用双引号,比如刚才的例子:标签1.标题=“祖国,你好!”即是。 又如,我们会发现这类句子:标签2.标题 = 到文本 (取小时 (取现行时间 ())) + “:” + 到文本 (取分钟 (取现行时间 ())) + “:” + 到文本 (取秒 (取现行时间 ()))。因为标签类对象只接受文本型数据,所以要把时间型数据转化为文本型,否则测试时会提示:“所接受的数据类型与传递给它的数据类型不一致”。 有时我们会发现此类句子:容器1=容器1+10,这个语句的意思是:“将容器1加10之后,再将新值传回给容器1”。 从这里可以看出,这里的“=”号跟数学中的“=”号在含义上是不同的,在数学中不可能出现b=b+2之类的表达式,而在易语言中这种表达式却是允许的,而且是经常运用的。 另外,我们又会看到这类句子:编辑框1.高度=取用户区高度 ()。“=”号的右边表示操控程序的命令,也即是说有时可以将系统命令、执行条件、项目、常量、子程序、函数、资源乃至其他对象的方法等,都可以当作是属性值赋给对象。“编辑框1.高度=取用户区高度 ()”可以理解为取得“取用户区高度 ()”的返回值(运算结果),然后将此值赋给编辑框1。 预告:以下我们将会继续介绍方法型语句、命令型语句、流程控制型语句、运算型语句、函数型语句等。 由于我也是菜鸟,所以分类可能不太严密。请高手帮我看看上面有哪些地方说错了,我自己是不太清楚的。 ㈡、非运行语句。 非运行语句包括以下几种。 ①、注释型语句。 易语言的注释型语句的格式是: ※ 注释语句 注释语句不能执行程序,只是用来解释上一行代码的意思。易语言是把注释代码隐藏起来的。显示某行代码的注释语句的方法是:选中某行代码,如果在该行代码前出现“+”号,说明该行代码有注解,点击该“+”号可以打开该行代码的注解,点击“-”可以重新隐藏注解。 上述注释型语句是易程序中固有的,我们也可以自己添加注释型语句。方法:直接改动某一备注或用右键选“修改备注”。 除了上述的备注方法外,在下方的“提示夹”里有对该行代码更详细的解释。 我们也可以把下面的草稿型语句作为备注。 ②、草稿型语句。 易语言的草稿型语句的格式是: ※草稿:程序代码 草稿型语句也不能被程序执行,有两种情况会出现草稿型语句:①、没有转为正式语句,在代码前会有“※草稿:”字样,转化为可以运行的正式代码的方法:双击该行代码使之变灰,然后按回车键(即Enter键)。②、该行代码有错误,不能转化为正式语句。处理:修改错误。 ③、测试型语句。(等等再解释) -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ ㈢、方法型语句。 我们如果看过《控件的属性、事件和方法》,就会理解方法是一个具体对象能够执行的动作。有的方法会有参数表,有的方法则不用参数,“参数”大概相当于调用这个方法的各种相关数据,包括相关对象属性值、系统命令、执行条件、项目、常量、子程序、函数乃至其他对象的方法等,都是可以调用的参数。不同的方法有不同的参数,一种方法可以有多种类型的参数。执行、调用一个对象的方法的一般格式如下: 对象名.方法名(参数1,参数2,...)。 例如需要在一个名为“购物篮”的列表框里添加一个叫“苹果”的列表项目,其语句如下: 购物篮.加入项目(苹果)。 上面这句话的意思可以理解为:“将购物篮的加入项目(方法)定为苹果”。在这个例句中,“加入项目”是“购物篮”的方法,“苹果”是其参数。其中调用列表框的“加入项目”方法的句式是: 列表框.加入项目 (欲加入项目的文本,[与欲加入项目相关的数值]) 同时我们又会发现另一类句式,比如“销毁()”,这个句式跟命令型句式很象,但其实它是下面这个句式的省略表达:窗口单元.销毁 ()。也即是说调用当前窗口单元的方法句式可省略前面的对象名前缀,它仍然是一种方法型语句。再举另一例子,“窗口单元.弹出菜单 (欲弹出的菜单,[水平显示位置],[垂直显示位置])”可以省略表达成“弹出菜单 (欲弹出的菜单,[水平显示位置],[垂直显示位置])”。 欲查看某类窗口单元具有哪些方法、这些方法的详细解释以及有哪些可用参数等,请到易语言设计界面的支持库夹中的“数据类型”分枝中寻找。譬如:想了解画板的所有方法,可以到“数据类型 -> 画板”下查看。 下面列举几个调用对象方法的例子,以便让各位菜鸟举一反三: ①、在程序中使用常量时其名称前必须加上“#”符号,所以如果调用的参数中有常量,就在常量前面加上“#”符号,比如: 列表框1.调整层次 (#底层) ②、调用系统命令作为参数。例句: 画板1.滚动写行 (数值到人民币 (100, 假)) 。 这句的意思是,调用“画板1”的“滚动写行”方法。而其欲写出的数据(参数)是“数值到人民币 (100, 假)”(这句的语法请看帮助),这是一种数值转换命令语句。 ③、调用相关对象的属性值作为方法的参数。例句: 列表框.加入项目 (编辑框1.内容,) 其他用法就不一一列举了。 (四)、命令型语句。 命令型语句跟方法型语句差不多,看看下面两者的对比就知道它们的差别了——方法型语句:对象名称.方法名称(参数,......),而命令型语句的基本格式是: 命令名称 (参数,......) “命令”的意思也跟“方法”差不多,都是一种程序运行动作指令,只不过“方法”是某个具体对象所具有的能供调用的指令,而“命令”则是整个易语言系统固有的、可以供任何程序任何对象调用的指令,所以命令名称前面没有前缀的对象名。 有时候命令的参数不是必需的(即“可选的”),比如:取随机数 ([欲取随机数的最小值],[欲取随机数的最大值]),“[]”表示该参数不是必需的。如果是这种情况,该参数可为空,比如:取随机数 ()。 那么,我们怎样调用命令呢(怎样编辑命令代码)?怎样查找易语言系统提供的命令呢?也是有两种方法:①、请到易语言设计界面的支持库夹中的“数据类型”分枝中寻找。譬如:想了解文件读写的“插入文本”命令,可以到“核心支持库-> 文件读写->插入文本”查看。点击该命令名称可以快速地在代码编辑区插入该命令的代码;②、选“帮助→易语言知识库→目录→参考手册首页→系统核心支持库”,我们会发现那里列举了易语言提供的所有命令类别,可以选中某类命令类别来查看。 通过查找,我们会发现易语言提供以下几种类型的命令可供调用:   ①、调用核心支持库命令,包括以下几大类型: 流程控制 算术运算 逻辑比较 位运算 容器操作 数组操作 环境存取 拼音处理 文本操作 字节集操作 数值转换 时间操作 磁盘操作 文件读写 系统处理 媒体播放 程序调试 其他 数据库 网络通信 比如“取现行时间 ()”是属于时间操作命令,而“数值到人民币 (100, 假)”是一种数值转换命令。   ②、调用其他程序(包括窗口程序集、子程序等)、函数、API函数等的命令。有时候我们会发现某个命令在核心支持库里找不到,那可能是调用以上的东西,比如在某一个例子中有一个“添加用户()”的命令,这个命令在系统命令列表里找不到,我们再看下面有一个子程序叫“添加用户”,原来该命令是调用“添加用户”子程序。 下面再列举一些常见的命令以便举一反三: ①、载入窗口命令。我们想通过一个窗口启动其他窗口,可用此命令,其句式是: 载入 (欲载入的窗口,[父窗口],是否采用对话框方式) 它的意思请查看有关说明。 ②、运行命令。使本程序或其他程序运行,其句式为: 运行 (欲运行的命令行,是否等待程序运行完毕,[被运行程序窗口显示方式])。 示例:运行(程序1,,假)。 ③、信息框命令 。有时我们想使系统反馈指令,比如弹出相关提示,但又找不到有“信息框”这个控件(窗口单元),原来易语言是通过命令调用信息框的(类似的还有输入框命令),其格式是: 信息框 (提示信息,按钮,[窗口标题])。 ④、关闭命令。这是一种数据库操作命令,当指定数据库操作完毕后,关闭已经被打开的指定数据库,以便清空数据变量,节约系统资源,其句式是: 关闭 ([数据库别名或名称]) ⑤、结束命令。本命令结束当前易程序的运行,参数为空(无返回值),其格式是: 结束 () 最后要说的是,我们只介绍了命令型的基本语句,我们在以后的学习中将会继续讲解命令型基本语句中的各类语句,包括流程控制语句中的条件语句、选择语句、循环语句等,还有容器操作、逻辑比较等命令语句都要继续讲解。 (五)、表格型语句(声明型语句)。 学过其他编程语言的朋友初次用易语言一般会不太适应,因为代码都是用中文表示的,呵呵。其实易语言的语法规则跟其他编程语言是差不多的,可能他们比较不习惯的是声明型语句是用表格来表达。 比如VB中声明变量的句式是“dim 变量名 as 变量类型”之类,而易语言是用表格声明容器来表示,表格所要填写的内容包括容器名(变量名)、容器类型(变量类型)等项目。用表格能更直观地了解、查找或插入所要声明的东西,例如变量、子程序、常数、dll函数、声音或图片资源等。 如果我们把易语言的表格型代码复制粘贴到记事簿等文件中,会发现表格型代码转化为文字型代码,比如对子程序的声明会变成类似下面的语句: 子程序:_按钮1_被单击 返回值类型:字节型 下面来列举一下声明型语句的几种类型和声明方法: ㈠、建立(声明)容器(变量)。需要声明(定义)的项目包括容器名、容器类型、是静态容器还是非静态容器、数组、备注等。 建立容器的方法:⑴、局部容器—在子程序下面按下“Ctrl + L” 加入一个空容器。 ⑵、窗口程序集容器—在窗口程序集下面按回车键。⑶、全局容器—在工作夹里选“程序→全局容器”,或在菜单里选“插入→新全局容器”。 ㈡、建立子程序。声明项目包括子程序名、返回值类型、参数名等。 建立子程序的三种方法:⑴、在菜单里选“插入→新子程序”,⑵、或者按“Ctrl + N”插入一个新子程序,⑶、也可以选定需要对其事件进行编程的控件对象(如按钮1)然后在属性夹里选取相关事件(如“被单击”),会同时在代码编辑区插入“按钮1.被单击”之类的子程序。 ㈢、建立dll命令(api函数)。 跟其他编程语言一样,易语言本身提供的系统命令是有限的,但在易应用程序中可以直接调用系统外部动态连接库(即 Dll 库)中的命令。在VB里声明api函数的语句类似于下面的句子: Declare Function ClipCursor& Lib "user32" (lpRect As RECT) 这句话翻译成中文是: 声明函数:ClipCursor 函数所在库:user32(函数参数名:lpRect 参数类型:RECT) 那么在易语言里,声明dll命令也包括api函数名、函数所在库、函数参数名和参数类型等项目。 建立dll命令来调用api函数的两种方法:⑴、在工作夹里选“程序→dll命令”。⑵、菜单里选“插入→新dll命令”。 ㈣、其他的表格型语句还包括建立程序集、建立新数据类型、建立常量、建立声音或图片资源等。一般来说用表格来插入以上这些东西的方法有两种:⑴、在工作夹里选“程序→”。⑵、菜单里选“插入→”。 (《易语言常用语句》全文完) 关于窗口 窗口是特殊的控件。说它特殊是因为它不出现在工具箱中(插入新窗口要选择菜单“插入 ->新窗口”)。但它却和普通控件一样,拥有自己的属性、方法和事件。(而且您还会发现,控件的通用“方法”,全都是“窗口”控件的“方法”。)也可以这么说,编辑框、按钮、标签等等这些可视控件,都是广义上的“窗口”——了解API的朋友可能理解更深刻。 每一个程序,至少有一个窗口。可见掌握它是有必要的。 本节内容:1、窗口的重要属性 2、窗口的重要方法 3、窗口的重要事件 --------------------------------------------------------------------------------   一、窗口的重要属性 窗口的重要属性有:名称、标题、边框、控制按钮、位置、图标、底色、底图、背景音乐、Esc键关闭、可否移动、随意移动、总在最前等等。   ◆名称 程序的第一个窗口必然是“_启动窗口”,它是由易语言自动生成的,它的名称必须是“_启动窗口”,编程者不可改动。通过易语言主菜单“插入->新窗口”插入的窗口,将被自动命名为“窗口1”“窗口2”……,编程者可为它们重新命名。 易语言中的所有控件,除了“_启动窗口”,编程者都可以为其重新命名。为控件取一个有意义的名称,是一个好的习惯。我个人认为,一个好的名称 = 功能 + 控件类型,如“密码校验窗口”“关于窗口”等等。另外,切不可用代码改动控件的名称! ◆标题 显示于窗口标题栏上的文字。主要是给程序的使用者看的。 ◆边框 窗口的边框有以下七种可选样式:0.无边框、1.普通可调边框、2.普通固定边框、3.窄标题可调边框、4.窄标题固定边框、5.镜框式可调边框、6.镜框式固定边框等。默认值为 2.普通固定边框。 所谓“可调”即窗口的大小可由程序使用者通过拖动鼠标调整;“固定”即固定窗口的大小,不允许程序使用者调整;“窄标题”即窗口的标题栏比常见的稍窄一些,且最左端没有图标、最右端只有;“镜框式”即窗口的边框类似生活中的镜框。` 因为窗口的边框属性默认为是 2.普通固定边框,所以其大小不可调整——不可用鼠标拖动窗口边框的方法调整,如果单击最大化/最小化按钮,或者在代码中改变窗口的宽度和高度属性,窗口的大小还是会变的。 ◆控制按钮、最大化按钮、最小化按钮 三个属性的值都只能为真或假。只有当控制按钮属性为真时,最大化按钮和最小化按钮才有意义。如果控制按钮为真,则最大化按钮和最小化按钮分别控制窗口的标题栏右端是否出现和按钮。如果控制按钮为假,则窗口连标题栏也不显示了。 默认情况下,控制按钮的值为真,而最大化按钮和最小化按钮的值为假,所以窗口的标题栏上只显示按钮(没有和)。 ◆位置 有三个可选值:0.通常 1.居中 2.最小化 3.最大化。默认值为1.居中。 0.通常——根据窗口的左边和顶边属性确定窗口在屏幕上的的显示位置,根据宽度和高度属性确定窗口的大小;1.居中——忽略窗口的左边和顶边属性,直接把窗口显示于屏幕中央(默认值);2.最小化——最小化窗口到任务栏中(相当于单击了标题栏中的按钮);3.最大化——忽略窗口的左边、顶边、宽度和高度属性,以全屏方式显示窗口(相当于单击了标题栏中的按钮)。 ◆图标 用于指定显示于窗口标题栏最左端的图标。目前只支持16*16、32*32十六色的图标。 //如果没有为整个程序设置图标(通过易语言主菜单“程序->程序配置”),则会以“_启动窗口”的图标属性指定的图标作为最后生成的可执行文件的图标——如果也没有给“_启动窗口”设置图标属性呢,就以易语言默认的图标作为程序的图标。 ◆底色 用于指定窗口的背景颜色。通常窗口是浅灰色的。当窗口有底图时,本属性无效。 ◆底图、底图方式 用于指定窗口的背景图片。如果设置了该属性——此时窗口的底色属性不再生效——还可以用底图方式属性来控制图片的显示方式。底图方式的可选值有:0.图片居左上 1.图片平铺 2.图片居中,默认值为1.图片平铺。 ◆背景音乐、播放次数 为窗口指定背景音乐,在窗口显示后即开始播放。支持WAV、MIDI格式的音乐文件。如果设置了该属性,还可以通过播放次数属性来控制音乐的播放次数:0.循环播放 1.仅播放一次 2.不播放,默认值为0.循环播放。 ◆Esc键关闭 如果其值为真,可以通过按键盘上的ESC键关闭本窗口;如果其值为假,则不可以。默认值为真。 ◆可否移动 如果其值为真,可以通过拖动窗口的标题栏来调整窗口的位置;如果其值为假,则不可以。默认值为真。 ◆随意移动 如果其值为真,可以通过拖动窗口任意位置来调整窗口的位置;如果其值为假,则不可以。默认值为假。 ◆总在最前 如果其值为真,窗口永远显示在屏幕的最前面(谁也遮不住它!)。默认值为假。 除此之外,窗口还有其它一些属性,不再一一介绍。 --------------------------------------------------------------------------------   二、窗口的重要方法 窗口的重要方法有:激活()、置托盘图标()、弹出托盘菜单()。 ◆激活() 功能:激活窗口——如果原来标题栏是灰色则变为蓝色。 语法:窗口名称.激活() 应用实例:1、_启动窗口.激活() //激活“_启动窗口” 2、窗口1.激活() //激活“窗口1” //如果在窗口未激活状态下调用本方法,将会激活窗口,并产生“被激活”事件;如果在窗口激活状态下调用本方法,不会产生“被激活”事件。例程。 ◆置托盘图标() 功能:设置本程序在系统托盘中的图标。 语法:窗口名称.置托盘图标([图标数据],[提示信息]) 参数:图标数据——指定出现于托盘中的图标,其值可为图标资源、图标字节集数据或图标文件名,如果省略本参数,表示清除已经设置了的托盘图标;提示信息——当把鼠标放到托盘图标上时,出现的提示文本(如上图)。 应用实例:1、置托盘图标 ( #图标1, “***程序”) 2、置托盘图标( 图片框1.图片,“***程序”) 3、置托盘图标 (“d:\liigo.ico”, “***程序”) 4、置托盘图标(,“***程序”) //123分别以三种方式指定图标数据(图标资源、图标字节集数据、图标文件名),1例更多用;4清除已经设置了的托盘图标。 //本方法通常在“_启动窗口”的“创建完毕”事件中以上述123例之一设置托盘图标,在“_启动窗口”的“将被销毁”事件中以4例清除已经设置了的托盘图标。即使您设置了托盘图标后,退出程序前没有清除,易语言将为您扫尾,自动为您清除托盘图标。例程。 ◆弹出托盘菜单() 功能:弹出托盘菜单。 语法:窗口名称.弹出托盘菜单(欲弹出的菜单) 应用实例:1、弹出托盘菜单(文件) //弹出“文件”菜单 //实际应用中,一般先在窗口“托盘事件”的处理程序中判断用户的操作类型(左键单击、左键双击,还是右键单击)。如果经判断用户是单击了右键(或单击了左键),则用“弹出托盘菜单()”方法弹出托盘菜单(如果经判断用户是双击了左键,一般要显示程序主窗口)。 //例如,“网络蚂蚁”的托盘图标,双击时显示主窗口,右击弹出托盘菜单,左击则没有反应。 --------------------------------------------------------------------------------   三、窗口的重要事件 创建完毕、位置被改变、尺寸被改变、将被销毁、可否被关闭、托盘事件、被激活、首次激活、被取消激活、空闲、被显示、被隐藏等等。 ◆创建完毕 事件的产生时机:当窗口及其中的所有控件均被创建后在显示之前产生此事件。注意是在“窗口显示之前”产生本事件。 //“创建完毕”事件是窗口最重要的事件,也是最常用的事件。通常在本事件的“事件处理子程序”中做一些关于本窗口的初始化工作。“_启动窗口”的“创建完毕”事件尤其重要,通常在里面做整个程序的初始化工作。 ◆位置被改变 事件的产生时机:当窗口的位置被改变时产生此事件。 ◆尺寸被改变 事件的产生时机:当窗口的尺寸被改变时产生此事件。 //这里是“位置被改变”“尺寸被改变”两事件的例程。 ◆将被销毁 事件的产生时机:当窗口被销毁之前产生此事件。 //用户单击窗口右上角的按钮,或执行到代码销毁()时,就会自动产生此事件。如果有本事件的处理代码,则先执行之,然后销毁窗口;否则直接销毁窗口。 //编程者通常在本事件的“事件处理子程序”中做一些收尾工作,例如检查有没有存盘,如果没存盘,给他个对话框问他要不要存盘。例程。 ◆可否被关闭 事件的产生时机:在窗口关闭之前产生此事件,稍早于“将被销毁”事件。 //本事件有一个逻辑型返回值。如果在在本事件的“事件处理子程序”中返回假,表示不允许关闭窗口;如果返回真或不返回值,表示允许关闭窗口。(窗口要先关闭(从屏幕上消失)再销毁(从内存中消失),所以“可否被关闭”稍早于“将被销毁”产生。) //有时侯,程序的使用者是不小心按了按钮,可能立刻就后悔了;而且有时侯程序可能因为某种原因不允许关闭窗口。这就是响应“可否被关闭”事件的时候了!例程。 ◆托盘事件 事件的产生时机:当用户用鼠标单击或双击任务栏托盘中的图标——用“置托盘图标()”方法设置——时产生本事件。 //本事件有一个整数型参数“操作类型”,其值可能是如下之一:1.#左键单击;2.#左键双击;3.#右键单击。编程者可根据此参数判断出用户的击键动作,再做相应处理——比如是弹出菜单还是显示窗口等。例如,“网络蚂蚁”的托盘图标,双击时显示主窗口,右击弹出托盘菜单,左击则没有反应。例程。 ◆被激活、首次激活、被取消激活 事件的产生时机:当窗口被激活、首次激活、被取消激活时产生本事件。 //窗口的标题栏由灰色变为蓝色时,表示窗口被激活;由蓝色变为灰色时,表示被取消激活;首次激活即窗口被显示后第一次激活。首次激活事件在窗口被销毁之前只会产生一次,而被激活、被取消激活事件可能产生很多次。例程。 ◆空闲 事件的产生时机:当系统(CPU或操作系统或程序)空闲时产生本事件。 //本事件有一个整数型参数“已空闲时间”,用于告知编程者事件产生时,系统已经进入空闲状态的时间,单位为毫秒。用户程序在空闲状态下所进行的大工作量操作最好等到此值较大时进行。 //本事件有一个逻辑型的返回值。如果事件处理子程序返回假或者不返回值,在此次空闲期间系统将不再产生空闲事件(可以降低 CPU 占用率)。如果返回真,系统将继续产生空闲事件。 //“空闲”即系统(CPU或操作系统或程序)“有空了、清闲了”。通常在空闲事件的“事件处理子程序”中做一些后台处理工作。本事件不常用。 ◆被显示、被隐藏 事件的产生时机:当窗口被显示、被隐藏(比如令其可视属性为假)时产生本事件。 //被显示事件在窗口被销毁之前至少产生一次;被隐藏事件可能一次也不产生。例程。 易语言时尚编程100例 设立本100例教程的目的:把易语言现有的例程都学习一遍,以达到共同脱菜的目的。 ★、例程来源。 ㈠、例程名称:计算编辑框的输入内容的长度(暂名) ㈡、下载地址: ㈢、作者:(暂不详) ★、例程详解。 不知程序作者是谁?该程序作者或提问者为什么要做该例程?有什么作用?有知道者请跟贴。我在编辑时修改。 该例程只有一个子程序,该子程序只有一行执行代码,程序如下: 子程序:_编辑框1_内容被改变 标签1.标题 = 到文本 (取文本长度 (编辑框1.内容)) 编程大概思路: ㈠、确定用什么样的子程序,包括确定用什么控件来发送指令(事件驱动承担者),什么控件用来传递指令,什么控件用来执行指令,什么控件用来反馈指令。 ⑴、确定发送指令控件。比如用按钮作为事件驱动(发送指令)承担者,则程序大概是: 子程序:_按钮1_被单击 标签1.标题 = 到文本 (取文本长度 (编辑框1.内容)) 当然,如果想使编辑框在输入文本时即时显示文本长度,就要用到编辑框本身的事件,如本程序的第一种子程序,即子程序:_编辑框1_内容被改变,通过在编辑框输入信息来发送指令。 ⑵、确定传递、执行或反馈指令控件。如果我们用信息框来执行或反馈指令,则程序大概类似下面为好: 子程序:_按钮1_被单击 信息框 (“你输入的文本长度是:” + 到文本 (取文本长度 (编辑框1.内容)), 0, ) 思考:如果想做到按“enter”时就弹出该信息框,应怎样做? ㈡、“计算编辑框的输入内容的长度”也即是确定编辑框的某个属性值,那么我们就重点查找编辑框的有关属性、方法和事件及易语言系统有关的命令,看有哪些在本例程中用得上。还是比较难找呢。 -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ 由于还没有找到新空间存放例程,所以《菜鸟每日一课》和其他课程暂停,代之以一门新课程:《易语言时尚编程100例》,专门学习研究别人的程序。由于本人也是菜鸟,所以一般是照搬其中的代码,保持原汁原味,其中是否有错,由高手来跟贴完善评改吧。 ★、例程来源。 ㈠、例程名称:幼儿算术软件 ㈡、下载地址: http://eyuyan.com/non-cgi/usr/1/1_3244.e ㈢、作者:bklbklbk ★、例程详解。 该程序近日由作者上传到论坛,程序明白易懂,主要功能代码也不多,所以我们现在就以它为研究学习对象。 该程序由三个窗口组成,其中_启动窗口只是该程序的封面,窗口2只是说明文件,核心功能都在窗口1中实现,所以这里只讲解窗口1,窗口1中又只有“出题”和“计算结果”两个重要子程序,其他的子程序是辅助的。 ㈠、先讲讲怎样实现随机出题。 在随机出题中作者要做两件事:⑴、用单选框设置有三个出题计算数的范围:1到10;1到20;1到100,分别代表三种不同的学习程度。⑵、按三种计算数范围随机出题。下面看程序是怎样做的: 子程序:_按钮1_被单击 置随机数种子 () ※一般过程是先置随机数种子再随机取数 编辑框1.内容 = 到文本 (取整 (取随机数 (最小号码, 最大号码))) ※随机选择第一个计算数 编辑框2.内容 = 到文本 (取整 (取随机数 (最小号码, 最大号码))) ※随机选择第一个计算数。取整数的随机数,“取整”是算术运算命令 编辑框3.内容 = “” ※清空“编辑框3”以便你把结果填上去 标签2.标题 = “” ※清空“标签2”(提示正确与否)以方便指出对还是错 编辑框3.获取焦点 () ※使“编辑框3”获取焦点光标以便你输入计算结果 如果 (单选框1.选中 = 真) 最大号码 = 10 ※当选择最大数为10的计算范围时 否则 如果 (单选框2.选中 = 真) 最大号码 = 20 否则 如果 (单选框3.选中 = 真) 最大号码 = 100 否则 如果结束 如果结束 如果结束 ㈡、再讲讲怎样评价你的计算结果。 该子程序分别设置了加、减、乘、除四种运算情况,我们以“减法”为例说明: 如果 (标签3.标题 = “-”) ※当选择为减法运算时。选择不同的运算方式,该标签的标题就发生相应变化 如果 (变量1 > 变量2) ※当减数大于被减数时 如果 (变量3 = 变量1 - 变量2) ※当运算结果正确时 标签7.可视 = 真 ※该标签的标题是“正确” 标签2.标题 = “恭喜你!做对了” 标签5.标题 = 到文本 (变量4 + 1) ※显示正确的次数,变量4存放的是正确次数,为静态短整数型容器,静态容器能将正确次数保留到下次运算,数值型数据的默认值为0 变量4 = 变量4 + 1 ※给变量4赋值 否则 ※当运算结果错误时 标签2.标题 = “错啦!重做一遍” 标签8.可视 = 真 ※该标签的标题是“错误” 标签6.标题 = 到文本 (变量5 + 1) 变量5 = 变量5 + 1 如果结束 变量6 = 变量4 + 变量5 ※赋值于变量6 ,表示运算次数的总和,即正确次数与错误次数之和 标签13.可视 = 真 ※该标签的标题是“共计” 标签12.标题 = 到文本 (变量4 + 变量5) 标签9.标题 = 到文本 (取整 (变量4 ÷ 变量6 × 100)) 标签11.可视 = 真 ※该标签的标题是“正确率” 标签10.可视 = 真 ※该标签的标题是“ %” 否则 标签2.标题 = “不能相减” ※当减数小于被减数时 如果结束 上面是以减法的实现为例对该软件功能实现作一说明,整个窗口1的程序如下: 窗口程序集:窗口程序集2 程序集容器:最小号码 数据类型:短整数型 程序集容器:最大号码 数据类型:短整数型 ------------------------------ 子程序:_按钮2_被单击 局部容器:变量1 数据类型:短整数型 局部容器:变量2 数据类型:短整数型 局部容器:变量3 数据类型:短整数型 局部容器:变量4 数据类型:短整数型 <静态> 局部容器:变量5 数据类型:短整数型 <静态> 局部容器:变量6 数据类型:整数型 变量1 = 文本到数值 (编辑框1.内容) 变量2 = 文本到数值 (编辑框2.内容) 变量3 = 文本到数值 (编辑框3.内容) 编辑框3.获取焦点 () 如果 (标签3.标题 = “+”) 如果 (变量3 = 变量1 + 变量2) 标签7.可视 = 真 标签2.标题 = “恭喜你!做对了” 标签5.标题 = 到文本 (变量4 + 1) 变量4 = 变量4 + 1 否则 标签2.标题 = “错啦!重算一遍” 标签8.可视 = 真 标签6.标题 = 到文本 (变量5 + 1) 变量5 = 变量5 + 1 如果结束 变量6 = 变量4 + 变量5 标签13.可视 = 真 标签12.标题 = 到文本 (变量4 + 变量5) 标签9.标题 = 到文本 (取整 (变量4 ÷ 变量6 × 100)) 标签11.可视 = 真 标签10.可视 = 真 否则 如果 (标签3.标题 = “-”) 如果 (变量1 > 变量2) 如果 (变量3 = 变量1 - 变量2) 标签7.可视 = 真 标签2.标题 = “恭喜你!做对了” 标签5.标题 = 到文本 (变量4 + 1) 变量4 = 变量4 + 1 否则 标签2.标题 = “错啦!重做一遍” 标签8.可视 = 真 标签6.标题 = 到文本 (变量5 + 1) 变量5 = 变量5 + 1 如果结束 变量6 = 变量4 + 变量5 标签13.可视 = 真 标签12.标题 = 到文本 (变量4 + 变量5) 标签9.标题 = 到文本 (取整 (变量4 ÷ 变量6 × 100)) 标签11.可视 = 真 标签10.可视 = 真 否则 标签2.标题 = “不能相减” 如果结束 否则 如果 (标签3.标题 = “×”) 如果 (变量3 = 变量1 × 变量2) 标签7.可视 = 真 标签2.标题 = “恭喜你!做对了” 标签5.标题 = 到文本 (变量4 + 1) 变量4 = 变量4 + 1 否则 标签2.标题 = “错啦!重做一遍” 标签8.可视 = 真 标签6.标题 = 到文本 (变量5 + 1) 变量5 = 变量5 + 1 如果结束 变量6 = 变量4 + 变量5 标签13.可视 = 真 标签12.标题 = 到文本 (变量4 + 变量5) 标签9.标题 = 到文本 (取整 (变量4 ÷ 变量6 × 100)) 标签11.可视 = 真 标签10.可视 = 真 否则 如果 (标签3.标题 = “÷”) 如果 (变量2 ≠ 0) 如果 (变量3 = 变量1 ÷ 变量2) 标签7.可视 = 真 标签2.标题 = “恭喜你!做对了” 标签5.标题 = 到文本 (变量4 + 1) 变量4 = 变量4 + 1 否则 信息框 (“错啦!重做一遍”, #错误图标, “错误”) 标签8.可视 = 真 标签6.标题 = 到文本 (变量5 + 1) 变量5 = 变量5 + 1 如果结束 变量6 = 变量4 + 变量5 标签13.可视 = 真 标签12.标题 = 到文本 (变量4 + 变量5) 标签9.标题 = 到文本 (取整 (变量4 ÷ 变量6 × 100)) 标签11.可视 = 真 标签10.可视 = 真 否则 信息框 (“除数不能为0”, #错误图标, “错误”) 如果结束 否则 如果结束 如果结束 如果结束 如果结束 ------------------------------ 子程序:_按钮7_被单击 销毁 () ------------------------------ 子程序:_按钮3_被单击 标签3.标题 = “+” 标签1.标题 = “加法运算” 编辑框3.获取焦点 () ------------------------------ 子程序:_按钮4_被单击 标签3.标题 = “-” 标签1.标题 = “减法运算” 编辑框3.获取焦点 () ------------------------------ 子程序:_按钮5_被单击 标签3.标题 = “×” 标签1.标题 = “乘法运算” 编辑框3.获取焦点 () ------------------------------ 子程序:_按钮6_被单击 标签3.标题 = “÷” 标签1.标题 = “除法运算” 编辑框3.获取焦点 () ------------------------------ 子程序:_按钮1_被单击 置随机数种子 () 编辑框1.内容 = 到文本 (取整 (取随机数 (最小号码, 最大号码))) 编辑框2.内容 = 到文本 (取整 (取随机数 (最小号码, 最大号码))) 编辑框3.内容 = “” 标签2.标题 = “” 编辑框3.获取焦点 () 如果 (单选框1.选中 = 真) 最大号码 = 10 否则 如果 (单选框2.选中 = 真) 最大号码 = 20 否则 如果 (单选框3.选中 = 真) 最大号码 = 100 否则 如果结束 如果结束 如果结束 ------------------------------ 子程序:_窗口1_创建完毕 编辑框1.内容 = “” 编辑框2.内容 = “” 编辑框3.内容 = “” 单选框1.选中 = 真 最小号码 = 1 编辑框3.获取焦点 () ------------------------------ 子程序:_按钮8_被单击 载入 (窗口2, , 假) 窗口1.可视 = 假 -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ [这个贴子最后由bb88在 2002/04/26 08:32pm 编辑] 我们进行网络通讯编程常常要获取自己或对方的网络地址(IP),比如通过IP连接进行网络对战游戏,或通过IP连接的聊天室,都要知道主机方(建立游戏或聊天室的一方)的IP才能连接,就象你给对方打电话要知道对方的电话号码才能通话一样。假如你是主机方,你先要告诉对方你的IP,对方才能进入你的主机。怎样即时显示自己的IP而免去查找的麻烦?看看下面的解答。 要实现显示自己IP的功能只需一个子程序,程序示例如下: 子程序:__启动窗口_创建完毕 标签1.标题 = “欢迎你登陆bb88的IP获取教程,你的主机名是:” + #换行符 + 到文本 (取主机名 ()) + #换行符 + #换行符 + “你的IP是:” + #换行符 + 到文本 (转换为IP地址 (取主机名 ())) 解析:⑴、画一个标签用来显示你的主机名及IP地址。用载入启动窗口作为该子程序的驱动事件(_启动窗口_创建完毕)。 ⑵、易语言关于网络通讯的命令只有四个:取主机名、通信测试、转换为主机名、转换为IP地址,本例程用到其中两个命令。 ⑶、取主机名——即返回本机的主机名,用作在网络通讯中标志本机地址。语法: 取主机名 ()。该命令参数为空,若有参数,可能会类似这样:“取主机名(主机)”或“取主机名 (202.103.113.8)”,即该命令处理的数据对象是某个主机,用“取主机名”的方式进行处理。 ⑷、转换为IP地址——即将指定的主机名转换为其 IP 地址。如果失败返回空文本。语法:转换为IP地址 (欲转换主机名)。我们要先获得你的主机名才能转换,所以该语句为:转换为IP地址 (取主机名 ())。该命令所处理的数据对象(参数)为“所取得的主机名”(即“取主机名 ()”的返回值),用“转换为IP地址”方式处理该参数。 思考题:⑴、假设你已经知道你的主机名叫“huhuhu”,为什么用“标签1.标题 = 到文本 (转换为IP地址 (到文本 (huhuhu)))”却不能获得你的IP地址?欢迎高手菜鸟作答。 ⑵、为什么“取主机名 ()”这个命令的参数为空? -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ [这个贴子最后由bb88在 2002/04/27 07:09pm 编辑] ★、例程来源。 ㈠、例程名称:小小闹钟 ㈡、下载地址: ㈢、作者:(请作者跟贴说明) ㈣、主页: ★、例程详解。 ㈠、主要功能。⑴、设定闹钟铃响时间。⑵、显示剩余时间(现时间离闹钟铃响时间的间隔)。⑶、到设定的时间时闹钟铃响。 ㈡、功能实现。 ⑴、设定闹钟铃响时间。分别建立时、分、秒和开始这四个窗口程序集容器,分别用来存放设定闹钟铃响时间中的时、分、秒和开始计时的状态。用下面的子程序来设定闹钟铃响时间(即分别给三个变量“时”、“分”、“秒”赋值)。 子程序:_时编辑框_内容被改变 时 = 文本到数值 (时编辑框.内容) ------------------------------ 子程序:_分编辑框_内容被改变 分 = 文本到数值 (分编辑框.内容) ------------------------------ 子程序:_秒编辑框_内容被改变 秒 = 文本到数值 (秒编辑框.内容) ⑵、显示剩余时间。 子程序:_时钟1_周期事件 如果真 (开始) 开始计时 () 剩余时间显示标签.标题 = 到文本 ((取时间部分 (取现行时间 (), #小时) - 时) × -1) + “时” + 到文本 ((取时间部分 (取现行时间 (), #分钟) - 分) × -1) + “分” + 到文本 ((取时间部分 (取现行时间 (), #秒) - 秒) × -1) + “秒” 如果真结束 ※变量“开始”表示按下了“确认按钮”(确定闹钟铃响时间和开始计时)。“如果真 (开始)”的意义等同于“如果真 (开始=真)”。 ※显示剩余时间(现时间离闹钟铃响时间的间隔)好象这样也行: 剩余时间显示标签.标题 = 到文本 (时 - 取时间部分 (取现行时间 (), #小时)) + “时” + 到文本 (分 - 取时间部分 (取现行时间 (), #分钟)) + “分” + 到文本 (秒 - 取时间部分 (取现行时间 (), #秒)) + “秒” ※我的数学基础很差,不知以上代码行不?望原作者给予解答。 ⑶、到设定的时间时闹钟铃响。 子程序:_确认按钮_被单击 如果 (时 ≤ 60 且 分 ≤ 60 且 秒 ≤ 60) 如果 (时 ≥ 取时间部分 (取现行时间 (), #小时)) 时编辑框.禁止 = 真 分编辑框.禁止 = 真 秒编辑框.禁止 = 真 确认按钮.禁止 = 真 ※以上使确定闹钟铃响时间的编辑框不可以输入 开始计时 () ※调用“开始计时”子程序 开始 = 真 ※表示按下了“确认”按钮,使系统开始计算剩余时间 否则 信息框 (“错误!输入时间小于当前时间!”, #确认钮, “错误!”) ※排除闹钟铃响的过期时间 如果结束 否则 信息框 (“请确认输入时间不得大于60!”, #确认钮, “错误!”) ※排除输入错误的时间 如果结束 ------------------------------ 子程序:开始计时 如果真 (取时间部分 (取现行时间 (), #小时) ≥ 时) 如果真 (取时间部分 (取现行时间 (), #分钟) ≥ 分) 如果真 (取时间部分 (取现行时间 (), #秒) ≥ 秒) 时编辑框.禁止 = 假 分编辑框.禁止 = 假 秒编辑框.禁止 = 假 确认按钮.禁止 = 假 开始 = 假 _启动窗口.位置 = 1 _启动窗口.总在最前 = 假 鸣叫 () 信息框 (“请注意!您所定的时间到了!”, #确认钮, “时间到了!”) 如果真结束 如果真结束 如果真结束 返回 () ※以上“开始计时”设定当时间到期时闹钟响铃,通过调用“鸣叫”系统处理命令(通过计算机媒体设备或者喇叭发出一个声音)来表示,或者也可以通过调用一个模拟铃声的声音资源来表示。 ㈢、该小小闹钟的完整源程序如下: 窗口程序集:窗口程序集1 程序集容器:时 数据类型:整数型 程序集容器:分 数据类型:整数型 程序集容器:秒 数据类型:整数型 程序集容器:开始 数据类型:逻辑型 ------------------------------ 子程序:_时钟1_周期事件 当前时间标签.标题 = “当前时间为:” + 时间到文本 (取现行时间 (), ) 如果真 (开始) 开始计时 () 剩余时间显示标签.标题 = 到文本 (时 - 取时间部分 (取现行时间 (), #小时)) + “时” + 到文本 (分 - 取时间部分 (取现行时间 (), #分钟)) + “分” + 到文本 (秒 - 取时间部分 (取现行时间 (), #秒)) + “秒” 如果真结束 ------------------------------ 子程序:_时编辑框_内容被改变 时 = 文本到数值 (时编辑框.内容) ------------------------------ 子程序:_分编辑框_内容被改变 分 = 文本到数值 (分编辑框.内容) ------------------------------ 子程序:_秒编辑框_内容被改变 秒 = 文本到数值 (秒编辑框.内容) ------------------------------ 子程序:_确认按钮_被单击 如果 (时 ≤ 60 且 分 ≤ 60 且 秒 ≤ 60) 如果 (时 ≥ 取时间部分 (取现行时间 (), #小时)) 时编辑框.禁止 = 真 分编辑框.禁止 = 真 秒编辑框.禁止 = 真 确认按钮.禁止 = 真 开始计时 () 开始 = 真 否则 信息框 (“错误!输入时间小于当前时间!”, #确认钮, “错误!”) 如果结束 否则 信息框 (“请确认输入时间不得大于60!”, #确认钮, “错误!”) 如果结束 ------------------------------ 子程序:_更改按钮_被单击 确认按钮.禁止 = 假 时编辑框.禁止 = 假 分编辑框.禁止 = 假 秒编辑框.禁止 = 假 _启动窗口.位置 = 1 _启动窗口.总在最前 = 假 ------------------------------ 子程序:_退出按钮_被单击 结束 () ------------------------------ 子程序:开始计时 如果真 (取时间部分 (取现行时间 (), #小时) ≥ 时) 如果真 (取时间部分 (取现行时间 (), #分钟) ≥ 分) 如果真 (取时间部分 (取现行时间 (), #秒) ≥ 秒) 时编辑框.禁止 = 假 分编辑框.禁止 = 假 秒编辑框.禁止 = 假 确认按钮.禁止 = 假 开始 = 假 _启动窗口.位置 = 1 _启动窗口.总在最前 = 假 鸣叫 () 信息框 (“请注意!您所定的时间到了!”, #确认钮, “时间到了!”) 如果真结束 如果真结束 如果真结束 返回 () 基础解答 [问题解答]什么叫赋值? 解答一:这...学易这么久,还真没认真考虑过这个问题,好像是把一个常量定义给一个变量吧,就像方程式中的 令X=10 ... 解答二:“属性”即事物的性质,“属性值”即事物性质的具体表现,比如“颜色”是事物的性质(即“属性”),而“红色”是“颜色”这个属性中的一种属性值,我们知道,“红色”是系统中的一种常量值,它的颜色属性值是“255”,也可以表达为“#红色”。确定事物的具体性质即是确定事物的属性值(赋值),比如给你女朋友送一套红色的衣服,那么你女朋友这件衣服的属性值是“红色”。衣服.颜色=红色 ,即将衣服的颜色的属性值定(赋)为红色,这个行为就叫“赋值”,是“赋予属性值”的简称。 或者可以这样理解:用代码来设置对象的属性,就称为“赋值”。 解答三:呵,其实就是把一个东西放进一个空的箱子里的过程。 要理解什么叫“返回值”,要先从对象的方法或系统的命令的含义着手理解。所谓对象的方法或系统的命令可以理解为对所提供的相关数据(即参数:提供给系统处理的一种变量)进行的处理(运算)。 不同的方法或命令有不同的处理方式,比如“载入 (窗口1,,假)”,是对“窗口1”这个已赋值参数用载入的方式进行处理,又如“相加 (被加数,加数)”是对“被加数”和“加数”两个数据用相加的运算方式处理。 有处理结果或运算结果(即能返回一个值)的系统命令我们就称为函数。“返回”即“处理”,“返回值”即对函数参数的处理结果。 系统命令也可以称为系统函数,因为它有返回值。比如信息框函数的返回值有以下几个常量值: 0、#确认钮; 1、#取消钮; 2、#放弃钮; 3、#重试钮; 4、#忽略钮; 5、#是钮; 6、#否钮 比如当我们按下“确认钮”时,信息框函数值为0;若按下“取消钮”,信息框函数值为1......依此类推。 谈谈返回值   Y=f(X1,X2,...Xn)表达了一个函数关系,如果将X1,X2,...Xn看作参数,f看作过程或算法,那么Y就是结果或是返回值。任何一个过程都有它的结果,函数、子程序、以及事件都是一个过程,理论上都有其返回值,而返回值又是另一个过程的判据。     最有意思的是返回值的传送常常困扰着我们,前不久有个易友提出如何控制小数点问题,是西风帮助解决了,最近我也遇到了类似的问题,最后归纳起来:都是返回值问题。即使已有一知半解,还常常被其击倒。   问题如下:道具:一个窗口,一个编辑框,一个按钮 子程序:_编辑框1_按下某键 返回值类型:逻辑型 参数:键代码 数据类型:整数型 参数:功能键状态 数据类型:整数型 局部容器:容器1 数据类型:整数型 如果真 (键代码 = 32) 编辑框1.内容 = “” 编辑框1.可视 = 假 计次循环首 (1280, 容器1) 编辑框1.加入文本 (“:” + 到文本 (容器1) + “:” + #换行符) 计次循环尾 () 编辑框1.可视 = 真 编辑框1.获取焦点 () 编辑框1.起始选择位置 = 3 如果真结束   想让光标处于:1:之后,可怎么运行,光标都在第四个位置,以为是BUG来了,其实不然,易语言的BUG不是那么容易被你发现的。究竟是怎么回事,换另一种方法试试:改由_启动窗口_按下某键,后面的一切照旧,问题没有了,这就说明不是BUG。仔细地思考忽然想到键代码=32不是空格键吗,空格键下按后光标是一定要向右走一步的(一个半角字符的位置),就是说光标原来已在“:1:”后,又由于空格键操作的原因,向右多移了一个字符的位置。那为什么编辑框_按下某键会有这个结果呢,是因为空格键操作的结果传递给窗口没有什么影响,而传递给编辑框(当然是获得了焦点的编辑框)就大不一样了。简而言之就是空格键的操作结果影响了光标的移动,要知道,事件驱动的结果只有返回给编辑框,光标才会做出响应,如果不让其返回问题不就解决了吗!于是就在程序的最后加上一句“返回(假)”。 再如:用鼠标点击编辑框后,选中编辑框中所有的文本,程序如下 子程序:_编辑框1_鼠标左键被按下 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 编辑框1.被选择字符数 = -1 编辑框1.起始选择位置 = 0 返回 (假)   如果不返回假就怎么也不会选中框内的所有字符,因为本来是执行了选中所有字符的命令的,但鼠标左键按下后,编辑框又获得了焦点,就使选中后的光珊又被去掉了,变成了光标在闪动的结果,而返回假就去掉了这后一步的动作,实现了选中所有字符的目标。   由此回想起小数点问题也是某键按下的驱动事件,当你判断出前面已经有小数点存在的时候,小数点键码再次按下时返回为假就可以了。影响的过程总是先有事件后有响应,事件之后切断消息的传递就可以了。   在面向对象的程序结构中,总是一个事件连接着另一个事件,每一个事件都会有一个结果,这个结果有时也会产生负作用,当你利用一个事件的某一方面时,却忽略了另一个方面,最终受另一个方面的困扰,你应经常要想到这个事件会产生什么后果,对你的预定目标有没有影响,多一个想法也许会给你带来福音! 变量(容器)的知识 谈谈容器   容器在程序中是最重要的角色,具有载数和传数的功能,对容器赋值正是对内存中某一个地址单元赋值。容器1,容器2,就是两个不同的地址单元,唯一不透明的地方就是不知道是哪一个地址,这正是高级语言的特色,可以脱离具体的硬件进行操作。   容器的工作对象具有分工:有的可以载数值,有的可以载文本,有的可以载字节集等。   容器的工作范围也有划分:如全局容器,就象长途汽车,是跑长途的,在整个程序中都适用;程序集容器就是跑中途的,只能在一定的范围内运行,通常属于某一个窗口;而子程序容器就是跑短途的,只能在更小的范围内运行,通常属于某一个窗口单元,如跟着“按钮”打工。     原则上全局容器和局部容器在命名上最好不重名,不过易语言是支持重名的,要在命名时进行声明。如果在子程序中命名一个容器和程序集在取名上犯冲,如大家都叫容器1,就要及时声明这是属于该子程序的,否则就会出现混乱。同一程序集下不同的子程序可以使用同名容器,不同的程序集下也可以使用同名容器,因为这里隔着一道“墙”,它们相互之间是没有影响的,或者叫:隔席不说话。     每一个容器在投入工作前都有一个初始状态,一定要弄清楚这一点:全局容器只在打开运行程序时有一个初始的过程,程序集容器会在打开某一窗口时有一个初始过程,子程序容器只有在操作某一个对应的窗口单元时有一个初始过程,数值容器在初始化时其值为0,文本容器在初始化时其值为空等等。   容器有静态和动态之分,这是一个重要的概念,一个容器在程序操作过程中只有一次初始化以后不再经过初始化就具有静态特征,如全局容器,可以用来在窗口之间传递数据。程序集容器就只能在同一窗口中对不同的单元操作传递数据。经常有人问如何在两个窗口之间赋值就是指的这一点。静态是相对的,全局容器相对于子窗口是静态的,程序集容器相对于同一窗口单元也是静态的,一个子程序中的容器要想具有静态特色就要进行设置。如:在一个子程序中执行 “容器1=容器1+1 ”,当再一次进入该子程序时,通常容器1=0,如需要保留上一次的数值即带着上一次的状态进入,就要设其为静态。与些相反,在子程序中使用程序集容器时,如再一次进入子程序,只要不出该程序集,容器都有保留状态的特色,而在有一种情况下我们却不需要它这个保留,如在一个子程序中调用另一个子程序,所设定的容器将在这两个子程序中都发生作用,肯定是要使用程序集容器,而当我们每一次都需要有一个初始状态时,就只有令:容器1=0。   以上这两种情况相反的使用,常常让初学的人摸不着头脑。 进一步地看,画板,编辑框,窗口标题等都是更高层次的容器,因为都具有赋值功能,可以向其中添加文本,图片等,不过这个大容器是有很多属性的,作为容器来理解,才会将一个可执行文件作为图片资源来处理。 编写一个大型程序一定要进行容器的命名上的管理,最好用一张纸进行纪录,以避免重复使用造成不应有的麻烦。 -------------------------------------------------------------------------------- 易中的“容器”即其它语言的“变量”。 变量主要掌握以下几个概念: 一、存在性   变量在当前是否存在。 二、可用性   变量在当前是否可引用。 三、局部性   就是变量以上两个特性的有效范围。 注意: 1、可用一定存在,但存在并不一定可用。如:静态变量。 2、局部性表明程序可按一定范围从大到小划分,也可以说一个程序是由许多小范围组成的一个整体。 ㈡、变量(容器)的数据类型 在易语言中提供了多种数据类型,以供用户在编写代码时使用。一般常用的是:数值型、文本型(字符型)、逻辑型(布尔型)和对象型。其实各种类型各有所长,我们在编程时应根据具体需要来决定所定义的变量类型。一般来说数值型变量存放数字,文本型变量存放文本。 变量所占用的内存大小根据变量的数据类型而定,依照变量中保存数据的特性,可概括分为: ┌—字节型变量 │ 整数型变量 │ 短整数型变量          ┌—数值型变量—│ 长整数型变量                  │ │ 小数型变量          │ └—双精度小数型变量          │ 文本型变量                │ 逻辑型变量(布尔型变量)   变量(容器)—│ 日期时间型变量 │ 字节集型变量 │ 子程序指针型变量 │          │ ┌—窗口          └—对象型变量 —│ 编辑框 │ 图片框                   │ ...... │ 菜单 └—字体 以下是一些变量的声明(建立容器)与初值赋值实例: ⑴、数值型变量。 数值型变量依字节的长度分为字节型、整数型、小数型等等。数值型变量应用如: 容器1=3.1456289 ⑵、文本型变量。 所谓文本(字符串)是指由字母、数字、汉字或标点符号所组成的一串字符集合。文本型数据必须存放在文本型变量中,而表示文本时,必须在文本的前后使用双引号(“)。 初学者常常会忘记在文本前后加双引号,就会出现错误。比如你建立一个叫“文本a”的文本型变量,如果你这样赋值的话:文本a = 2.147483647568,运行时会出现错误提示: “错误(20026): 现行容器或参数的数据类型与传递给它的数据的类型不一致”。 文本型变量的正确写入方法如下面的例子: 文本a = “2.147483647568” 文本1=“abc” 文本2=“新年快乐!” 文本3=“祖国,您好!” 在文本中可以连接特殊字符,如换行符、空格等。下面是使用特殊字符的例子: 内容1=“你选择的数值是:”+ 到文本(数值1 ) + #换行符 +“你要说的话是:”+ #左引号 +“祖国,您好!” + #右引号 +“。” 上面语句中的“+”号在易语言中是一个连接符号,即将相同类型的数据连接起来。其中的“数值1”是数值型变量,为了使赋值数据与被赋值变量之间的类型一致,就要把上例的“数值1”转化为文本型,否则就会有出错提示。 在易语言中,文本中的空格符用“ ”之类表示。 ⑶、逻辑型变量。 逻辑型数据是一种只有“真”和“假”两种状态的数据类型,这种数据类型通常使用与逻辑判断运算中,例如下例中的“清除”是逻辑型变量: 如果(清除=真) 则 清除=假 文本=“0” 否则 清除=真 结束如果 ⑷、对象型变量。 对象可以说是一群属性的集合,每一个属性都有一个名称(name)和数值(value),属性的数据类型可以是前面介绍的任何一种。 由于对象型变量比较特殊,我们在界面上画上一个控件就表示该控件的各种属性变量已被建立,所以不用再另外建立容器来存放这种变量。 表示对象的某一属性时使用点“.”符号,例如: 编辑框1.内容=标签1.标题 编辑框2.内容=“100” 编辑框3.左边=100 窗口1.可视=真 哈哈哈=按钮1 ※先将“哈哈哈”定义为按钮型变量(对象型变量),再赋值为“按钮1”。 从对象的各种属性值事先未知这一点来说,对象的属性就是一种变量,属性值也即是变量值。 -------------------------------------------------------------------------------- ㈢、变量的声明和赋值 ★、变量的声明(容器的建立) 为了使用变量,需要为变量指定一个名称和规定该变量所保存的数据类型,有时要确认是否为静态容器、是否数组容器,以便将变量事先通知程序,这项工作称为声明变量,又称建立容器。易语言强制必须声明变量后才能使用变量(对象型变量除外)。如果没有经过声明就使用该变量,比如:容器1=“100”(容器1还没有被建立),那么使用该容器的代码行就会无法确认, 并出现“编译错误”提示框: “找不到指定的容器名称:容器1” ⑴、那么怎样建立容器呢? 分几种以下情况: ①、建立局部容器(又称子程序容器,即局部变量)。 第一种方法:在代码编辑区选中子程序,再选菜单“插入→新局部容器”,就会在该子程序下出现一个空的容器表格,在“容器名”一栏填上你需要的任意名称,再填上数据类型,其余的“静态”、“数组”、“备注”等根据情况而定。容器的表格内容相当于VB中的“Dim 变量名 As 变量类型”这个语句。 第二种方法:在代码编辑区选中子程序,按下 Ctrl + L 加入一个空容器,再添加容器内容。 ②、建立程序集容器。 在代码编辑区选中程序集,然后按[Enter]键。 ③、建立全局容器。 选菜单“插入→新全局容器”,或点击“工作夹→程序子夹→全局容器”。 ⑵、容器的命名规则。 我们既可以给变量起一个任意的名称,也可以在变量中存放任何想要存放的东西。但是如果用户在一个名为“电话”的变量中存放一个人的生日代码,显然是不明智的。 这里我们提醒同学们,为了方便起见,变量名应该代表存放在其中的数据信息。比如说,变量名“电话”一般用来存放电话号码,变量名“生意”应该存放做生意的名称等。 在给变量命名时必须遵守一些规则,否则易语言系统会大发脾气,不确认你的命名,并教训你 ,如: 错误⑴:指定名称“容器()”无效,名称首字符必须为全半角字母或汉字,其他字符必须为全半角字母、全半角数字或汉字 ★、容器的赋值 ⑴、赋值的含义。 当声明了一个变量后,就必须对它进行赋值,因为声明变量时只是建立了一个空的容器,还要向里面添加东西。容器的赋值就象前面描述的是用“=”号来实现的,变量名放在“=”号的左边,表达式(所赋予的具体数据值)放在右边,其目的是将表达式的结果(返回值)赋给左边的变量。 赋值就是为了方便而把一些在程序中经常用到的数据放到一个或多个空的容器(变量)中的过程,这个过程就叫赋值。初学者可能还不太明白这个“赋值”的含义,那么下面再变换几个角度来理解。 比如“颜色”是变量,而“红色”是“颜色”这个变量中的一种具体值,我们知道,“红色”是系统中的一种常量值,它的颜色值是“255”,也可以表达为“#红色”。确定变量的具体数值即是赋值,比如给你女朋友送一套红色的衣服,那么你女朋友这件衣服的颜色值是“红色”,衣服.颜色=#红色 ,即将衣服的颜色值定(赋)为红色,这个行为就叫“赋值”。 或者可以这样理解:用代码来设置变量值(包括对象属性值),就称为“赋值”。 就像你原来读小学,现在读中学了,你这个人“学历”的变量值就由“小学”被赋为“中学”了。 ⑵、容器的初始赋值(初始化)。 在易语言中,所有类型变量在程序被启动运行前,所有非静态局部容器在其所处子程序被开始执行前,都将被自动分配空间并初始化,也即是在声明变量的同时系统将自动赋给变量一个固定的相应的初始值。对于严格的程序设计来说,必须清楚所有类型变量的赋值状态,否则可能会导致不可预料的结果。 对于不同数据类型的变量,易语言给出的初始值是不同的。其中,数值型容器被初始化为零,逻辑型容器被初始化为假,日期时间型容器被初始化为 1899 年 12 月 30 日 0 时 0 分 0 秒,文本型容器被初始化为空文本(“”),字节集型容器被初始化为空字节集,子程序指针型容器被初始化为空子程序指针。 ⑶、赋值规则。 赋值规则可以归结为“类型要一致”:①、赋值式两边的数据类型必须匹配;②、用于相加的多个变量,它们的类型也必须匹配;③、就象上面所说,为了在赋值式中区别文本型数据和数值型数据,表示文本型数据的内容要用“”号括起来。 一般来说,容器内仅能被写入类型与容器本身数据类型一致的数据。譬如:将一个整数写入到整数型容器中,将一段文本写入到文本型容器中等。比较特殊的是:任意数值类型的数据可以被写入到任意数值类型的容器中,系统将自动进行转换。譬如将一个短整数写入到整数型容器中,将一个整数写入到小数型容器中等等,但是此时必须注意防止下面所提到的溢出问题。 打个比方,在炸炒米的机器里放入大米就是“赋值”。没有大米,整个过程就会是无米之炸,巧妇也难为啊。当大米炸好后得到米花,那可就是“返回值”(处理结果)了。 在炸炒米机里可不能放入大白菜哦,这就是是所谓的类型匹配。如果不匹配,就会产生下面的错误表现: ①、容器溢出。比如下面的子程序: 子程序:_按钮1_被单击 局部容器:数值容器 数据类型:短整数型 数值容器 = 100 数值容器 = 数值容器 + 50000 编辑框1.内容 = 到文本 (数值容器) 我们知道,100+50000=50100,但是为什么执行上面的子程序后,编辑框的内容却是“-15436”呢?这就是我们上面中所说的溢出。因为,“数值容器”的数据类型被我们定义为短整数型,所以系统仅为此容器分配了一个短整数的存储空间,据上面所述,短整数型数值的最大值为 32767,而结果值 50100大于了此数值,导致系统为容器1所分配的存储空间不能容纳该数值,部分数据被丢弃,从而得到了错误的结果。 ②、程序中断。若赋值式两边的数据类型不一致,就会使程序中断并出现错误提示信息,如: 子程序:_按钮1_被单击 局部容器:数值容器 数据类型:短整数型 编辑框1.内容 = 数值容器 当运行上面的程序时,会中断运行并在状态夹的提示子夹中出现错误信息并用箭头指示出错的代码行: “错误(20026): 现行容器或参数的数据类型与传递给它的数据的类型不一致” 这是因为“编辑框1.内容”(现行容器或现行变量)的数据类型是文本型,而“数值容器”却是短整数型,两者类型不一致,造成程序出错并中断。若赋值式两边的数据类型不一致,就需要改变它们的类型使之匹配。对于对象的属性变量来说,由于系统给予它们固定不变的类型,如果是给对象的属性赋值,就要使“=”号右边的类型与该属性的类型一致,如上例中“编辑框1.内容”是文本型,但“数值容器”是短整数型,那么上面的赋值式要这样表达才是正确的: 编辑框1.内容 = 到文本 (数值容器) 注意,上面的语句不能表达为:编辑框1.内容 =“数值容器”,否则编辑框就只会出现“数值容器”这四个字。 又如: 数值型容器1=文本到数值(编辑框1.内容) 编辑框1.内容=时间到文本 (取现行时间()) 赋值式右边相加的各个容器类型也要匹配,如: 子程序:_按钮1_被单击 局部容器:文本容器 数据类型:文本型 编辑框1.内容=到文本(取代码 (文本容器,)+到文本(标签1.左边) 好了,学习了上面的知识,你就不会再对“...类型不一致”之类的出错信息迷惑不解了。 ㈣、变量的生命周期和作用范围 台湾著名的VB专家王国荣先生说:“如果把程序比喻成人体,那么调用语句、赋值语句、条件语句、循环语句…等语句就好像人体的骨骼、器官、肌肉…等组织,而数据则像流通于其中的血液,组织一旦成形就不会改变,但血液却会到处流窜,比较不好掌握…”。 下面我们就继续说明变量这个数据类型在程序中如何充当血液的作用的。 ★、变量的生命周期 我们先来看下面一个例子,这个例子是点击按钮1在编辑框1里循环变换显示0 - 5这六个数字,下面的代码无法实现这个功能,大家帮忙看看问题在哪里: 子程序:_按钮1_被单击 容器名:数字 类型:整数 编辑框1.内容 = 到文本(数字) 数字 = 数字 + 1 如果真(数字 > 6) 数字 = 0 如果真结束 以上子程式表面看来好象没有什么问题,但每点击“按钮1”编辑框1里的内容都是“0”,这是为什么?类似这样的问题是初学者几乎都会遇到的。如果我们把“数字”这个容器修改为静态容器(选中该容器的静态属性),运行就会成功了: 子程序:_按钮1_被单击 容器名:数字 类型:整数 <静态> 编辑框1.内容 = 到文本(数字) 数字 = 数字 + 1 如果真(数字 > 6) 数字 = 0 如果真结束 在上面这个子程序中,每点击一次按钮1,“数字”的值都会被加一并被保留,于是每次输出到编辑框1的数字就会依次递增(0,1,2,3,4,5),到5后再从0开始循环,如下: 数字 = 0 数字 = 1 数字 = 2 数字 = 3 数字 = 4 数字 = 5 为什么子程式一每点击一次按钮,数字都是0,而子程序二每点击一次按钮,数字都会按要求变化?其关键在于静态容器和非静态容器的生命周期不同。 ⑴、静态容器和非静态容器 所谓静态,就是静止存在,当所处子程序退出时,此类容器能够保留住现行内容以供下次继续使用。静态容器的最重要的特性是当子程序执行到最后时,变量所占用的内存不会被释放,而变量值一直保留着,直到程序被退出。 而非静态的容器就不能,下次进入子程序时它将被重新初始化(比如整数型变量的初始值是0),例程一中的语句 “数字 = 数字 + 1 ”根本没有任何作用,这就是为什么非静态容器的内容在显示时始终为 0 的原因。非静态容器最重要的特性就是当子程序执行到最后时,变量所占用的内存就会被释放,而变量的内容也跟着消失。 在子程序一中,“数字”的生命周期起于“编辑框1.内容 = 到文本(数字)”,结束于“如果真结束”。但是在子程序二中“数字”的生命周期却是起于程序被载入,结束于程序被载出,子程序二中的“数字”的生命周期长于子程序一中的“数字”。 初学者可能弄不明白为什么要有静态容器和非静态容器之分,有多种理由,如:①、静态容器占用的内存资源比非静态容器多,所以能用非静态容器时就尽量不用静态容器;②、有时候变量内容需要保留,那么我们就要用到静态变量,但有时候在程序中变量的内容不需要保留,这时候如果使用静态变量同样也会出错。初学者要注意搞清什么时候要用静态容器,什么时候要用非静态容器,正如上面的例子一样。我们可以把上面例子作为静态容器应用的例程。 ⑵、程序集容器 在上面的循环显示数字的例程中,我们也可以用程序集容器来代替静态局部容器,如: 窗口程序集名:窗口程序集1 容器名:数字 类型:整数 程序集容器的生命周期与静态容器相同,起于程序被载入时,灭于程序被退出时。 ★、变量的作用范围 无论是初学者或是专业程序员,都需要在使用变量之前,了解变量的使用范围,这是非常重要的。 所谓变量的使用范围(作用域)是指变量所起作用的范围,即变量在代码区域的哪些部分是可用的,一旦超出了这个范围变量将不可用。易语言根据变量作用的范围大小将变量分为全局容器、程序集容器和局部容器。这三种容器的建立方法请看前面的变量声明的内容。 ⑴、全局容器:在全局容器表内定义的容器被称为“全局容器”,可以被整个应用程序中的所有子程序使用。 ⑵、程序集容器:在程序集容器表内定义的容器被称为“程序集容器”, 仅能够被此程序集中的所有子程序使用。 ⑶、局部容器:在子程序容器表内定义的容器被称为“局部容器”,仅能够被此子程序所使用。 划分变量的使用范围之所以重要,是因为我们声明变量要根据变量的作用范围而定,比如只在某子程序中使用的变量,我们就要声明为局部容器;在某窗口程序集中被两个或以上子程序应用的变量我们就声明为程序集容器;如果某变量在整个程序中都有应用,我们就声明为全局容器。 有初学者可能会说,为什么要这么麻烦,既然全局容器在整个程序中都适用,不管三七二十一,把所有变量都声明为全局容器,这样每个子程序都可以调用这些变量,不是更方便吗?我们区分全局容器、程序集容器和局部容器也有多种原因,如: ①、是为了方便侦错。也就是说如果变量的定义太乱,那么当程序出错时,我们就很难查找出错之处,尤其对于大型程序来说,侦错的工作就会非常困难。 ②、由于三种变量所占用的系统内存不一样,就会对程序的运行造成不同的影响。变量按使用范围大小排列如下:全局容器>程序集容器>局部容器。占用的内存资源也是这样:全局容器>程序集容器>局部容器。所以不到万不得已,还是用局部容器好。太多的全局变量会使程序运行缓慢,比如说循环一个有50个字段10000条记录的数据库,呵呵。所以你找一个空间来存放运行你的网页程序的时候,假如全局变量过多,有些空间商会取消你的空间。 可以说要尽量使用局部变量或者程序集变量,可以不使用变量的最好就不使用。 (《变量的知识》全文完) 菜鸟每日一课 易语言能否建立多文档界面?就是象易语言本身的界面一样,由多个窗口共同打开在一个大窗口中,或者象网页编辑器一样在一个大窗口中有几个浮动窗口(浮动面板)。我还没有发现那个易程序用上浮动面板或多文档界面,但实际上这两者在应用程序里是广泛应用的。能否用易语言来建立呢? 冰川哥哥说:“行, 用"载入 (窗口1, _启动窗口, 假)"”这个命令。好,我们现在就先来学习建立浮动面板。 ㈠、首先我们配合易语言里的知识库来学习。运行易语言知识库(在帮助文件里),选“目录→参考手册首页→系统核心支持库→命令类别→其他→载入”,就进入了“载入”命令的帮助文件。我把这一页的文件复制在下面: “载入 命令 所属类别:其他 ⑴、注解:载入指定的窗口,根据窗口的“可视”属性决定是否显示它。成功返回真,失败返回假。 ⑵、语法: (逻辑型) 载入 (欲载入的窗口,[父窗口],是否采用对话框方式) ⑶、参数名及描述: ...①、欲载入的窗口 。 描述:(必需的);窗口。参数值指定欲载入的窗口。 ...②、父窗口。 描述:(可选的);窗口。参数值指定欲载入窗口的父窗口,此窗口必须已经被载入。如果本参数被省略,表示无父窗口。如果窗口具有父窗口,其位置将永远位于父窗口的上面;当父窗口被关闭时,窗口将自动被关闭;当父窗口被禁止时,窗口将自动被禁止。 ...③、是否采用对话框方式。 描述:(必需的;)逻辑型,初始值为“真”。参数值指定用户在对被载入窗口进行操作的同时是否允许同时对其他窗口进行操作。如果本参数值为真: 1、即使被载入窗口的“可视”属性为假,在载入后也立即显示; 2、本命令一直等待到该窗口被销毁后才返回。 示例:” ㈡、以上就是该命令的帮助文件。我们会发现,那个示例=“”。好,我们现在就补充一个示例来学习这个命令。这个例子当然就是建立浮动面板。 步骤一:建立有关窗口及窗口单元。 ⑴、在启动窗口上建立一个编辑框。 ⑵、再分别新建窗口1、窗口2、窗口3、窗口4,也分别给这四个窗口绘制一个编辑框。 步骤二:设置有关窗口及窗口单元属性。 ⑴、选“启动窗口”,在属性编辑区里将其边框设为普通可调边框。 ⑵、选“编辑框1”,在属性编辑区选“是否允许多行→真”。 ⑶、其余四个子窗口也如此设置属性。将四个窗口都设置在启动窗口(父窗口)的面积范围内,并且设置四个子窗口之间不重叠。 步骤三:编写代码。 ⑴、将“启动窗口”设为父窗口,其余四个窗口设为子窗口。 子程序名:__启动窗口_创建完毕 载入 (窗口1, _启动窗口, 假) 载入 (窗口2, _启动窗口, 假) 载入 (窗口3, _启动窗口, 假) 载入 (窗口4, _启动窗口, 假) (上面代码的意义请参看再上面复制的帮助文件) ⑵、使窗口在改变大小的同时,编辑框的大小也随之改变。选“启动窗口”,在事件选择区里选事件“尺寸被改变”。 子程序名:__启动窗口_尺寸被改变 编辑框1.高度 = 取用户区高度 () 编辑框1.宽度 = 取用户区宽度 () ⑶、其他子窗口也建立一样的子程序,代码也类似上面的,使各子窗口在改变大小的同时,编辑框的大小也随之改变。 步骤三:调试程序。经过上面的步骤,我们建立了一个具有浮动面板的编辑区。 ㈢、该程序的例子请下载:http://show4me.com/bbs/non-cgi/usr/5/5_34.e 本课讲完了,同学们有问题在下面跟贴提出吧。好,下课! 还是把这一课作为最菜的一课吧:保存程序和生成.exe文件。 因为从易友们的提问来说,大概是这个问题最菜了。 ㈠、保存程序的方法。 从菜单栏中选择“文件”菜单中的“保存”,随即屏幕上出现一个对话框。这个对话框的标题为“保存为:”。在该对话框中名称为“文件名”的输入框中输入你想要起的名字,然后单击“确定”。这时文件就被保存了,同时关闭对话框。如果你有多个文件要保存,那你就辛苦一下,多保存几次吧。 下次要用这个应用程序的时候,你可以从菜单栏中选“文件”菜单中的“打开”,然后从对话框中选择你要打开的文件,再确定一下即可。 ㈡、生成.exe文件的方法。 ⑴、一个独立运行的文件(指.exe文件)是不需要易语言环境的,它可以直接运行于windows和dos环境中。就是说,一个独立运行的文件就象是安装游戏时的setup.exe文件一样,只要单击它就马上安装游戏,而不必再易语言编辑环境中打开。 ⑵、如果希望应用程序不必在易语言中打开,就必须把应用程序编译成.exe文件。好。让我们试一下。 从菜单栏中选“程序→编译发布版本”,弹出一个保存文件的对话框。从中输入一个你想要的文件名,再选择保存在什么地方(即保存的位置或路径),再单击“确定”。这样,一个.exe文件就形成了。 最后,你如果想看看自己的“战果”,可以进入windows的“我的电脑”或“资源管理器”中,找到该文件,然后双击文件名即可。当然,在DOS的系统提示符下键入文件名也能执行。 现在以一个实例来说明如何操作数据库。 ㈠、寻找易语言帮助文件中的“易语言知识库→数据库应用手册”,这一页有一个数据库实例“工资表数据库”,但没有操作这个数据库的示例,现在我们就补充这个示例来学习数据库的管理。 ㈡、创建工资表数据库。有两种创建方法:⑴、运行“结构编辑器”来创建(请看“数据库初步应用”一课)。⑵、在程序中创建。运行本课示例程序“工资表管理面板”,点击“创建‘gz’数据库”即可创建一个名叫“gz”数据库。若原来已存在gz数据库,把它删除再重新创建看看。代码如下: 局部容器:字段表 数据类型:字段信息 数组:4 字段表 [1].名称 = “姓名” 字段表 [1].类型 = #文本型 字段表 [1].最大文本长度 = 10 字段表 [2].名称 = “工资” 字段表 [3].名称 = “扣除” 字段表 [4].名称 = “实发” 连续赋值 (#小数型, 字段表 [2].类型, 字段表 [3].类型, 字段表 [4].类型) 创建 (“gz”, 字段表) 在这个子程序中,“连续赋值 (#小数型, 字段表 [2].类型, 字段表 [3].类型, 字段表 [4].类型)”的意思是把这三个字段表的类型的属性值都设为小数型。 ㈡、添加新记录到数据库。点击“添加某个记录”按钮,切换到添加记录窗口(“窗口1”)。 ...⑴、首先要打开数据库。代码如下: 子程序名:_窗口1_创建完毕 打开 (#gz数据库, , , , , , ) 置当前库 (“gz”) ...⑵、声明、定义容器(变量)。要使输入框的数据类型与数据表中相关字段的数据类型一致,就要建立新容器(声明变量),使两种数据类型统一起来。建立相关容器后下一步就是给这两个局部容器赋值(设置属性值),如“小数容器 = 文本到数值 (编辑框2.内容)”,意思是将编辑框内容的数据类型(文本)转为数值型,以便跟字段(2)(名称为“工资”,类型为“小数”)的类型相一致,然后再将“编辑框2.内容”的属性值赋予“小数容器”。  ...⑶通过下面的子程序来添加新记录到数据库: 子程序名:_按钮1_被单击 容器1 = 到文本 (编辑框1.内容) 小数容器 = 文本到数值 (编辑框2.内容) 查找 (容器1 = 读 (1)) (将数据库中“姓名”的属性值传给“容器1) 查找 (小数容器 = 读 (2)) 加记录 (容器1, 小数容器) 销毁 () ㈢、删除记录、替换记录(在这个例子里是“加薪”)、查找记录的编程思路与添加记录差不多,就不一一解说。 在“删除”子程序中用到一个循环语句:计次循环语句。目的是把数据库中的所有记录显示出来,然后从中寻找符合删除条件的记录。“计次循环首 (取记录数 (), 容器2)”的意思是循环开始,并且使循环的次数等于数据库的总记录数,“容器2”表示已循环次数记录容器,“计次循环尾 ()”表示循环结束。 ㈣、在这个工资表管理程序里有一个个别的示例就是“添加张三到数据库”,如果数据库中已存在“张三”,把它删除再添加看看。语句是:加记录 (“张三”, 200)。 “200”表示字段2的数值(张三的工资数)。 ㈤、在这个程序示例中,第六、七、八个按钮是读取相关记录的。试变换点击按钮六、按钮七,看看按钮八有什么变化。语句分别为:“到首记录 ()”、“到尾记录 ()”、“读 (#姓名)”。 ㈥、本例程的查找不使用索引,不使用索引的查找记录方法类似如下: 到首记录 () (如果当前记录指针在首记录上,则不需要此语句) 判断循环首 (查找 (读 (#姓名) ≈ “王”)) 进行所需操作。 跳过 () 判断循环尾 () ——————例程下载:http://www.91asp.com/bbs.nsf/0/a83d8506430fc6cc48256bbf00398d2a/$FILE/gongzhi.zip 我们的应用程序经常要用到流程控制命令(比如条件语句),条件语句即“如果、、、,就、、、,否则、、、直至该流程结束”之类。这样就能使程序按照给定的指令(思路)自动运行下去,直至指令结束。比如:“如果是宝贝哥哥(bb88)来求婚,我就嫁给她,否则,免谈,over(就这样)”。这句话怎么编译成程序语言呢?是这样吧: 声明 变量1 声明 变量2 变量1=求婚者 (给变量赋值) 变量2= 回应 程序名:_求婚(控件)_被选择 读取求婚者 如果 求婚者=宝贝哥哥 则 她(标签).回应(标题)=“啊,我嫁给你啦!” 否则 她.回应=“下辈子再说吧” 该流程结束 好,当有人来求婚时(有人发送求婚指令),这个被求婚的MM就会识别此指令,并按照上面的程序来运行。但又不能永远运行下去,否则得不到休息,找不到运行方向,她会神经错乱(系统提示有错误,程序不能运行)。所以要指令她运行到该结束的地方结束。我是一个学编程仅只七天的极品新手,请高手帮我看看上面的代码哪里有错(好象有错)。 如果想使程序运行长一段时间(损耗的资源也会多),那你给它的指令也复杂一点,比如“如果,就,又如果,就,否则,如果如果中又有如果,则、、、、”,最后才“如果结束”。 题外话:在实际应用程序时,常常要多次向计算机发送不同指令。那怎样发送指令? 是不是用嘴对计算机说:“现在我向你下达一个旨意,怎样怎样”、“长江、长江,请追击敌人,over”,然后计算机说:“喳!遵旨”、“yes,黄河,yes,黄河,over”?当然不是,是通过按钮、发话框、选择框之类的控件(易语言称为窗口单元)发送命令,然后又由这些控件来执行指令的(即有些控件常用来发令,有些主要用于执行命令)。所以控件(控制部件)我们可以简单地解析为:“用来发送指令、传递指令、执行指令和反馈指令的那种东东(部件)”。所以我们不要小看按钮之类的东东,没有它程序何从运行。让我们在以后的学习中了解“按钮_被单击"、"按钮_被双击"之类的发令方式,再逐步学好如何运用控件、扩展控件。 言归正传,现在我们通过一个例子来初步了解“如果”这个流程控制命令,这个例子就是:加口令的输入框。 我们的应用程序常常要用户输入正确的口令才能进入。怎样做到呢?在这里做一个简单的密码登陆程序(不用输入用户名,密码正确就可进入),在这个例子里正确的登陆密码是"bb88"。 第一步:规划程序界面。 在启动窗口上画两个输入框(即编辑框,又称文本框),再在下方画两个按钮。 第二步:设置对象的属性。 ⑴、将第一个输入框设置为密码输入框。首先我们在属性窗口中找到“输入方式”这个属性,然后选“密码输入”。当然我们也可以通过代码来设置,语法是:编辑框1.输入方式 = 2 。(输入方式可选的属性值分别有“0、通常方式 1、只读方式2、密码输入 3、整数文本输入 4、小数文本输入 5、输入字节 6、输入短整数 7、输入整数 8、输入长整数 9、输入小数 10、输入双精度小数 11、输入日期时间)。设置为密码输入框可以隐藏你输入的字符,加强保密性。 ⑵、定义系统变量。变量(易语言称为“容器”)分为局部变量(只在某一子程序中应用)、程序集变量和全局变量三种。本例中有一个叫“密码”的变量在程序集1中应用(即是程序集变量),那么我们在“窗口程序集1”下面加一个叫“密码”的容器(方法是在“窗口程序集1”下面按回车键)。因为“输入框1”这个对象的数据类型为“文本型”,为使“密码”的类型跟它一致,也要把“密码”变量的类型定为文本型(这是初学者容易出错的地方)。 第三步:编写事件过程代码。 ⑴、先对“确定”按钮进行编码。切换到代码编辑窗后,在左边的“属性窗口”中选“支持库→流程控制→→如果”,点击“如果”将这条程序的框架加到“按钮1_被单击”子程序下面,再将下面代码填上去: 子程序名:_按钮1_被单击 密码 = 编辑框1.内容 如果 (密码 ≠ “bb88”) 编辑框2.内容 = “错了,再来!” (否则)编辑框2.内容 = “好,来吧!”(如果要登陆某个系统,可把这一句替换为“载入 (窗口1, , 真)”、“运行 (程序1, , 假)”之类) (如果结束) ⑵、再对“清除”按钮进行编码: 子程序名:_按钮2_被单击 编辑框1.内容 = “” 编辑框2.内容 = “” 第四步:运行程序。 假设我们输入的口令为“BB88”,单击“确定”后,文本框2会出现提示:“错了,再来”,因为密码分大小写不同的(大小写改变时,密码就不同了)。当输入正确口令“bb88”时,系统提示:“好,来吧!”。 ————————-最后本课例程下载:http://show4me.com/bbs/non-cgi/usr/5/5_36.e ㈠、简单讲解:就象我们想打开一个新网页,就先要建立一个新网页一样,我们要打开一个新窗口,就要先建立这个新窗口。方法是使用“插入->新窗口”菜单功能插入一个新的窗口,该窗口被系统自动命名为窗口1。当然也要对此窗口进行编辑。在两个窗口之间切换的方法:在编辑界面左边选“程序->窗口”。 ㈡、主要表达式:若只在程序内打开一个新窗口,语法为:载入 (窗口1, , 假) 。若打开为一个新程序,则为:载入 (窗口1, , 真) ㈢、请在此处下载本课所编写的程序:http://show4me.com/bbs/non-cgi/usr/5/5_25.e ㈠、简单讲解:就象我们可以通过超链接来打开新网页一样,我们也可以在本程序里启动运行其他程序。 ㈡、主要表达式:运行 (“程序路径”, 假, ) 。如:运行 (“E:\易语言1.963版\China Eyuyan\eprogames.exe”, 假, ) 。 ㈢、请在此处下载本课所编写的程序:http://show4me.com/bbs/non-cgi/usr/5/5_26.e 现在的编程趋势是方便至上,怎么让用户觉得方便,就怎么编。于是在程序界面上,经常会有许多栏目让用户选择,这可是让用户偷懒的一个好方法。这样,虽然程序复杂了点,但用户觉得简单了,我们设计程序的目的也就达到了。 ㈠、控件简介。 ⑴、选择框(复选框)。在易语言中,就提供了这样一个好东西,叫做选择框。选择框有两种状态可以选择。一种是选中了,小方框里就打上一个“√”号。这很符合我们的习惯,我们通常选中了什么东西,不就是用笔打个“√”号吗?另一种是不选状态,那么小方框里的“√”号就没有了。 ⑵、单选框。聪明的读者想必已经猜出,有了复选框,必定有单选框。确实有,复选框是方的,单选框却是圆的。 打个小比方,假如你要编一个程序,让用户选择国家足球队的最佳阵容,其中有守门员、后卫、前卫、前锋等几个选项栏,每一栏下有候选人让用户选择。这时,“守门员”这一栏下就只能用单选框,“后卫”、“前锋”等栏下面就能用复选框,对不对?谁也见踢足球的时候,一个门里站两个守门员的。道理就是这么简单。 ⑶、分组框。单选框限制了我们的多重选择,但有时需要这样的限制,不然遇到像两个守门员争起来的事情,就麻烦了。可有时候又需要有多方面的选择,比如我们想为国奥队、国家队、青年队分别选一个守门员,就得在三拨人里面选三个出来,这就用到了分组框。我们先把单选框分成几组,每组用分组框分隔开,这样就能一一选择了。分组框之所以能起到分组的作用是因为它是一种包容型窗口单元(容器型控件)。 ㈡、例程制作:字体选择。 ⑴、例程说明:编写一个程序,允许用户选择输入字号、风格和字体。选择完毕后可即时在编辑框里显示用户所输入文字的字号、风格和字体的变化。这个实例综合了复选框、单选框和分组框的用法。 ⑵、编程思路:本例程可供选择的字体类型有三种:字号(字体大小)、风格(字体格式)、字体名称。分别用三个分组框把三组选择内容分隔开来。“字号”一组只能选择其中一项,于是用单选框;“字体”一组也如是;“风格”一组中,可以任选其中一项或多项,所以用复选框。在编辑框的字体变化里我们要调用字体对象(系统对象,即非实体控件对象)的相关属性。 ⑶、创作步骤: 第一步:创建用户界面。 ①、在窗体上创建一个编辑框、三个分组框,分组框1和分组框3各包含两个单选框,分组框2包含两个复选框。 ②、设置对象的属性。将分组框1的标题定为“字号”,里面的两个单选框的标题分别为“18”和“24”。将分组框3的标题定为“字体”,里面的两个单选框的标题分别是“宋体”和“黑体”。将分组框2的标题定为“风格”,里面两个复选框的标题分别是“粗体”和“斜体”。 第二步:分别对这六个单选框和复选框的事件进行编程。 子程序:_选择框1_被单击 如果 (选择框1.选中 = 真) 编辑框1.字体.加粗 = 真 否则 编辑框1.字体.加粗 = 假 如果结束 ※备注:若给选择框1打上“√”号则返回(执行)“编辑框1.字体.加粗 = 真”,若去掉“√”号则返回(执行)“编辑框1.字体.加粗 = 假”。 ------------------------------ 子程序:_选择框2_被单击 如果 (选择框2.选中 = 真) 编辑框1.字体.倾斜 = 真 否则 编辑框1.字体.倾斜 = 假 如果结束 ------------------------------ 子程序:_单选框1_被单击 编辑框1.字体.字体大小 = 文本到数值 (单选框1.标题) ------------------------------ 子程序:_单选框2_被单击 编辑框1.字体.字体大小 = 文本到数值 (单选框2.标题) ------------------------------ 子程序:_单选框3_被单击 编辑框1.字体.字体名称 = 单选框3.标题 ------------------------------ 子程序:_单选框4_被单击 编辑框1.字体.字体名称 = 单选框4.标题 第三步:运行程序。 运行程序时,在编辑框输入一行文字后任意选择界面上的单选框和复选框,就可以看到字体、字号、风格的变化。 (例程下载:http://www.91asp.com/bbs.nsf/0/171c3998eeef368648256bba0061f941/$FILE/_c2fbtc4ucsk9t388jqjog_.e) ㈠、资料来源:不凡斋网站 ㈡、程序例子:http://show4me.com/bbs/non-cgi/usr/5/5_31.e 在许多应用软件在中,当鼠标指向工具栏上的任何一个按钮时,都会出现一个提示标签来说明该按钮的用途。在VB中,按钮控件有一个“ToolTipText”属性就是用来实现这个功能的,那么易语言中如何给按钮加上提示标签呢?下面通过实例来讲述这个方法。 在主窗体上加上三个按钮和一个标签,属性设置如下: 窗口单元 属性 按钮1 按钮1标题=新建 按钮2 按钮2标题=打开 按钮3 按钮3标题=保存 标签1 标签1可视=假 标题=“”(无内容) 边框=5(单线边框式) 背景颜色=黄色 设置好属性后运行程序,可以看到,标签1此时不可见。 接下来通过按钮的“鼠标位置被移动”事件将标签1移动到相应的位置、自动更改标题内容并显示出来,源码如下: 子程序:_按钮1_鼠标位置被移动 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 标签1.左边 = 按钮1.左边 + 3 标签1.标题 = “新建” 标签1.可视 = 真 ------------------------------ 子程序:_按钮2_鼠标位置被移动 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 标签1.左边 = 按钮2.左边 + 3 标签1.标题 = “打开” 标签1.可视 = 真 ------------------------------ 子程序:_按钮3_鼠标位置被移动 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 标签1.左边 = 按钮3.左边 + 3 标签1.标题 = “保存” 标签1.可视 = 真 再次运行程序,看看效果是不是出来了?不过当鼠标移到其它地方时,标签并没有消失,接着来: 子程序:__启动窗口_鼠标位置被移动 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 标签1.可视 = 假 如果还有其它的窗口单元,只要按照在其“鼠标被移动”事件中将标签的可视定义为“假就”可以了。 怎么样?是不是很久简单啊?如果还有什么疑问,欢迎给我来信或到我的论坛上去提出来。 所谓最小化到系统托盘,就是既使程序隐藏,又在IE右下方(系统托盘)留下程序的图标,点击该图标可以显现该程序窗口。OICQ是典型的最小化到系统托盘的运用,当我们点击OICQ的最小化按钮时,QQ的界面被隐藏下来,但我们可以点击IE右下角的图标使它重新显现。隐藏程序的作用之一是使它不影响我们的视线,但又随时可以呼出该程序。 这里所讲的例程包括三个方面:⑴、最小化窗口;⑵、置程序图标于托盘;⑶、点击右键可以弹出托盘菜单。下面介绍如何实现这三项功能。 ⑴、设置好菜单项目。关于菜单的制作,以前的某一课程有介绍。 ⑵、设置要放置到托盘的图标。选“属性夹→资源表→图片”,切换到资源表编辑区,填好有关内容,比如设“图片名称”为“图片1”。点击“内容”栏,弹出图片资源属性窗口,点击“导入新图片”在文件中选择你需要放置在托盘上的图片,设置好后在“内容”栏会填上内容(如“766”)。 ⑶、对最小化按钮进行编程,使窗口最小化到系统托盘。在本例中是用“按钮4”来代替最小化按钮。 子程序:_按钮4_被单击 _启动窗口.位置 = 2 (“2”是最小化的代号) _启动窗口.可视 = 假 (隐藏窗口或程序) 置托盘图标 (#图片1, ) (将上面第2步所选择的图标放置到托盘) ⑷、设置托盘菜单。第3步已经实现最小化到托盘的功能,但我们常常会使托盘也能操作窗口的菜单。在本例中,双击鼠标左键可使窗口重新显现,单击右键会弹出菜单。程序如下: 子程序:__启动窗口_托盘事件 参数:操作类型 数据类型:整数型 判断 (操作类型 = #双击) _启动窗口.可视 = 真 (使窗口重新显现) _启动窗口.位置 = 0 (“0”即通常位置) 置托盘图标 () 判断 (操作类型 = #单击右键) 弹出托盘菜单 (菜单) (默认) 判断结束 以上程序中“判断”这个流程控制命令大约相当于“如果”流程控制命令,即“如果双击鼠标左键则可使窗口重新显现,如果单击右键会弹出菜单“。在“弹出托盘菜单 (菜单)”这一句中,括号里的内容是欲弹出的菜单的名称。 本课例程下载:http://show4me.com/bbs/non-cgi/usr/5/5_30.zip ㈠、控件说明。 滚动条、进度条和滑块条是三种功能和用法都相似的控件,都是在计算机系统中经常用到的,比如IE就是靠滚动条来显示完整的信息,还有播放系统的音量控制、播放进度等,可以说它们真是无处不在,非常有用。 滚动条、进度条和滑块条实际上都是数值的图形化描述,即用图形来演示数字的变化。它们能表现的值可以从-32768~32767,这些数值基本上可以代表所需要的一切,比如说度量或数量。 它们最右边的位置代表的是最大值,最左边的代表的是最小值。最大值和最小值可以在属性里区里设置,或用代码加载。 在程序中,这三个控件最常用到的属性值是“位置”,该属性设定这三种控件的现行位置,可以用来进行一些渐变的数字处理,比如“滑块条1.位置 = 滑块条1.位置 + 5”。 ㈡、程序实例:实时播放进度。 ⑴、例程说明:本例程其实是一个最简陋的mp3播放器,只有两项功能:播放mp3音乐和用滑块条显示播放进度。 ⑵、编程思路:本例程的难点在于显示播放进度。如果能够在开始播放时取得该文件的预计播放时间就容易了。比如我们取得一个文件的播放时间预计是100秒,假设我们设置滑块条每秒前进1个刻度,即“滑块条1.位置 = 滑块条1.位置 + 1”,那么该滑块条的最大位置应为100刻度,即“滑块条1.最大位置=100”,这样当音乐播放完毕,该滑块条的位置也刚好前进到最右端。 ⑶、编程步骤: 第一步:规划用户界面。在窗口上画一个滑块条、一个“打开”按钮、一个“播放”按钮、一个时钟控件、一个通用对话框。就这么简单。 第二步:设置对象的属性值。基本上按照默认设置就行了。至于属性值的变化由代码加载。 第三步:编写事件过程代码。 ● 对“打开按钮”编程: 子程序:_打开按钮_被单击 通用对话框1.打开 () mp3 = 通用对话框1.文件名 ※备注:该子程序用来选择打开将要播放的mp3音乐 ● 对时钟控件编程: 子程序:_时钟1_周期事件 滑块条5.位置 = 滑块条5.位置 + 1 ※备注:设置滑块条每周期前进1个刻度 ● 对“播放按钮”编程: 子程序:_播放按钮_被单击 播放MP3 (1, mp3) ※备注:“1”表示播放次数为1次,mp3 = 通用对话框1.文件名 滑块条5.位置 = 0 ※备注:在播放开始时让滑块条的位置到最左端 滑块条5.最大位置 = 取文件长度 (打开文件 (mp3, 1, 1)) ÷ 16007 ※备注:一般是每秒钟播放16007字节 时钟1.时钟周期 = 1000 ※备注:设置每秒为一周期 第四步:运行程序 打开一个mp3文件并播放,观察滑块条的位置变化情况。 (例程下载: http://www.91asp.com/bbs.nsf/c53885e4b38488454825681f0035243d/c73de85fac5186fd48256bbc006f1a17/$FILE/_f2epaa4tnok9sld8jpaoh7ffo2ercg_.e) ㈠、简单讲解:一般的应用程序都会有“菜单”和“菜单工具栏”,比如易语言的操作界面就有“文件”、“编辑”、“查看”和“插入”等菜单。建立菜单可以精简程序界面。 ㈡、主要步骤: ...⑴、在易语言菜单栏中选“编辑”,再点“G.菜单编辑器”。 ...⑵、建立主菜单(顶层菜单)。填好“标题”和“名称”的输入框后,我们就建立了 第一个主菜单项,要建立第二个主菜单项点“向后插入”,依此类推,建立其余主菜项。 ...⑶、建立分层的子菜单。初学者在完成步骤⑵后就按“确定”,就会出现提示:“错误(49),不能存在单独无子菜单的顶层菜单”,没有办法,我们一定要有子菜单。方法:先按照建立主菜单的方法建立某个菜单项,再点“右移”,它就会变成上一个菜单的子菜单。子菜单的显示如“...保存”之类即是(在前面有“...”号)。 ...⑷、对菜单进行编程。比如一个标题为“运行新程序”的菜单项,它的名称(在菜单编辑器里设置)是“运行”,那你建立一个叫“_运行_被选择”的子程序。先在编辑面中选“插入→新子程序”,命名为“_运行_被选择”后,再对该子程序进行编程。又如: 子程序:_使用说明_被选择 载入 (窗口3, , 真) ㈢、本课程序例子:多程序启动器。该程序中有“菜单”和“帮助”两个主菜单。 例子下载:http://www.91asp.com/bbs.nsf/0/d15f52d1a752acda48256bab001e8008/$FILE/caidang.zip 有人说,编写程序代码不是很简单吗?切换到代码编辑区,把代码填上去就行了啊。说是这么说,但真正精通还不是很简单的。如果我们精通了,就可以减少代码的编写时间,提高程序效率和工作效率,不用查来查去,或老是要引用别人的代码。还是让我们对代码的编辑多了解一些吧。 ㈠、了解程序的构成及操作。 易程序由程序窗口、程序集、子程序、自定义数据类型、全局容器、DLL命令定义、常量、资源等组成。 ⑴、程序窗口:分为启动窗口和其他窗口等。 操作:若要在各个窗口之间切换,可以在左边的属性区选“程序→窗口”,点击某个窗口名称可以切换(打开)到该窗口编辑界面。若要开一个新窗口,可在菜单中选“插入→新窗口”,或在左边的属性区选“程序→窗口”,再点右键插入。以下新程序、新容器、新常量等的插入与此一样。 ⑵、程序集:一个程序窗口常常对应一个程序集名。比如有一个窗口叫“窗口1”,那它所对应的程序集名称为“窗口程序集1”。 ⑶、子程序:是一个窗口程序集内的分程序。子程序的名称由“_对象名_事件名”构成。 对象要通过控件(窗口单元)来表现,或者说对象实际表现为某个具体的控件,而“对象名+事件名”构成一个子程序名称。 ⑷、自定义数据类型。自定义数据类型分为支持库自定义数据类型(如:窗口、字体、编辑框等)和用户自定义数据类型。在程序中的任何位置,只要可以使用系统基本数据类型(如:整数型、文本型等),就可以使用自定义数据类型。所有的支持库自定义数据类型在支持库夹的“数据类型”分枝下可以找到,用户自定义数据类型由用户自行在自定义数据类型表中加入。 ⑸、变量(易语言称为“容器”)分为局部变量(只在某一子程序中应用)、程序集变量和全局变量三种。在一例子中有一个叫“密码”的变量在程序集1中应用,即是程序集变量。三种变量中以全局变量损耗的资源最多,所以一般尽量避免使用。 ⑹、其他程序部分。以后补充解析。 ㈡、了解代码的种类及操作。 打开易语言编辑界面,在左边有“支持库”,里面列举了多种表达式和语法,即是易语言代码的主要种类(不是全部种类)。 若要在程序中插入某个种类的代码,可在左边是属性区选“支持库”,再点击某个代码种类,就会在代码编辑区显示该类型代码的框架。比如你想输入条件式流程控制命令,可先在要插入该代码的地方点一下左键,再选“支持库→流程控制→如果”,点“如果”后就会在代码编辑区出现该类型代码的框架,你将代码填上去就行了。 ㈢、编写代码的一般思路。 ⑴、确定整个程序的各个部分。首先初步确定有哪些窗口,然后初步找出有几个程序集及子程序,再分别找出有哪些变量(容器)及常量。一找全局变量,二找程序集变量,三找各子程序中有没有局部变量。然后在相关区域中插入相关变量及常量,并对数据类型确定好。 如果你缺少了哪个部分,在编写代码或调试程序时,系统会给予相关错误提示。 ⑵、结合属性区设置对象的属性值。有些对象的某种属性在属性区里找不到,但有可能通过代码来设置。 ⑶、运用核心支持库来编写代码。如上所说。 ⑷、调试、补充、修改代码。在调试时假如出现错误,会在左下方的调试显示区有提示,并且在代码编辑区用指针指示出错的地方。虽然初学者不太明白它的错误提示的意思,但也大体能够知道出错的地方,马马虎虎知道出错的类型是子程序还是变量还是常量等。 可在菜单中选“调试”或“运行”来进行调试。 另外选中某行代码,如果在代码前有“+”号,点击“+”号可以打开该行代码的注解,你可以自己修改这注解。 另外初学者容易出现一个问题:在子程序中添加的语句怎么总是显示 “草稿”这两个字?因为它是草稿,所以不能在程序中运行。按一下回车键“草稿”两字就会消失。一般该行代码有错不能确定时,也显示为草稿。 ⑸、参考或移用别人的代码来完善自己的程序。比如你将一个通讯录程序稍为改改名称或里面的文字,或是修改一下代码,就会变成一个网上留言本,或是一个办公程序,或是一个学生出勤记录,或是一个电话簿,或是一个电子影集,或是一个网页编辑器、、、、、、 ㈣、如何复制、粘贴代码? 对于这个来说,现在的易语言版本没有解决这个问题,但也不是没有办法的。有两法: ⑴、如果是将代码从这个编辑窗复制到另一个编辑窗,可用shift键选中要复制的部分,然后再复制粘贴到另一代码编辑窗,或者可用“全选”,再复制、粘贴该窗口所有码。 ⑵、如果是要复制到其他地方(比如记事簿),在复制好后,在菜单栏中选“编辑→复制程序文本”,再粘贴到相关地方。 -------------------该课没有程序例子。 阿猫:“什么是面向对象?常看到这个词,但就不太清楚什么意思。” 阿狗:“我也不懂,听着就是了 。” 阿牛:“就是OOP 。” 阿猪:“这样解释还不如不解释。” 阿木:“oop stands for object oriented programming。是一个编程思想。如果你是启蒙阶段,用易语言知道不如不知道。如果你想皈依程序,用Standard C++一定要知道。oop,多型,stl一个都不能少。 http://jjhou.csdn.net/这里有你想要的。 ” 阿水:“对象嘛,还不懂?所谓对象者,控件的具体表现形式也(把控件画出来放到窗口上就叫“对象”啊)。所谓面向对象嘛,就是说围绕“对象”为中心进行编程的一种方法。一般是指用具体的控件(即对象)来发出指令、接收指令、传送指令并反馈指令的一种编程方法,跟面向过程的编程方法比较,它更简单易懂。比如搞(至于怎样搞?,可以单击、双击或按下之类,“搞”即“事件”也)一下某个按钮(对象)就可以开始或结束一个程序,“搞”这个指令为某一个“事件”,点击后程序怎样运行(“移动”、“关闭”、“加入内容”之类)为“方法”,“过程”(包括结果)通常表现为对象的属性(变量或常量)的变化(如“编辑框3.内容(变为)=“bb88”)。也即说面向对象的编程方法主要是运用对象(一般表现为具体的控件,有时也不一定)的属性(实质就是变量或常量)、事件、方法(动作)和过程来完成程序的一种编程思想和方法。 比如:“宝贝哥哥穿着西装、拿着鲜花,跪下来向我求婚,我答应了”。这一“程序”中,“宝贝哥哥”和“我”都是对象(名词和宾词),“穿着西装、拿着鲜花”是宝贝哥哥的形象属性,“求婚”是事件动作(动词),“跪下来”也是是事件动作,“答应”是“我”的方法(答应())或属性(我.答应=真)。 什么是面向过程,我还不知道,也没有见过。我只知道用面向对象的方法容易理解。易语言可以说运用的是面向对象的编程方法。在易语言中我们就经常提及“对象”,很少提到“过程”,这就是证明也。 试举一例说明: 子程序(VB称为“过程”):_按钮1_被单击 (由对象名和事件名构成该名称) 编辑框3.内容="林子森" (将该对象的属性赋值为"林子森") 如果(_按钮1_被单击=真) 则 编辑框3.内容="bb88" (该对象属性值变为"bb88") 否则 返回 (该对象属性值还是"林子森") 以上例子通过"单击"事件触动"按钮1"对象发出指令,而"编辑框3"对象接收并反馈该指令,使其属性值发生变化,从而完成程序。 再看下一例: 子程序:_按钮1_被单击 编辑框2.内容 = 编辑框1.内容 (当单击按钮1时,把编辑框1的内容传给编辑框2) 编辑框1.内容 = “” (然后再清空编辑框1,为下次输入内容作准备) 在这一例中,“编辑框1”的内容属性值和“编辑框2”的内容属性值都不是固定的。没有固定值的属性我们就称为“变量”(即易语言所说的“容器”)。一般我们先要声明变量(即建立容器),以便跟常量区别开来,然后再赋予属性值(范围)。如果没有声明变量就运行程序,一般会提示:“对不起,没有找到相关容器”。就象你填履历表,如果你没有把你的属性(年龄、性别、学历等)填好填正确,上面就发下来让你重填,道理一样。 但上面例子没有经过声明就可以赋予属性值(即“编辑框2.内容 = 编辑框1.内容),这是为什么?什么时候要建立容器?什么时候不用建立容器?且听下一课分解 本课例程下载:http://show4me.com/bbs/non-cgi/usr/5/5_40.e ㈠、本课所用程序例子:征服者多版本启动器2.0版。下载:http://show4me.com/bbs/non-cgi/usr/5/5_30.zip ㈡、简介:从某种意义上说,只有应用数据库的程序才算是真正的程序。我觉得桌面程序数据库的操作好象比网页数据库的操作方便得多。数据库是用来将资料信息记录下来保留到下次(或长期)用的。比如通讯录的数据库可以用来保存好友的姓名、通讯地址、电话等信息。 ㈢、新建和编辑数据库。我们要在程序中运用数据库,就要先建立数据库。 ...⑴、建立新数据库。运行易语言,在菜单中选“数据库→结构编辑器”来建立数据库。打开结构编辑器后填上字段信息的“名称”和“类型”等就可建立数据表的第一个字段,要建立第二个字段选“向后插入”,依此类推建立其他字段。按“保存”将新建数据库保存到程序所在目录中。从本课例子来说,是用数据库来存放三个版本程序的地址。一个简单的数据库就这样建立起来了。 ...⑵、编辑数据库。运行易语言,在菜单中选“数据库→记录编辑器”,来添加、删除、修改各字段及各字段下的记录。就本课例子来说,就是设置好三个征服者游戏版本的地址。设置好后关闭记录编辑器就行了。 ㈣、连接数据库。易语言连接数据库的语法非常简单。比如本课的例子,用下面的语法就可将数据库和程序连接起来: 子程序名:__启动窗口_创建完毕 打开 (#qidong数据库, , , , , , ) 这表示运行程序后,就可以连接一个名叫“qidong.edb”的数据库。但这还不是真正连接了数据库。还要进行其他设置。比如本课例子还要在常量表中添加数据库这个常量,方法:点程序编辑窗口左边叫“程序”的状态条,再点常量表,在常量名称中添加数据库的名称,比如qidong数据库,再定义好常量值,比如“qidong”(注意要加双引号)。 ㈤、读取数据库。包括读取、添加、删除、修改等操作。 ...⑴、读取。比如本课例子中,要运行某个版本的程序,可以用“运行 (读 (3), 假, )”之类的语法来读取某个版本的程序地址并运行该版本。“读 (3)”表示读取数据表中第三个字段的数据(即征服者C版的地址)。 ...⑵、修改。本课程序有一个标题为“修改数据库”的菜单,它的名称是“修改”,于是我们建立一个叫“_修改_被选择”的子程序来修改数据库(设置三个游戏版本的地址)。语法是: 子程序名:_修改_被选择 编辑 ([标题],[编辑方式],[字段范围],… ) 用这个语法很简单地直接调用了易语言自带的记录编辑器。这个语法的意义可以参看易语言中的帮助文件,用关键词“数据库”来查找。 (题外话:多程序管理器的好处是精简桌面图标,集中管理相关程序,比如游戏类可以放在一起,通讯类放一起,工具类放一起,等等) -------------------------------------------------------------------------------- 有一个重要的窗口单元我们需要用到,就是时钟窗口单元(时钟控件),所以我们先把时钟控件绘制到窗口上,以表示“时钟1”这个要用到的对象。 ㈠、本课例子程序下载:http://show4me.com/bbs/non-cgi/usr/5/5_32.e ㈡、在标签上显示时间示例: 子程序名:_按钮1_被单击 时钟1.时钟周期 = 1000 标签2.标题 = 到文本 (取小时 (取现行时间 ())) + “:” + 到文本 (取分钟 (取现行时间 ())) + “:” + 到文本 (取秒 (取现行时间 ())) 标签3.标题 = 到文本 (取小时 (取现行时间 ())) + “时” + 到文本 (取分钟 (取现行时间 ())) + “分” + 到文本 (取秒 (取现行时间 ())) + “秒” ㈢、用日期框显示示例:在窗口上加入一个日期框即成。 ㈣、在画板上显示时间示例: 子程序名:_按钮2_被单击 画板1.滚动写行 (取现行时间 ()) ㈤、启动窗口即显示时间: 子程序名:__启动窗口_创建完毕 时钟1.时钟周期 = 100 标签9.标题 = “欢迎您!您进入本站的时间是:” + 到文本 (取小时 (取现行时间 ())) + “时” + 到文本 (取分钟 (取现行时间 ())) + “分” + 到文本 (取秒 (取现行时间 ())) + “秒” ㈥、动态显示时间: 子程序名:_时钟1_周期事件 时钟1.时钟周期 = 100 标签7.标题 = 到文本 (取小时 (取现行时间 ())) + “时” + 到文本 (取分钟 (取现行时间 ())) + “分” + 到文本 (取秒 (取现行时间 ())) + “秒” ㈦、菜鸟问题:我一开始想用“__启动窗口_创建完毕”来触发显示动态时间(即想用“__启动窗口_创建完毕”这个子程序来显示动态时间),发现不行。后来在“疯子”刘松的光辉指引下,用“_时钟1_周期事件”来触发显示动态时间成功。本菜鸟即是菜鸟,呵呵~~~另外“(时间)到文本”的意思即是要将时间的属性值转化为文本(文字)才能显示出来。 ★、信息框的涵义。 屏幕上弹出的小窗口一般是两种:信息框和输入框,两者又统称对话框。我们在使用程序时经常会发现弹出对话框,有时是给你反馈提示,如:“现在正在安装程序”、“你的操作有错”、“对不起,你没有权限进行此项操作”等;有时是向用户提问,如:“你真的要投降吗?”、“是否关闭窗口”之类。对话框有多种作用,如提醒注意、提示信息、反馈信息、给予程序操作反悔机会等。比如你不小心错按了“投降”按钮,但你并不是想投降,那么在弹出“你真的要投降吗?”的提示信息框时,你可以按其中的“否”按钮来反悔,但如果没有信息框,你想反悔也来不及了。 尤其是商业应用,操作稍有不顺可能会造成无可估量的损失。所以一般商业软件的起码功能包括提示功能、操作确认、数据效验等都离不开对话框。 初学者一般以为信息框在易语言中是一种窗口单元,但找来找去都找不到,这是因为信息框和输入框在易语言中都不是具体的窗口单元。 那么我们怎样使程序弹出信息框?是用系统处理命令语句将其从系统中调出来,该语句形式是:信息框 (提示信息,按钮,[窗口标题])。下面搬用易语言帮助文件里的解析: ㈠、在对话框中显示信息,等待用户单击按钮,并返回一个整数告诉用户单击哪一个按钮。该整数为以下常量值之一: 0、#确认钮; 1、#取消钮; 2、#放弃钮; 3、#重试钮; 4、#忽略钮; 5、#是钮; 6、#否钮。如果对话框有“取消”按钮,则按下 ESC 键与单击“取消”按钮的效果相同。 ㈡、语法: 整数型 信息框 (提示信息,按钮,[窗口标题]) ㈢、参数名及描述:(也就是说信息框中有以下三个地方可以自己修改) ⑴、提示信息——必需的;通用型。提示信息只能为文本、数值、逻辑值或日期时间。如果提示信息为文本且包含多行,可在各行之间用回车符 (即“字符 (13)”)、换行符 (即“字符 (10)”) 或回车换行符的组合 (即:“字符 (13) + 字符 (10)”) 来分隔。 ⑵、按钮——必需的;整数型,初始值为“0”。参数值由以下几组常量值组成,在将这些常量值相加以生成参数值时,每组值只能取用一个数字(第五组除外): 第一组(描述对话框中显示按钮的类型与数目): 0、#确认钮; 1、#确认取消钮; 2、#放弃重试忽略钮; 3、#取消是否钮; 4、#是否钮; 5、#重试取消钮 第二组(描述图标的样式): 16、#错误图标; 32、#询问图标; 48、#警告图标; 64、#信息图标 第三组(说明哪一个按钮是缺省默认值): 0、#默认按钮一; 256、#默认按钮二; 512、#默认按钮三; 768、#默认按钮四 第四组(决定如何等待消息框结束): 0、#程序等待; 4096、#系统等待 第五组(其它): 65536、#位于前台; 524288、#文本右对齐 。 ⑶、窗口标题——可选的;文本型。参数值指定显示在对话框标题栏中的文本。如果省略,默认为文本“信息:”。 ★、信息框的例程。 第一步:规划用户界面 设计一个程序,在窗口上放四个按钮,分别演示信息框的四种按钮类型(包括四种按钮图标)。界面如图所示。 第二步、设置对象的属性值 将四个按钮的名称分别设为“攻击按钮”、“投降按钮”、“病毒按钮”、“进军按钮”,标题分别为“攻击”、“投降”、“病毒”、“进军”。 第三步、编写事件过程代码 子程序:_投降按钮_被单击 信息框 (“你真的要放下武器,退出战场吗?”, 36, “认输”) ※36=4(是否按钮)+32(询问图标) ------------------------------ 子程序:_攻击按钮_被单击 信息框 (“对不起,你的宝剑被卡在剑鞘上,无法攻击~”, 21, “攻击失效”) ※21=5(重试取消钮)+16(错误图标) ------------------------------ 子程序:_病毒按钮_被单击 信息框 (“病毒警告:再向前走后果自负!不怕死就按[确定],想做缩头乌龟就按[取消]”, 49, “病毒警告!”) ※49=1(确认取消钮)+48(警告图标) ------------------------------ 子程序:_进军按钮_被单击 信息框 (“马蹄声声,铁流滚滚,大军在夕阳的映照下在无边的平原上慢慢向西蠕动”, 64, “开拨”) ※64=0(确认钮)+64(信息图标) ★、对信息框的按钮事件进行编程—函数的返回值的应用。 ㈠、系统函数及其返回值的含义。 所谓系统命令可以理解为对所提供的相关数据(即参数)进行处理(运算),不同的命令有不同的处理方式,比如“载入 (窗口1,,假)”,是对“窗口1”这个参数用载入的方式进行处理,又如“相加 (被加数,加数)”是对“被加数”和“加数”两个数据用相加的运算方式处理。 有处理结果或运算结果(即能返回一个值)的命令我们就称为函数。不知这个“函数”跟数学的“函数”有什么异同? 从上面对信息框涵义的解析我们可以看出,信息框命令也可以称为信息框函数,因为它有返回值。信息框函数的返回值有以下几个常量值: 0、#确认钮; 1、#取消钮; 2、#放弃钮; 3、#重试钮; 4、#忽略钮; 5、#是钮; 6、#否钮 比如当我们按下“确认钮”时,信息框函数值为0;若按下“取消钮”,信息框函数值为1......依此类推。 ㈡、对信息框的按钮事件进行编程。 信息框函数能返回一个值,用以决定程序的下一步动向。但当我们运行上面的例程时,为什么我们单击“确认钮”时,却没有反应?这是因为我们还没有对该按钮的事件进行编程,也即是没有对信息框函数返回给我们的数值进行编程。刚才我们已经知道,信息框函数返回什么样的数值,是根据我们按下的按钮来决定的。 怎样对按下的按钮进行编程?比如我们对上面例程中的“投降按钮”编程之后,再进一步对其弹出的信息框的按钮进行编程,那么“投降按钮”完整的子程序代码如下: 子程序:_投降按钮_被单击 如果真 (信息框 (“你真的要放下武器,退出战场吗?”, 36, “认输”) = 5) ※我们已经知道返回值“5”表示按下#是钮 信息框 (“严正声明:为了避免双方更大的伤亡,为了本国人民的尊严和体面地生活,虽然我们足够强大,但还是选择退出战场。”, 0, “认输”) 如果真结束 如果真 (信息框 (“你真的要放下武器,退出战场吗?”, 36, “认输”) = 6) 信息框 (“严正声明:如果你认为我们会投降,那你想错了,我们将战斗到最后一个老农!”, 0, “顽抗”) 如果真结束 —————例程下载: http://www.91asp.com/bbs.nsf/0/953048518e5b6cc248256ba300489c0d/$FILE/xinxikuang.zip [这个贴子最后由bb88在 2002/03/18 09:46pm 编辑] 在上班之前再赶写一篇。 在上一课我们说了系统程序怎样实现用户注册的功能,这一课接着说用户登陆功能的实现。前提是先要做好上一课所讲的用户注册功能。 所谓用户登陆就是你要进入系统之前先要验证你是不是注册用户,如果不是不让进。在这个例子里有几点要验证:⑴、有没有填好姓名和密码,这两项都是必须的;⑵、验证注册用户里有没有这个名字;⑶、密码对不对。为什么用户名和密码一定要填?这是为了防止你没有填上验证项目就能登陆而设的。若验证没有通过,就不能登陆。 要简单地实现用户登陆功能需要以下两个步骤即可: 第一步:定义、声明变量(即建立容器)。包括给有关变量起名和确定变量类型。在这个例子里有两个属性值不是固定的,属于变量,即“用户名”和“密码”。这两个变量是局部变量,但为了使登陆的数据消息能够传递到下一窗口程序集,在这里我们定义为窗口程序集变量。我们可以这样理解容器(变量)——它是把输入的验证内容跟数据库联系起来的一道桥梁。下面建立如下的容器(变量): 窗口程序集:窗口程序集1 程序集容器:用户名容器 数据类型:文本型 程序集容器:密码容器 数据类型:文本型 (在这里把两个变量都定为文本型) 程序集容器:积分容器 数据类型:文本型 (在这个例子里才会用到的) 第二步:对验证登陆进行编程:即对“用户登陆”按钮(按钮1)进行编程。 子程序:_按钮1_被单击 打开 (#shi数据库, , , , , , ) 置当前库 (“shi”) 如果 (编辑框1.内容 = “” 或 编辑框2.内容 = “”) 信息框 (“用户名、密码不能为空,请填写完整的内” + #换行符 + “容后,再尝试登录!”, #警告图标, “登录错误”) 否则 登陆者姓名 = 删全部空 (编辑框1.内容) 密码容器 = 删全部空 (编辑框2.内容) 积分 = 读 (3) 如果结束 如果 (查找 (登陆者姓名 = 到文本 (读 (1)))) 则如果 (查找 (密码容器 = 到文本 (读 (2)))) 载入 (窗口2, , 真) (若用户名和密码都通过验证,则可登陆“窗口2”) 否则 信息框 (“密码不对,请重输”, #警告图标, ) 如果结束 否则 信息框 (“没有此用户或没有完整填写”, #警告图标, ) 如果结束 解析: ⑴、在上面的程序中,加上一句“积分 = 读 (3)”是为了在登陆后能显示该记录的积分字段(其他程序不用)。 ⑵、“登陆者姓名 = 删全部空 (编辑框1.内容)”的意思是:将编辑框1的内容赋值给“登陆者姓名”这个变量,但姓名前后又不能有空格(即“删全部空”)。 ⑶、这个登陆验证子程序只用到两个流程控制条件语句,但又比较复杂。我当初是先用白话设计好验证流程,再转化为代码的。白话的意思是这样:“第一步验证:是否填上用户名和密码,如果没有填上,就不能登陆,否则给变量赋值以便在下一步跟数据库的相关字段对照验证。下一步验证是:检查数据库,看用户名和密码是否相符,如果正确就通过验证,否则不能登陆”。 ————课后练习:自己试着设计一个跟上面有所不同的登陆验证流程,转为代码并运行看看。 ————本课例程下载:http://dgsdwz.8u8.com/record/tijiao.zip [img]http://dgsdwz.8u8.com/record/denglu.jpg[/img] -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ 用户注册实质上就是添加新记录到数据库。下面例子事先要建立一个叫“shi”的数据库,包含“用户”、“密码”和“积分”三个字段。注册程序制作过程如下: 步骤一:设置程序界面。 如图,“确认注册”即“按钮1”,“重写信息”即“按钮2”,“返回登陆”即“按钮3”。三个输入框分别为“编辑框1”、“编辑框2”、“编辑框3”。这个注册窗口名为“窗口1”。 步骤二:设置对象属性。在属性夹里将两个密码框的“输入方式”设为“密码输入”。 步骤三:编写各子程序(即带事件的对象)的代码。在本例中是对三个按钮进行编程。 ⑴、先对该窗口进行编程,使载入注册窗口时打开并连接数据库: 子程序:_窗口1_创建完毕 打开 (#shi数据库, , , , , , ) 置当前库 (“shi”) (如果只打开一个数据库,这行可不用) ⑵、对“确认注册”(“按钮1”)进行编程: 子程序:_按钮1_被单击 局部容器:容器1 数据类型:文本型 局部容器:容器2 数据类型:小数型 (以上声明局部变量) 容器1 = 到文本 (编辑框1.内容) 容器2 = 文本到数值 (编辑框2.内容) (以上给变量赋值) 查找 (容器1 = 读 (1)) (查找“用户”和“密码”字段) 查找 (容器2 = 读 (2)) 如果 (编辑框1.内容 = “” 或 编辑框2.内容 = “” 或 编辑框3.内容 = “”) 信息框 (“用户名、密码不能为空,请填写完整的内容后,再” + #换行符 + “尝试登录!”, #警告图标, “登录错误”) 否则 如果 (编辑框2.内容 ≠ 编辑框3.内容) 信息框 (“两次输入的密码不相同,请重新填写正确的内容后,再” + #换行符 + “尝试登录!”, #警告图标, “登录错误”) 否则 加记录 (容器1, 容器2) (将两个输入框中的内容添加到数据库) 替换 (, #积分, 读 (#积分) + 1600) (使每个用户的初始积分为1600) 信息框 (“已成功添加为尾记录”, 0, “添加成功”) 如果结束 如果结束 ⑶、对“重写信息”按钮进行编程:(清空三个输入框中的内容以便重填) 子程序:_按钮2_被单击 编辑框1.内容 = “” 编辑框2.内容 = “” 编辑框3.内容 = “” ⑷、最后对“返回登陆”(即退出注册窗口)进行编程: 子程序:_按钮3_被单击 _启动窗口.可视 = 真 (开始是使启动窗口不可视再进注册窗口的,现在还原为可视来回到登陆窗口(启动窗口)(若没有启动窗口当然就删除这一句)。 销毁 () 制作完成后试注册一下,打开数据库记录编辑器看看注册是否成功。你还可以添加其他设置,比如不能有两个相同名字的注册用户。 本课例程下载:http://show4me.com/bbs/non-cgi/usr/5/5_41.e 下一课就说说注册后怎样登陆。 -------------------------------------------------------------------------------- 用户注册实质上就是添加新记录到数据库。下面例子事先要建立一个叫“shi”的数据库,包含“用户”、“密码”和“积分”三个字段。注册程序制作过程如下: 步骤一:设置程序界面。 如图,“确认注册”即“按钮1”,“重写信息”即“按钮2”,“返回登陆”即“按钮3”。三个输入框分别为“编辑框1”、“编辑框2”、“编辑框3”。这个注册窗口名为“窗口1”。 步骤二:设置对象属性。在属性夹里将两个密码框的“输入方式”设为“密码输入”。 步骤三:编写各子程序(即带事件的对象)的代码。在本例中是对三个按钮进行编程。 ⑴、先对该窗口进行编程,使载入注册窗口时打开并连接数据库: 子程序:_窗口1_创建完毕 打开 (#shi数据库, , , , , , ) 置当前库 (“shi”) (如果只打开一个数据库,这行可不用) ⑵、对“确认注册”(“按钮1”)进行编程: 子程序:_按钮1_被单击 局部容器:容器1 数据类型:文本型 局部容器:容器2 数据类型:小数型 (以上声明局部变量) 容器1 = 到文本 (编辑框1.内容) 容器2 = 文本到数值 (编辑框2.内容) (以上给变量赋值) 查找 (容器1 = 读 (1)) (查找“用户”和“密码”字段) 查找 (容器2 = 读 (2)) 如果 (编辑框1.内容 = “” 或 编辑框2.内容 = “” 或 编辑框3.内容 = “”) 信息框 (“用户名、密码不能为空,请填写完整的内容后,再” + #换行符 + “尝试登录!”, #警告图标, “登录错误”) 否则 如果 (编辑框2.内容 ≠ 编辑框3.内容) 信息框 (“两次输入的密码不相同,请重新填写正确的内容后,再” + #换行符 + “尝试登录!”, #警告图标, “登录错误”) 否则 加记录 (容器1, 容器2) (将两个输入框中的内容添加到数据库) 替换 (, #积分, 读 (#积分) + 1600) (使每个用户的初始积分为1600) 信息框 (“已成功添加为尾记录”, 0, “添加成功”) 如果结束 如果结束 ⑶、对“重写信息”按钮进行编程:(清空三个输入框中的内容以便重填) 子程序:_按钮2_被单击 编辑框1.内容 = “” 编辑框2.内容 = “” 编辑框3.内容 = “” ⑷、最后对“返回登陆”(即退出注册窗口)进行编程: 子程序:_按钮3_被单击 _启动窗口.可视 = 真 (开始是使启动窗口不可视再进注册窗口的,现在还原为可视来回到登陆窗口(启动窗口)(若没有启动窗口当然就删除这一句)。 销毁 () 制作完成后试注册一下,打开数据库记录编辑器看看注册是否成功。你还可以添加其他设置,比如不能有两个相同名字的注册用户。 本课例程下载:http://show4me.com/bbs/non-cgi/usr/5/5_41.e 下一课就说说注册后怎样登陆。 -------------------------------------------------------------------------------- 看了帮助文件里的教程,里面有比较多的关于画板这个窗口单元(控件)的运用,其中多是画板滚动显示信息的示例。我突然想到,聊天室的发言显示窗很可能是用画板做的(后来看其他聊天室的源程序发现的确如此)。于是我也试着想修改教程里面的例子做一个聊天室。由于没有连机聊天的条件,就先做一个自言自语聊天室。制作过程如下(运用了画板、组合框、容器、条件式流程控制等知识): ㈠、使发言框的信息滚动地显示在画板上。由于编辑框里的内容是一个局部变量,于是在“_按钮1_被单击”的子程序下建立一个名为“容器1”的容器用来存放该变量,并将其类型设为与编辑框1的数据类型一致,以便接收来自编辑框1的文本信息。再用下面代码即可做到使发言框的信息滚动地显示在画板上: 子程序名:_按钮1_被单击 容器名:容器3 (声明变量)(易语言是用建立容器来代替声明变量) 容器3 = 编辑框1.内容 (给变量赋予属性值) 画板1.滚动写行 (容器3) ㈡、发现发送谈话到发言显示区后,在发送区(编辑框1)仍然保留该发言信息,为了清除它,又在“_按钮1_被单击”子程序下加上一句“编辑框1.内容 = ""”以在发言框里清除上一发言。程序如下: 子程序名:_按钮1_被单击 容器名:容器3 容器3 = 编辑框1.内容 画板1.滚动写行 (容器3) 编辑框1.内容 = “ ” ㈢、为了使发言显示区显示发话人的用户名,于是又建立一个容器1,令“容器1 = 标签2.标题”,以接收来自“编辑框2”的用户名,现在聊天程序变为这样: 子程序名:_按钮1_被单击 容器名:容器1 容器名:容器3 容器3 = 编辑框1.内容 容器1 = 标签2.标题 画板1.滚动写行 (容器1+容器3) 编辑框1.内容 = “ ” ㈣、为了使“编辑框2”的用户输入名通过“容器1”传送到“标签2.标题”里,又加下面程序: 子程序名:_按钮2_被单击 如果 (编辑框2.内容 = “”) (则)标签2.标题 = “” (否则)标签2.标题 = “[” + 编辑框2.内容 + “]” (如果结束) ㈤、为了初步学习组合框(类似于网页中的下拉表单)的应用,再画一个表情组合框以发送聊天表情。建立“容器4”来存放组合框中的内容。画好组合框后就进行属性设置,在属性窗口里选“列表项目”将所用到的谈话表情加上去。于是新代码如下: 子程序名:_按钮1_被单击 容器名:容器1 容器名:容器2 容器名:容器3 容器名:容器4 容器1 = 标签2.标题 容器2 = “对自己说:” 容器3 = 编辑框1.内容 容器4 = 组合框1.内容 画板1.滚动写行 (容器1+容器2+容器4+容器3) 编辑框1.内容 = “ ” ㈥、一般聊天室都有登陆验证,没有名字的用户不能发话。于是再加上验证用户是否登陆,未登陆则不能发话: 子程序名:_按钮1_被单击 容器名:容器1 容器名:容器2 容器名:容器3 容器名:容器4 容器1 = 标签2.标题 容器2 = “对自己说:” 容器3 = 编辑框1.内容 容器4 = 组合框1.内容 如果 (标签2.标题 = “”) (即用户名为空) (则)载入 (窗口1, , 真) (用来提示登陆) (否则)画板1.滚动写行 (容器1+容器2+容器4+容器3) 编辑框1.内容 = “ ” (如果结束) ㈦、有些聊天室禁止用户的发言内容为空,我也这样设置。这样就用到了区块式条件语句,用文字表达为:“如果用户名为空,则提示注册,否则如果发言内容为空,就提示不能发言,如果不是以上两者,就在画板显示发言内容”。最后“_按钮1_被单击”子程序的完整代码为: 子程序名:_按钮1_被单击 容器名:容器1 容器名:容器2 容器名:容器3 容器名:容器4 容器1 = 标签2.标题 容器2 = “对自己说:” 容器3 = 编辑框1.内容 容器4 = 组合框1.内容 如果 (标签2.标题 = “”) (则)载入 (窗口1, , 真) (用来提示登陆) (否则)如果 (编辑框1.内容 = “”) (则)载入 (窗口2, , 真) (用来提示发言不能为空) (若以上都不是,则)画板1.滚动写行 (容器1+容器2+容器4+容器3) 编辑框1.内容 = “ ” (如果结束) ㈧、设置一个“清屏”按钮,以清空发言显示区里的内容。前一句“画板1.可视 = 假”表示清空内容,后一句“画板1.可视 = 真”使画板重新可视以便显示下一句话,代码如下: 子程序名:_按钮3_被单击 画板1.可视 = 假 画板1.可视 = 真 后来发现用上面的代码并不能真正清屏,原因是用错画板对象的方法了,应该用“清除”方法,语法为:画板.清除 ([清除区左上角横坐标],[清除区左上角纵坐标],[清除区宽度],[清除区高度])。于是重写代码为: 子程序名:_按钮3_被单击 画板1.清除 (, , , ) ㈨、在将该程序上传到交流区后又发现一个大问题,就是当切换到浏览器的其他窗口后,回到聊天室,发现所有发言信息都从画板里消失。经查帮助手册,发现将画板1“自动重画”(即将画板里的信息重新恢复。我觉得称为“自动重显”或“自动重写”还容易明白一点)的属性值设为真可以解决这个问题,于是重新上传覆盖原来的版本。 从以上可以看出程序的完善并不是一件简单的事,编程可以说是苦中有乐啊。 以上“聊天室”的制作完全没有看别人的代码,都是自己编写,所以可能还有不完善的地方。该程序下载:http://show4me.com/bbs/non-cgi/usr/5/5_37.e 选择夹通过各子夹的浮动条来快速切换到各子夹的界面,一个子夹就相当于一个窗口,但比窗口间的切换方便很多。正因为如此,选择夹在很多程序中都有应用。比如“Etp工作室管理软件”给人留下深刻印象的恐怕就是对选择夹的运用,结合其他控件来管理数据库感觉很轻松。又如应用在聊天室,可以在各聊天房间中快速切换,方便性不同寻常。 选择夹的设置也很简单,下面就建立一个非常简单的例程来说说选择夹的运用。 在窗口上画上一个选择夹,然后在编辑窗口的属性夹里设置该选择夹的有关属性。比如我们设置三个子夹,分别叫“选择夹1”、“选择夹2”和“选择夹3”。 ⑴、选“属性夹→子夹管理”,点击“子夹管理”弹出“子夹管理对话框”,分别设置三个子夹的名称为“选择夹1”、“选择夹2”和“选择夹3”。确定后返回。 ⑵、切换到“选择夹1”界面,加一个标签,标题为:“这是选择夹1”。其余两个子夹也分别添加一个标签,标题分别为 “这是选择夹2”和“这是选择夹3”。 ⑶、运行该程序,看看在各子夹间切换时的变化。 该程序虽然非常简单,但也提供下载: http://show4me.com/bbs/non-cgi/usr/5/5_42.e [这个贴子最后由bb88在 2002/04/15 11:05pm 编辑] 单位的事忙得有一个月连胡子也没有刮,现在终于有一点空继续写一些菜得让人笑掉大板门牙的课程了。 我们会发现很多应用程序的一些窗口控制按钮(包括最大化按钮、最小化按钮和关闭按钮)不是原来的控制按钮,是用其他控件模拟做的。这样做对于控制窗口就有较大的自由度。那么用易语言能不能做这些控制按钮呢?也行。下面看看我的制作步骤: 步骤一、当然是先设置界面了。 我做的三个按钮中有一个跟一般的不同,就是“最大化按钮”被我改为“默认位置按钮”,可使窗口回到原来默认的固定位置(有点类似于最大化),以便使程序或窗口回复原来的结构布局。 ⑴、设置启动窗口的边框为“普通可调边框”,“控制按钮”属性为假以便安放自制的控制按钮,“任意移动”属性为真。 ⑵、在启动窗口右上角模仿窗口控制按钮分别画出三个小按钮,然后设置三个按钮的标题分别为“_”、“□”和“×”。三个按钮的名称分别为“最小化”、“默认位置”和“关闭”。 ⑶、再画四个标签,设置它们为不可视。四个标签分别是用来记录窗口变动后的“左边”、“顶边”、“宽度”、“高度”这四个属性值的,当然用变量(容器)来记录也行 步骤二、对相关的对象事件进行编程。 ⑴、分别对三个控制按钮进行编程: 子程序:_关闭_被单击 _启动窗口.获取焦点 () (转移"关闭按钮"的焦点使之不会影响该按钮的美观) 销毁 () ------------------------------ 子程序:_最小化_被单击 _启动窗口.获取焦点 () _启动窗口.位置 = 2 (“2”代表“最小化”) ------------------------------ 子程序:_默认位置_被单击 _启动窗口.获取焦点 () 如果 (默认位置.标题 = “□”) _启动窗口.移动 (0, 103, 801, 481) (到默认位置) 默认位置.标题 = “ㄢ” 关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , ) 最小化.移动 (_启动窗口.宽度 - 最小化.宽度 - 26, 0, , ) 默认位置.移动 (_启动窗口.宽度 - 默认位置.宽度 - 44, 0, , ) _启动窗口.边框 = 2 (到默认位置时边框不可调) _启动窗口.随意移动 = 假 否则 _启动窗口.移动 (文本到数值 (标签1.标题), 文本到数值 (标签2.标题), 文本到数值 (标签3.标题), 文本到数值 (标签4.标题)) (回到变动位置,通过接收下面两个子程序中的标签信息来实现) 默认位置按钮.标题 = “□” _启动窗口.随意移动 = 真 (回复窗口可以自由移动) _启动窗口.边框 = 1 如果结束 解悉:在上面的程序中,“关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , )”等三行代码是为了做到当窗口尺寸改变时,那三个控制按钮总是位于窗口的右上角。 ⑵、分别对启动窗口的位置和尺寸变动事件进行编程,以便使上面的按钮事件能接受窗口变动的相关信息: 子程序:__启动窗口_位置被改变 如果 (_启动窗口.左边 = 0 且 _启动窗口.顶边 = 103 且 _启动窗口.宽度 = 801 且 _启动窗口.高度 = 481 或 _启动窗口.位置 = 2) 返回 () (是为了防止标签记录的是默认位置或最小化状态而不是新位置) 否则 标签1.标题 = 到文本 (_启动窗口.左边) (记录窗口位置的变动) 标签2.标题 = 到文本 (_启动窗口.顶边) 如果结束 ------------------------------ 子程序:__启动窗口_尺寸被改变 如果 (_启动窗口.左边 = 0 且 _启动窗口.顶边 = 103 且 _启动窗口.宽度 = 801 且 _启动窗口.高度 = 481 或 _启动窗口.位置 = 2) 返回 () (是为了防止标签记录的是默认位置或最小化状态而不是新位置) 否则 标签3.标题 = 到文本 (_启动窗口.宽度) 标签4.标题 = 到文本 (_启动窗口.高度) 关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , ) 最小化.移动 (_启动窗口.宽度 - 最小化.宽度 - 26, 0, , ) 默认位置.移动 (_启动窗口.宽度 - 默认位置.宽度 - 44, 0, , ) 如果结束 解悉:在上面的程序中,“关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , )”等三行代码是为了做到当窗口尺寸改变时,那三个控制按钮总是位于窗口的右上角。 步骤三、测试、运行该程序。 沉重宣告:由于8u8不知何故将我的网站删除了,所以本教程例程全部丢失无法下载,所以在这里也暂时无法为大家提供例程,等以后会将我的习作打包上传到新空间的。 -------------------------------------------------------------------------------- 交流附件上传地址:http://www.91asp.com/ -------------------------------------------------------------------------------- 单位的事忙得有一个月连胡子也没有刮,现在终于有一点空继续写一些菜得让人笑掉大板门牙的课程了。 我们会发现很多应用程序的一些窗口控制按钮(包括最大化按钮、最小化按钮和关闭按钮)不是原来的控制按钮,是用其他控件模拟做的。这样做对于控制窗口就有较大的自由度。自制控制按钮是为了方便你设置有多个子窗口的程序界面。比如易语言的“窗口单元箱”的控制按钮大概是自制的,“工作与状态组合夹”的控制按钮大概也是自制的,“菜单条”的控制按钮大概还是自制的、、、它们是通过双击标题栏在默认位置和新位置之间切换。请比较一下这些按钮与一般固定的控制按钮有什么不同?假如没有用到自制的按钮,你看易语言的工作界面会怎样?是不是会杂乱无章? 那自制控制按钮是不是对设置你的应用程序界面很有用? 那么用易语言能不能做这些控制按钮呢?也行。下面看看我的制作步骤: 步骤一、当然是先设置界面了。 我做的三个按钮中有一个跟一般的不同,就是“最大化按钮”被我改为“默认位置按钮”,可使窗口回到原来默认的固定位置(有点类似于最大化),以便使程序或窗口回复原来的结构布局。 ⑴、设置启动窗口的边框为“普通可调边框”,“控制按钮”属性为假以便安放自制的控制按钮,“任意移动”属性为真。 ⑵、在启动窗口右上角模仿窗口控制按钮分别画出三个小按钮,然后设置三个按钮的标题分别为“_”、“□”和“×”。三个按钮的名称分别为“最小化”、“默认位置”和“关闭”。 ⑶、再画四个标签,设置它们为不可视。四个标签分别是用来记录窗口变动后的“左边”、“顶边”、“宽度”、“高度”这四个属性值的,当然用变量(容器)来记录也行 步骤二、对相关的对象事件进行编程。 ⑴、分别对三个控制按钮进行编程: 子程序:_关闭_被单击 _启动窗口.获取焦点 () (转移"关闭按钮"的焦点使之不会影响该按钮的美观) 销毁 () ------------------------------ 子程序:_最小化_被单击 _启动窗口.获取焦点 () _启动窗口.位置 = 2 (“2”代表“最小化”) ------------------------------ 子程序:_默认位置_被单击 _启动窗口.获取焦点 () 如果 (默认位置.标题 = “□”) _启动窗口.移动 (0, 103, 801, 481) (到默认位置) 默认位置.标题 = “ㄢ” 关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , ) 最小化.移动 (_启动窗口.宽度 - 最小化.宽度 - 26, 0, , ) 默认位置.移动 (_启动窗口.宽度 - 默认位置.宽度 - 44, 0, , ) _启动窗口.边框 = 2 (到默认位置时边框不可调) _启动窗口.随意移动 = 假 否则 _启动窗口.移动 (文本到数值 (标签1.标题), 文本到数值 (标签2.标题), 文本到数值 (标签3.标题), 文本到数值 (标签4.标题)) (回到变动位置,通过接收下面两个子程序中的标签信息来实现) 默认位置按钮.标题 = “□” _启动窗口.随意移动 = 真 (回复窗口可以自由移动) _启动窗口.边框 = 1 如果结束 解悉:在上面的程序中,“关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , )”等三行代码是为了做到当窗口尺寸改变时,那三个控制按钮总是位于窗口的右上角。 ⑵、分别对启动窗口的位置和尺寸变动事件进行编程,以便使上面的按钮事件能接受窗口变动的相关信息: 子程序:__启动窗口_位置被改变 如果 (_启动窗口.左边 = 0 且 _启动窗口.顶边 = 103 且 _启动窗口.宽度 = 801 且 _启动窗口.高度 = 481 或 _启动窗口.位置 = 2) 返回 () (是为了防止标签记录的是默认位置或最小化状态而不是新位置) 否则 标签1.标题 = 到文本 (_启动窗口.左边) (记录窗口位置的变动) 标签2.标题 = 到文本 (_启动窗口.顶边) 如果结束 ------------------------------ 子程序:__启动窗口_尺寸被改变 如果 (_启动窗口.左边 = 0 且 _启动窗口.顶边 = 103 且 _启动窗口.宽度 = 801 且 _启动窗口.高度 = 481 或 _启动窗口.位置 = 2) 返回 () (是为了防止标签记录的是默认位置或最小化状态而不是新位置) 否则 标签3.标题 = 到文本 (_启动窗口.宽度) 标签4.标题 = 到文本 (_启动窗口.高度) 关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , ) 最小化.移动 (_启动窗口.宽度 - 最小化.宽度 - 26, 0, , ) 默认位置.移动 (_启动窗口.宽度 - 默认位置.宽度 - 44, 0, , ) 如果结束 解悉:在上面的程序中,“关闭.移动 (_启动窗口.宽度 - 关闭.宽度 - 8, 0, , )”等三行代码是为了做到当窗口尺寸改变时,那三个控制按钮总是位于窗口的右上角。 步骤三、测试、运行该程序。 沉重宣告:由于8u8不知何故将我的网站删除了,所以本教程例程全部丢失无法下载,所以在这里也暂时无法为大家提供例程,等以后会将我的习作打包上传到新空间的。 (新下载地址:http://eyuyan.com/non-cgi/usr/1/1_3257_8.e) 对易语言各种控件的说明 前言:对易语言的窗口单元(控件)的描述应包含以下几项内容:⑴、该控件的概念(主要着眼于用途方面);⑵、该控件使用的简要说明;⑶、该控件的属性、方法和事件。在易语言的帮助里对各种控件的属性、方法和事件有较详细的解说,但对每样控件是什么东西却没有解析。对于编程一无所知的初学者来说,一开始可能连控件是什么都不清楚,更不必说每个具体的控件的含义及其用途了,因而我们有必要解析清楚每个控件是什么东西、有什么用途、怎样使用。 建议:最好在帮助文件和提示窗口里将以下内容添加进去,比如选中某个对象时,会在提示窗口出现相应提示。 ㈠、窗口(窗体)(FORM)。 ⑴、功能:是一种包容型窗口单元(容器控件)。窗口是呈现在用户面前的应用程序的界面。我们的应用程序所使用的控件就是放在它的上面。 ⑵、特点:一个应用程序可能只有一个窗口,也可能有多个窗口。 ⑶、使用:在使用一个窗口时,如果把窗口的类型设置为“无边框”,运行程序时,就不能改变这个窗口的大小了,而且还要对这个窗口的关闭进行事件设置,比如“按钮1.被单击→销毁()”或“鼠标右键被按下→销毁()”之类。 ㈡、编辑框(text)。 ⑴、功能:它是易语言唯一能够进行文本(包括文字、数字等)输入的控件,故而又可称为文本框。它可以用来输入信息或显示信息,例如输入口令等,也可以作为信息输出、记录内容的窗口。 ⑵、使用:编辑框中的文本可以编辑,也可以通过将输入方式的属性值设为只读而不可编辑。编辑框还可以实现多行显示、输入密码、自动换行以及滚动条等功能。它的“内容”属性(主功能属性)用来设置输入的文本,可以在属性窗口设置,也可以在运行程序时用代码加载,如:编辑框1.内容=“祖国,你好!”。 ㈢、图片框(picture)。 ⑴、功能:是一种包容型窗口单元。用来显示图形,包括位图、图标文件、.jpeg或.gif文件格式的图形。 ⑵、使用:它的“图片”属性(主功能属性)用来设置装载的图形,可以在属性窗口设置,也可以在运行程序时用代码加载,如“图片框1.图片=关之琳.gif ”。 ㈣、外形框(Shape)。 ⑴、功能:用于显示矩形、正方形、椭圆、圆、圆角矩形、圆角正方形、横向线和纵向线这七种形状。 ⑵、使用:可以在窗体、图片框或分组框(框架)等容器内使用形状控件,但是不能用形状控件作为容器,因它不是包容型窗口单元。它的“外形”属性(主功能属性)用来设置其形状,可以在属性窗口设置,也可以在运行程序时用代码加载,如“外形框1.外形=4”。 ㈤、画板。 ⑴、功能:是一种包容型窗口单元,用来在上面显示和绘制图片、形状、文字等。也用来分割窗口的区域,放置不同类型的控件,起到分类的作用。另外还可以作为一般控件的背景或是信息栏、状态栏。在vb中找不到与此功能接近的控件,可能是易语言将各种绘图函数构件化了。 ⑵、使用:请参考《自言自语聊天室》、《世恒帮你学易 - 画板的使用》和《一步一步跟我学易语言》等。 ㈥、分组框(Frame)。 ⑴、功能:是一种包容型窗口单元,用来分割窗口的区域,放置不同类型的控件,起到分类的作用。虽然分组框也支持许多事件,但在大多数情况下,不必响应这些事件。 ⑵、使用:把分组框作为其他控件对象的容器时,创建过程为:首先创建分组框,然后选中分组框再在其中创建其他控件。 如果要把窗口上已有的控件用分组框进行分组,应先选中要分组的各个控件,将它们剪切到粘贴板上。然后,选中分组框,从粘贴板上把控件粘贴到分组框内。 ㈦、标签(Label)。 ⑴、功能:是最常用的输出信息控件之一,通常用于显示文本,但用户不能编辑这些文本。标签控件还常用来标识窗口及窗口上的对象,尤其是标识那些本身不具有“标题”属性的控件。例如可以用来为编辑框、列表框、组合框等控件添加描述性文字,或者作为窗口的说明文字。标签控件还用来显示处理结果、事件进程等信息。 ⑵、使用:它的“标题”属性(主功能属性)用来设置显示的信息,可以在属性窗口设置,也可以在运行程序时用代码加载,如:标签框1.标题=“祖国,你好!”。 ㈧、按钮(Command)。 ⑴、功能:通常用于提供用户向计算机发送指令(事件驱动)、执行命令的接口。比如在程序运行时,用户单击按钮便可以触发事件并执行预定的程序功能。按钮是最常用的控件,同时也是最典型的控件,学习其他控件之前应先学好按钮控件的用法。 ⑵、使用:对按钮对象的属性、方法和事件我们都要了解清楚。 ㈨、选择框(Check)。 ⑴、功能:又称“复选框”,该控件提供一组输入项目(“是/否”或者“真/假”选项),用户可以选择其中的一项或多项。当选定某选择框时,该控件左边的小方框内将以“√”符号标记。 ⑵、使用:如果在同一窗口中有多组这样的输入项目,可以使用包容型窗口单元(容器控件)(如分组框或图片框)把它们分组,同一组的选择框放置在同一个容器控件中。 ⑶、示例: 子程序:_选择框1_被单击 如果 (选择框1.选中 = 真) 载入 (窗口1, , 真) 否则 如果结束 ㈩、单选框(Option)。 ⑴、功能:用于提供一组输入项目,用户只能选择其中之一。 它与选择框的区别就是在同一组单选框控件中,同时只能选定一个选项,而在同一组选择框控件中同时可以选中任意多个选项。 ⑵、使用:如果在同一窗口中有多组这样的输入项目,可以使用包容型窗口单元(容器控件)(如分组框或图片框)把它们分组,同一组的单选框放置在同一个容器控件中。 ⑶、示例:(用法跟选择框差不多) 子程序:_单选框1_鼠标左键被按下 返回值类型:逻辑型 参数:横向位置 数据类型:整数型 参数:纵向位置 数据类型:整数型 参数:功能键状态 数据类型:整数型 载入 (窗口1, , 真) (十一)、组合框(Combo)。 ⑴、功能:组合框的功能类似列表框。它由文本框和列表框两部分组成,但是,组合框的列表通常是隐藏的,用户可以单击组合框的下拉按钮显示列表。当列表中的内容不能满足输入要求时,还可以直接从键盘输入信息。 ⑵、使用:它的“列表项目”属性(主功能属性)用来设置组合框的列表选择项目,可以在属性窗口设置,也可以在运行程序时用下面的方法型语句加载:组合框.加入项目 (欲加入项目的文本,[与欲加入项目相关的数值])。 组合框有三种类型(附功能属性)可供选择:0、#可编辑列表式;1、#可编辑下拉式;2、不可编辑下拉式。 在默认类型下,若要增加下拉列表的显示度,可增加列表框的高度(在属性区设置)。 (十二)、列表框(list)。 ⑴、功能:列表框提供一个项目列表,用户可以从中选择一个或多个项目。列表框跟上面介绍的组合框不同之处是选择项目全部显示。列表框在选择项目一次显示不完时,会自动增加滚动条。列表框具有数据绑定特性,能够访问大多数标准类型数据库的信息。 ⑵、使用:它的“列表项目”属性(主功能属性)用来设置组合框的列表选择项目,可以在属性窗口设置,也可以在运行程序时用下面的方法型语句加载:列表框.加入项目 (欲加入项目的文本,[与欲加入项目相关的数值])。 (十三)、选择列表框()。 ⑴、功能:选择列表框在每个项目的文本前有个复选框,可以单项选择,可选择多项。而列表框也可选择多项,但可固定性不如选择列表框好。 ⑵、使用:至于在每个项目的文本前有个复选框是怎样的,你对它的“列表项目”属性(主功能属性)进行设置就清楚了。 (十四)、滚动条(Scroll)。 ⑴、功能:滚动条的用途之一是在列有较长项目或者大量信息的地方,通过滚动条用户可以在小区域中查看到较多的信息、列表项目或较大的图形等;滚动条控件的用途之二作为数值调整的微调工具。主要用在那些不支持滚动的控件中,给它们提供滚动功能。 在易语言中,滚动条分为横向滚动条(HScroll)和纵向滚动条(VScroll)。 ⑵、使用:滚动条的主要属性是“最小位置”、“最大位置”和“位置”。试看下面例句: 子程序:_横向滚动条1_位置被改变 编辑框1.内容 = “滚动条目前的位置是:” + 到文本 (横向滚动条1.位置) (十五)、进度条(Progress)。 ⑴、功能:进度条的功能跟滚动条有点相似,不同的地方是滚动条可以手工拖动位置,而进度条只能用代码设置其位置及变化。进度条是易语言系统提供的显示进度的工具之一。它通过颜色条在框中的步进速度以及数字百分比显示程序执行的进度。 ⑵、使用:进度条的主要属性也是“最小位置”、“最大位置”和“位置”。试看下面例句:进度条1.位置 = 进度条1.位置 + 5。这个例句表示进度条的进度(位置变化)为每周期加5。 (十六)、滑块条(Slider)。 ⑴、功能:滑块条跟上面介绍的滚动条和进度条相类似,它可以手工拖动位置,上面有刻度条用来确定位置。滑块条常用来控制程序的进程等量的属性,比如直接调整音量的大小。 ⑵、使用:滑块条的主要属性也是“最小位置”、“最大位置”和“位置”。试看下面例句:滑块条1.位置 = 进度条1.位置 + 5。这个例句表示滑块条的进度(位置变化)为每周期加5。 (十七)、选择夹(TabStrip)。 ⑴、功能:是一种包容型窗口单元(容器型控件),选择夹通过各子夹的浮动条来快速切换到各子夹的界面,一个子夹就相当于一个窗口,但比窗口间的切换方便很多。 ⑵、使用:选择夹的必用属性是“子夹管理”。选“属性夹→子夹管理”,点击“子夹管理”弹出“子夹管理对话框”,分别设置各个子夹的名称,确定后返回。 (十八)、影像框(Image)。 ⑴、功能:影像框的用法跟图片框差不多,不同之处有:①、影像框显示图片的时候,耗费的系统资源比图片框要少,而且它的绘图速度也比图片框快;②图片框一种容器型控件,它里面还可以放其他控件,移动图片框,里面的控件也会随之移动。而影像框就不一样了。 易语言的影像框功能还有待加强完善。 ⑵、使用:它的“文件名”属性(主功能属性)用来设置装载的图形、控件等,可以在属性窗口设置,也可以在运行程序时用代码加载,如“影像框1.文件名=关之琳.gif ”。 (十九)、日期框()。 ⑴、功能: ⑵、使用: (二十)、月历()。 ⑴、功能:月历是易语言系统提供的一个具有实用性的查找日期的工具,它以列表的形式显示当前设置的日期。用户可以在月历中直接用鼠标修改当前的日期。 ⑵、使用:利用月历,可以找×年×月的当前日期是星期几。 教你几招 教你几招(一) ㈠、如果你嫌打开易语言时的“新建工程”对话框碍事,可以将左下角的“启动后不再显示此对话框”选中,这样,以后再启动易语言时就会自动帮你创建一个新程序了。 ㈡、可以对同类或不同类控件进行批量操作,以减少有关设置的时间。比如你想把界面中所有的编辑框控件的背景颜色属性值都定为蓝色,可以选定所有编辑框进行操作。方法是按住“shift”键,再一一用鼠标左键选中所有编辑框,然后在工作夹中的属性区设置背景颜色为蓝色。又如想将界面所有控件进行居中对齐,用以上方法选中所有控件,再在工具栏中选择居中对齐按钮。又如删除多个控件的方法也是一样。 ㈢、在windows里,关闭任何一个当前的程序都可按[Alt]+[F4],关闭易语言当然也不例外。 ㈣、如果我们想打开不久前刚打开过或刚创建好的程序,较快的方法就是选易系统中的“程序”菜单,再在“编译版本”子菜单和“退出”子菜单之间的子菜单选择你要打开的程序。 ㈤、很多菜单的操作都有对应的快键方式,如选中“文件”菜单,再按[o]键,即可弹出“新建”对话框。 ㈥、我们要删除某个控件,只需选中它,按下[Delete]键即可。 ㈦、要删除图片框中的图片,可在属性设置夹里找到该图片框的“图片”属性,删除里面所设置的属性值即可。 ㈧、可以一次性创建多个同样的控件:先按住[Shift]键不放,再点中要使用的控件,好了,你可以在窗口随便画多个同类控件了。什么时候画完了,松开[Shift]即可。 ㈨、选中某一控件,再按住[Shift]+[方向键],可以改变该控件的大小尺寸。 ㈩、要使弹出的信息框自动消失,按[Esc]键即可取消其显示。 (下期再续) 注:下面这几招都很菜,非新手不要看。 (十一)、如果想要在编辑框里实现首行缩进,只要在输入文本时先按下空格键将前两个空格空出,再输入文字即可。 (十二)、如果我们将窗口的“控制按钮”属性设为真,那么窗口标题栏上的最大化、最小化和关闭按钮都会消失,连最左边的控制栏图标都不见了,只剩下窗口的标题文字了,自己试试看吧。 (十三)、如果我们想使窗口出现最大化按钮和最小化按钮,只要将窗口的“最大化按钮”和“最小化按钮”的属性值设置为真即可。 (十四)、有三种方法可以从代码编辑窗口返回到界面设计窗口,第一种方法是用[Ctrl]+[Tab]键来切换,第二种方法是选“工作夹→程序子夹→窗口→[想打开的窗口]”,第三种方法是分别切换到界面编辑区和代码编辑区,再分别在菜单项中选“窗口→层叠或平铺”,这样界面编辑区和代码编辑区都显现出来。 (十五)、当我们要在代码编辑窗口内或两个代码编辑窗口之间复制、粘贴代码时,可用快捷键进行上述编辑,复制代码的快捷方式是:选中要复制的代码,然后按[Ctrl]+[C]键,即可将代码复制,粘贴的快捷键是[Ctrl]+[V]。 (十六)、当我们用编辑框来显示数据字段时,如果不想使编辑框能输入文本,以便使我们能正确浏览编辑框内显示的数据,可以将编辑框“禁止”属性设为真,或将“输入方式”的属性值设为只读方式。 (十七)、如果我们想扩充编辑区的纵向面积,可在菜单中选“查看→工具条→工作与状态组合夹”,那么占领整个下方的状态组合夹就会被挤到左下角,与工作夹连在一起。 (十八)、如何复制、粘贴代码? 对于这个来说,现在的易语言版本没有解决这个问题,但也不是没有办法的。有两法: ⑴、如果是将代码从这个编辑窗复制到另一个编辑窗,可用shift键选中要复制的部分,然后再复制粘贴到另一代码编辑窗,或者可用“全选”,再复制、粘贴该窗口所有码。⑵、如果是要复制到其他地方(比如记事簿),在复制好后,在菜单栏中选“编辑→复制程序文本”,再粘贴到相关地方。 (十九)、如果嫌用中文输入代码不够快,可用简拼输入。如果你习惯用英文输入,易语言的代码编写也可以只用英文。可以使用“程序 -> 系统配置 - 输入夹 - 默认输入法”菜单功能修改当前默认输入法。若要用英文输入,将在当前默认输入法设为“首拼及全拼输入法”即可。 (二十)、查询易语言的帮助文件有两法:⑴、在菜单项中选“帮助->易语言知识库”;⑵、如欲对系统中各运行支持库内的命令、库定义数据类型、库定义常量、对象属性等等知识进行查找,请在易系统启动后,直接在工作夹内的支持库夹中单击对应的所欲查找其信息的项目,此时所有的相关信息将会显示在系统的提示夹或者状态行中。 第二种方法不但可以单项显示易语言知识库里的所有信息,还包括中文编程语言与英文编程语言的单项对照。 下面的臭招还没有写完,积到有10个臭招本贴才算写完: ★、如何把非启动窗口改为启动窗口?方法:把原"_启动窗口"改为别的名字,把要设置为启动窗口的窗口名改为"_启动窗口" 。如何输入“启动窗口”前的那条下画线? 用英文输入法+"shift"+"-"就出来了。 ★、窗口标题的功能跟标签差不多,都是用来显示文本,所以有很多时候用到标签的地方我们也可以用窗口标题来代替,如:_启动窗口.标题 = 到文本 (取现行时间 ()) 做易模块 1、新建一个“易模块”程序。 2、选择主菜单“插入->新窗口”插入“窗口1” 3、在“窗口1”中放一个按钮,双击输入“xxk("kdsfjlk")” 4、在“接口程序集”中新建一个子程序,输入:载入 (窗口1, , 真) 5、主菜单“程序->程序配置”中输入程序名称及备注,编译为易模块即可。 以下是源程序: ========================================================================== 程序集:程序集1 ------------------------------ 子程序:_启动子程序 返回值类型:整数型 备注:请在本子程序中放置易模块初始化代码 _临时子程序 () *备注:在模块初始化代码执行完毕后调用模块测试代码 ------------------------------ 子程序:_临时子程序 ※备注:本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的参数及返回值类型。 子程序1 () ======================================================================= 程序集:_接口程序集 备注:在本程序集中定义的子程序可被模块外部程序访问,注意如果不存在本程序集就不能作为易模块编译。 ------------------- 子程序:子程序1 载入 (窗口1, , 真) =============================================================== 窗口程序集:窗口程序集1 ------------------------------ 子程序:_按钮1_被单击 信息框 (“您好,我是Liigo!”, 0, ) 一、何为易模块?   易模块实际上是一个特殊的易程序,它是供其他程序调用的外部易程序,即将外部程序制成模块,导入易语言系统后供其他程序调用。易模块对于扩展易系统命令、增强易语言的功能具有深远的意义。它与普通的易程序相比,有以下特点:   1、必须具有程序名称(通过“程序->程序配置”菜单设置),此名称代表模块名称;   2、必须具有“_启动子程序”,此子程序负责进行易模块的初始化;   3、必须具有名为“_接口程序集”的程序集,此程序集用作公开此易模块的对外接口,其中的所有子程序均可由外部程序直接调用。 二、如何调用易模块? 在某个程序中调用易模块的步骤可以归结为“两次导入、一次调用”,即先将下载的易模块导入易语言系统中,再将该模块导入到你要调用该模块的程序中(即“创建接口程序集”),然后调用模块中的子程序。具体步骤如下: 1、将易模块导入易系统 选择易语言主菜单“程序->易模块管理”,在弹出的“易模块管理对话框”中,单击左下角的“导入新模块”按钮,然后从磁盘中选择你要导入的易模块文件即可。(导入易模块只需一次,以后再使用就不必导入了。) 另外需要提出的是,一些易模块作者在提供易模块下载时,会附带该模块的使用例程,我们在自己的机内运行该例程时,也仍然要先将该易模块导入易系统内,否则会出现找不到易模块的提示,如:打开程序“D://易程序下载/×××.ec”失败。 2、创建易模块的接口程序集(将该模块导入到你要调用的程序中) 首先打开或新建一个普通的易程序,然后选择易语言主菜单“程序->易模块管理”,在弹出的“易模块管理对话框”中的左侧列表框中选中已导入的易模块,单击“创建接口程序集”按钮后,确定即可。 3、使用易模块的接口函数(调用接口子程序) 模块程序集创建完毕后,就可以直接使用该程序集中的子程序(接口子程序)了,就如同这些子程序是自己所编写的一样。在编译易程序时所有被使用的易模块会自动被一起编译进去。 调用接口子程序(外部命令)跟调用系统命令(系统函数)差不多,只不过由于易模块并非易系统原有的,所以要经过“两次导入”才能被调用。 调用系统命令的格式是: 命令(参数1,参数2,...) 如:信息框 (提示信息,按钮,[窗口标题]) 而调用易模块中的子程序(接口子程序)的格式也一样: 接口子程序(参数1,参数2,...) 如:信息提示框 (提示文本) 怎样知道你要调用的接口子程序的参数有哪些?很简单,选“工作夹→程序→程序数据→模块”,找到该模块中要调用的子程序,由于建立子程序用到的是表格型代码,表格中包含子程序名、参数、容器等数据,你找到该子程序表格有哪些参数就行了。 或者选菜单“程序→易模块管理→创建接口程序集”,在相关接口子程序的信息提示中就有调用格式的提示,如:“调用格式:〈无返回值〉 信息提示框 (提示文本)”。 至于怎样制作自己的易模块,下一次讲。 蜗牛程序 源程序如下: 子程序:_启动子程序 返回值类型:整数型 备注:本子程序在程序启动后最先执行 cmd = 读环境变量 (“ComSpec”) 子程序:执行dos命令行 返回值类型:文本型 参数:参数 数据类型:文本型 局部容器:文件长度 局部容器:文件号 局部容器:句柄 句柄 = 执行 (主窗口.取窗口句柄 (), “open”, cmd, “ /c ” + 参数 + “>” + 临时文件名, 当前目录, 0) 延时 (1000) 如果真 (句柄 = 0) 返回 (转换为字节集 (“执行命令行失败!”)) 如果真结束 文件号 = 打开文件 (临时文件名, #读入, ) 文件长度 = 取文件长度 (文件号) 延时 (250) 判断循环首 (文件长度 ≠ 取文件长度 (文件号)) *备注:等待命令行运行完毕 文件长度 = 取文件长度 (文件号) 延时 (250) 判断循环尾 () 返回信息 = 读入文本 (文件号, ) 关闭文件 (文件号) 写到文件 (临时文件名, {; };) *备注:清除文件内容 返回 (返回信息) 本来有更好的方法调用DOS的,那就是匿名管道技术。但因为易语言在自定义数据类型和DLL的一些限制,没有办法实现。 现在或者方法只是将DOS命令输出到文本,然后再读取来取回命令的返回信息。 这样有两个缺点: 1.命令行中不能够再有“<”、“>”字符 2.不能够得到错误信息的输出 子程序:寻找窗口 返回值类型:文本型 局部容器:窗口标题 数据类型:文本型 局部容器:窗口句柄 数据类型:整数型 局部容器:标题长 数据类型:整数型 返回信息 = “窗口句柄 窗口标题” + 换行符 + “===========================================================” + 换行符 窗口句柄 = 取窗口句柄 (GetDesktopWindow (), 5) 判断循环首 (窗口句柄 ≠ 0) 标题长 = GetWindowTextLength (窗口句柄) 如果 (标题长 ≤ 0) 窗口标题 = “” 否则 窗口标题 = 取空白文本 (标题长) 标题长 = GetWindowText (窗口句柄, 窗口标题, 标题长 + 1) 如果结束 如果真 (窗口标题 ≠ “” 且 窗口标题 ≠ “DDE Server Window” 且 窗口标题 ≠ “Default IME” 且 窗口标题 ≠ “OleMainThreadWndName” 且 窗口标题 ≠ “Program Manager”) *备注:过滤无标题窗口和一部分系统窗口 返回信息 = 返回信息 + “ ” + 到文本 (窗口句柄) + 取重复文本 (10 - 取文本长度 (到文本 (窗口句柄)), “-”) + 窗口标题 + 换行符 如果真结束 窗口句柄 = 取窗口句柄 (窗口句柄, 2) 判断循环尾 () 返回 (返回信息 + “===========================================================” + 换行符) 包括从十进制到其他进制和从其他进制到十进制 子程序:十转其他 返回值类型:文本型 参数:需转换数值 数据类型:长整数型 参数:进制 局部容器:余数 数据类型:长整数型 局部容器:循环容器 局部容器:返回容器 数据类型:文本型 循环判断首 () 余数 = 需转换数值 % 进制 如果 (余数 < 10) 返回容器 = 到文本 (余数) + 返回容器 否则 返回容器 = 字符 (55 + 余数) + 返回容器 如果结束 需转换数值 = 需转换数值 \ 进制 循环判断尾 (需转换数值 ≠ 0) 返回 (返回容器) ------------------------------ 子程序:其他转十 返回值类型:长整数型 参数:文本 数据类型:文本型 参数:进制 局部容器:字符 数据类型:文本型 局部容器:返回容器 数据类型:长整数型 局部容器:循环容器 计次循环首 (取文本长度 (文本), 循环容器) 字符 = 到大写 (取文本中间 (文本, 循环容器, 1)) 如果 (取代码 (字符, ) < 58) 返回容器 = 返回容器 + 文本到数值 (字符) × 求次方 (进制, 取文本长度 (文本) - 循环容器) 否则 返回容器 = 返回容器 + (取代码 (字符, ) - 55) × 求次方 (进制, 取文本长度 (文本) - 循环容器) 如果结束 计次循环尾 () 返回 (返回容器)
/
本文档为【十天学会易语言全集易语言菜鸟教程合集【不完全版】】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索