|
|
[这个贴子最后由bb88在 2002/04/30 01:24pm 编辑]
在编写课程时发现,有一部分初学者对于流程控制命令的代码搞不懂,比如条件语句,它里面的连接虚线是什么意思?现在就以条件流程控制命令为例来说明。
㈠、“如果—就—否则”语句。
“如果—就—否则”语句的意思是“如果...就做...否则就...”,也就是符合比较式里说的条件时做某事,不符合该条件就做另外一件事。
该语句的格式如下:
如果(条件式) 就
程序语句一
否则
程序语句二
如果结束
意思即是:“如果符合该条件式,就执行程序语句一,否则就执行程序语句二,然后结束该流程”。这个语句使程序有两个可供选择的执行路径,无论选择那个方向进行,程序都在共同之处结束。用下面的图例表示为:


如果我们理解了这个图例,也就不难理解易语言流程控制代码中虚线连接的意思了,跟上面图例的线条连接的意思是一样的。易语言代码示例如下:


所以我们编程时要分清该语句究竟是哪种语句的。比如我们要在上面的“程序语句一”中向前或向后插入“程序语句三”,那么当符合该条件式时,就会同时执行“程序语句一”和“程序语句三”。
请比较一下下面两个流程控制的编写有什么不同。流程一:“如果密码≠“123”,则提示‘不能登陆’,并且返回原处,否则提示‘登陆成功’”。流程二:“如果密码≠“123”,则提示‘不能登陆’,否则返回原处,并且提示‘登陆成功’”。
㈡、“如果—就”语句。(即“如果真”语句)
该语句的格式为:
如果(条件式) 就
程序语句
如果结束
用图例表示为:


这个流程中,程序只有一个运行方向,也就是当符合条件时才执行。至于在易代码中怎样表示请看该流程图,这里就不画出来了。例句:“如果你敢删我的贴,我就打断你的腿”。
总结:我们编写有关流程控制的代码时,可先用平常的语言表达出来,并结合流程图来规划,然后再转化为代码。
关于注册命令的使用
写注册项()命令的使用方法
调用格式: 〈逻辑型〉 写注册项 (根目录,全路径注册项名,欲写入值)
英文名称:SaveRegItem
在 Windows 注册表中保存或建立指定的注册表项。如欲写入注册项默认值,请在项目名后加“\”号,如“test\”。成功返回真,否则返回假。与“写注册表项”命令不同的是本命令可以写任意位置处的注册表项。本命令为中级命令。
参数的名称为“根目录”,类型为“整数型(int)”。可以为以下常量值之一: 1、#根类; 2、#现行设置; 3、#现行用户; 4、#本地机器; 5、#所有用户。
参数的名称为“全路径注册项名”,类型为“文本型(text)”。
参数的名称为“欲写入值”,类型为“通用型(all)”。参数值指定欲写入到指定注册表项中的值,只能为数值、文本或者字节集,否则命令将失败。
其实:#根类----HKEY_CLASSES_ROOT (根目录=1)
#现行设置----HKEY_CURRENT_CONFIG (根目录=2)
#现行用户----HKEY_CURRENT_USER (根目录=3)
#本地机器---HKEY_LOCAL_MACHINE (根目录=4)
#所有用户---HKEY_USERS (根目录=5)
根目录可以用1、2、3、4、5数字写入,应该用哪一个根目录不可以乱来,必须在了解注册表的情况下才能操作,或在有关资料的指导下进行。全路径注册项名组成:路径(不含根目录)+注册项,欲写入值:可以是字符串。如要将一个程序加入注册表使其在开机后自动运行,那就是要把字符串“文件所在目录路径+文件名”写入到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run中,实际书写方法如下:
写注册项(4,“Software\Microsoft\Windows\CurrentVersion\Run”
“c:\wly\文件名.exe”)(注:Run是注册项)
如果要删除,只要写:
删除注册项(4,“Software\Microsoft\Windows\CurrentVersion\Run”)
即可。
该命令的特点是可以在注册表任何地方写入,即可以将给定的路径表达出来,而下面这个命令是为了方便使用,也只能写在一个相对固定的位置,方便易语言内部使用。如内部程序需要写注册项时,一般可以用这一个:
调用格式: 〈逻辑型〉 写注册表项 (程序名称,节名称,注册表项名称,欲写入值)
英文名称:SaveSetting
在 Windows 注册表中保存或建立指定的注册表项设置值。成功返回真,否则返回假。本命令为初级命令。
参数的名称为“程序名称”,类型为“文本型(text)”。包含应用程序的名称,用作在注册表中的入口名。
参数的名称为“节名称”,类型为“文本型(text)”。包含欲写入的注册表项所处的节名称。
参数的名称为“注册表项名称”,类型为“文本型(text)”。参数值指定欲写入的注册表项在其节中的名称。
参数的名称为“欲写入值”,类型为“通用型(all)”。参数值指定欲写入到指定注册表项中的值,只能为数值、文本或者字节集,否则命令将失败。
例如:要在一个叫“文件名.ini”的配置项中设定小节“项目1”,和项目“分类”,再在“分类”中填入数字,其表达方法为:
写注册表项(“文件名.ini”
“项目1”,“分类”,数字)
其实质效果相当于上面一个命令:
写注册项(3,“Software\文件名.ini\项目1\分类”,数字)
其中的数字可以是字符串,可以是十进制数,也可以是字节集,例:当作字符串写“5”,“abc”,在注册表中出现:"5","abc";当作十进制363写,在注册表中出现16进制DWORD值ox0000016b;当作字节集写{5}或{12,2,25,...}在注册表中出现的为二进制值5或12,2,25,...(注:大括号内是十进制数)
相应的删除命令如下:
删除注册表项(“文件名.ini”
“项目1”,“分类”)
调用格式: 〈逻辑型〉 删除注册表项 (程序名称,[节名称],[注册表项名称])
英文名称:DeleteSetting
在 Windows 注册表中,删除应用程序项目入口、注册表节或注册表项。成功返回真,否则返回假。本命令为初级命令。
参数的名称为“程序名称”,类型为“文本型(text)”。包含应用程序的名称,用作在注册表中的入口名。如果该入口中已不存在节,且下一参数被省略或为空,则将此应用程序入口删除。
参数的名称为“节名称”,类型为“文本型(text)”,可以被省略。指定包含被删除注册表项的节名称。如果下一参数被省略或为空,则将此注册表节连同其中所有的注册表项都删除。
参数的名称为“注册表项名称”,类型为“文本型(text)”,可以被省略。参数值指定要删除注册表项的名称。
简单实现FTP下载,上传和HTTP下载
简单实现FTP下载,上传和HTTP下载
=========================================================
★★FTP下载,上传:
★创建网络连接
lngINet = InternetOpen (“FTP Control”
1
“”
“”
0)
如果真 (lngINet = 0)
信息框 (“创建网络连接失败!”
0
)
如果真结束
★登录FTP站点
lngINetConn = InternetConnect (lngINet
FTP地址
21
“anonymous”
“anonymous@yourhost.com”
1
134217728
0)
如果真 (lngINetConn = 0)
返回 (“登录FTP站点失败!”)
如果真结束
★FTP下载
blnRC = FtpGetFile (lngINetConn
远程文件
本地文件
假
0
1
0)
InternetCloseHandle (lngINetConn)
InternetCloseHandle (lngINet)
如果 (blnRC = 假)
返回 (“下载文件失败!”)
否则
返回 (“下载文件成功!”)
如果结束
★FTP上传
blnRC = FtpPutFile (lngINetConn
本地文件
远程文件
1
0)
InternetCloseHandle (lngINetConn)
InternetCloseHandle (lngINet)
如果 (blnRC = 假)
返回 (“上传文件失败!”)
否则
返回 (“上传文件成功!”)
如果结束
=========================================================
★★HTTP下载
lReturn = URLDownloadToFile (0
远程文件
本地文件
0
0)
如果 (lReturn = 0)
“下载完毕!”
否则
“不能下载!”
焦点的作用、输入输出的同步
窗口程序集:窗口程序集1
------------------------------
子程序:_按钮1_被单击
标签5.标题 = “”
编辑框1.内容 = “”
编辑框2.内容 = “”
标签8.标题 = “”
_启动窗口.获取焦点 ()
------------------------------
子程序:_编辑框1_内容被改变
标签5.标题 = 编辑框1.内容
_启动窗口.获取焦点 ()
※备注:恒有焦点的编辑框,不用鼠标选中也能输入
※备注:所谓“焦点”是指窗口或窗口单元被选中的状态
※备注:运用“_编辑框1_内容被改变”事件,做到输入输出同步
------------------------------
子程序:_编辑框2_内容被改变
标签8.标题 = 编辑框2.内容
※备注:非恒有焦点的编辑框,要用鼠标选中才能输入
(例程下载:
http://eyuyan.com/cgi-bin/lb5000/Download.cgi/1_3939_1.e)
教程与手册相结合的学习方法
高手们在指导新生学习易语言时,常常强调看手册来学习的重要性。的确,编程手册的全面性、准确性和专业性,是任何一本教程都无法可比的,所以我们学易语言时看手册当然是很重要了。但另一方面,做到了全面性就很难同时做到具体性,做到了专业性就很难做到通俗易懂,所以好的教程在具体性、易学性等方面上又是手册所无法相比的。
基于以上说法,我们在学习易语言时好的方法是手册与教程相结合。比如编程时遇到需要查找的问题,包括某个命令的语法、某个对象的用法、文本处理有哪些命令之类,就需要用到手册。 又如我们需要学习一些实例、了解网络编程的方法之类,我们就可以参考有关教程来学习,可以捧着它一篇一篇地阅读学习。当然大多数时候是两者都发挥作用,比如培养编程思路、培养独自编写程序的能力等,是离不开手册运用与教本学习的。
如果有时间,我也可以写一本手册库式教程,直接学习手册资料库里的材料。
可变窗口
本例演示控制窗口大小的方法,本例中使用了窗口的高度属性、宽度属性、鼠标位置被移动事件,还涉及到变量(参数)的定义、流程控制语句、逻辑运算、建立子程序等知识。
第一步:建立用户界面,该用户界面只有一个窗口,没有其他控件。
第二步:设置窗口的属性:背景色=(任选一种颜色);边框=普通固定边框;标题=“可变窗口”。
第三步:在程序代码窗口输入以下程序:
窗口程序集:窗口程序集1
------------------------------
子程序:__启动窗口_创建完毕
_启动窗口.宽度 = 175
_启动窗口.高度 = 100
------------------------------
子程序:__启动窗口_鼠标左键被放开
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
销毁 ()
------------------------------
子程序:__启动窗口_鼠标位置被移动
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
如果真 (横向位置 ≥ _启动窗口.宽度 - 10)
_启动窗口.宽度 = _启动窗口.宽度 + 20
如果真结束
如果真 (纵向位置 ≥ _启动窗口.高度 - 50)
_启动窗口.高度 = _启动窗口.高度 + 20
如果真结束
第四步:用文件名“可变窗口”保存文件,然后运行程序,看一看鼠标在窗口中移动时窗口的变化。
控件(窗口单元)的属性、方法和事件
[这个贴子最后由bb88在 2002/06/18 00:43am 编辑]
所谓面向对象的编程,就是程序代码由对象的属性、事件和方法来构成,所以我们要学用编程,就必须了解对象的属性、方法和事件,这样你才能理解代码的意思,为编程打下必需的知识基础。
说到控件(易语言称为窗口单元),我们不能不提对象。可以说对象跟控件在意思上相近,把对象画出来放到窗口上我们就称为控件(对象通过具体的控件来表现),比如“按钮”对象。但对象不一定表现为具体的控件,比如“菜单.可视=真”中,“菜单”这个对象在易语言中就找不到有控件。
㈠、什么是控件?
“控件”在一些编程语言中又被称为“构件”、“部件”之类,易语言按其自身的语言逻辑一般称之为“窗口单元”。
在实际应用程序时,常常要多次向计算机发送不同指令。那怎样发送指令?
是不是用嘴对计算机说:“现在我向你下达一个旨意,怎样怎样”、“长江、长江,请追击敌人,over”,然后计算机说:“喳!遵旨”、“yes,黄河,yes,黄河,over”?当然不是,是通过按钮、发话框、选择框之类的控件(易语言称为窗口单元)发送命令,然后又由这些控件来执行指令的(即有些控件常用来发令,有些主要用于执行命令)。所以控件(控制部件)我们可以简单地解析为:“用来发送指令、传递指令、执行指令和反馈指令的那种东东(部件)”。所以我们不要小看按钮之类的东东,没有它程序何从运行。让我们在以后的学习中了解“按钮_被单击"、"按钮_被双击"之类的发令方式,再逐步学好如何运用控件、扩展控件。
㈡、究竟什么是对象呢?
通俗地说,它的意思跟“东西”、“事物”、“现象”之类相近,可以说世界上的一切东西都是对象:人、台灯、地球、凳子等都是对象(事物)。事物在时空、联系、运动和变化发展中存在,事物的相互联系构成运动。在程序中,我们称事物在时空中的存在为对象的“属性”,称事物的相互联系为程序及对象的“事件”,称由联系构成的运动为“方法”,称变化发展(主要是指事物属性的变化发展)为“过程”(程序或子程序)。
㈢、什么是对象的属性呢?
就是对象的性质和特征等对象表现方式,一般是用来描述控件对象的外观特征。书本上说任何事物都有质(性质)和量两方面属性。比如一个人是男是女、是好人还是坏人、入党没有、姓名、民族等是一个人在质方面的属性,身高、年龄、体重、文化程度等是人的量方面的属性,也就是说考察一个人要从质和量两方面来考察,通过了解属性才能认识一个人。同理,编程中所使用的对象也是有属性的,没有属性,对象就无从依托、无从表现、无从理解,没有属性的对象是不存在的。
比如“窗口”这个对象有“高度”、“宽度”、“标题”、“名称”等属性。有一些属性,一般控件都会有,比如“背景色”、“高度”、“宽度”等。有一些属性是某些控件所独有的,比如“表格”控件有“表格线颜色”、“标尺”等特殊属性。
属性可分数值型属性(量)和逻辑型属性(质)。比如“编辑框1.左边=20”是赋编辑框对象予数值型属性,而“编辑框.可视=真”是赋予对象逻辑型属性。
那么,我们怎样知道某个控件有哪些属性呢?有两种方法查找具体对象的属性:①、在易语言的设计界面的左边的工作夹里有个“属性夹”,在这里我们可以查找或设置被选中对象的属性;②、选“帮助→易语言知识库→目录→参考手册首页→系统核心支持库”,我们会发现那里列举了易语言所有的控件对象(窗口单元),点击某个控件对象,会显示该控件对象的所有属性、方法和事件。
㈣、什么是对象的事件呢?
我们以一个例子来说明,比如“bb88骂Etp21 ,(致使)Etp21的脸色很难看,并且握紧了拳头”。在这个例子中,“bb88”和“Etp21”是怎样联系起来的?他们之间是什么关系?是通过骂这个动作联系的,图示:“bb88—(骂)→Etp21”,他们之间的关系是骂与被骂的关系,那么“Etp21的脸色很难看,并且握紧了拳头”这个程序是由程序操控者“bb88”骂的动作引起的(称为“事件驱动”),我们称“被骂”这个受动动作为“Etp21”这个对象的“事件”。
事件可以解析为通过具体的控件使程序运行的一种驱动或受动指令,包括用户通过控件输入而由电脑接收的指令,如“按钮1.被单击”,向按钮发出“单击”的指令,那么“被单击”就是“按钮1”的事件;也包括程序运行的某种驱动或受动条件,比如“(时钟)周期事件”等。程序的受动方式(事件)包括接受的鼠标动作(被单击、被移动等)、键盘动作(按下某键、放开某键等)、时钟信号等。 事件也可以说我们对对象所做的操作。
易语言是一门典型的面向对象编程的语言,它的整个程序都是由事件驱动的。其实我们的生活中就充满了各式各样的事件,比如“闯红灯”这个事件的发生会导致警察追杀你、走路撞到电线杆这个事件会导致头痛等。这些例子虽然滑稽,但可以清楚地解析事件的含义,就象你马上能体会到在什么地方单击鼠标时会发生什么,按下键盘时会发生什么,这些就是事件。程序启动后,并不能自动运行,而要等用户输入指令(比如按下某个按钮)它才运行某段程序。因此,windows程序从本质上来说,可以称之为是“事件驱动”的。
易语言对象的事件包括自有事件和基本事件。自有事件是该种控件的特有事件,基本事件是各种对象共同具有的事件。
那么,我们怎样知道某个控件对象有哪些事件呢?也是有两种方法查找具体对象的能接收的事件:①、选中某个控件对象后,在易语言编辑界面的左边“属性夹”里选“在此选择加入事件处理子程序”子夹,可以设置该控件的事件,并同时快速地在代码编辑区出现该事件的代码;②、选“帮助→易语言知识库→目录→参考手册首页→系统核心支持库”,我们会发现那里列举了易语言所有的控件对象(窗口单元),点击某个控件对象,会显示该控件对象的所有属性、方法和事件。
㈤、什么是对象的方法?
以“Etp21的脸色很难看,并且握紧了拳头”这个程序来说,“握紧了拳头”这个程序运行的动作我们就称为“方法”。方法是一个具体对象能够执行的动作,它是指对象所固有完成某种任务的功能
可由我们在需要的时候调用。有的方法会有参数表,有的方法则不用参数,“参数”大概相当于方法的相关数据,包括相关对象属性值、系统命令、执行条件、项目、常量、子程序、函数乃至其他对象的方法等,都是可以调用的参数。执行、调用一个对象的方法的一般格式如下:
对象名.方法名(参数)。
例如需要在一个名为“购物篮”的列表框里添加一个叫“苹果”的列表项目,其语句如下:购物篮.加入项目(苹果)。在这个例句中,“加入项目”是“购物篮”的方法,“苹果”是其参数。不同的方法有不同的参数,一种方法可以有多种类型的参数。我们可以选“帮助→易语言知识库→目录→参考手册首页→系统核心支持库”,我们会发现那里列举了易语言所有的控件对象(窗口单元),点击某个控件对象,会显示该控件对象的所有属性、方法和事件,点击某个方法可以查看该方法的代码格式、可用的参数及其类型。
可以看出,事件和方法都有相近的意思,它们都是一种动作,只不过事件是促使程序运行的一种外部动作,而方法是程序具体运行的一种动作(即程序怎样运行)。
那么,我们怎样知道某个控件对象有哪些可供执行的方法呢?欲查看某类窗口单元具有哪些方法、这些方法的详细解释以及有哪些可用参数等,请到易语言设计界面的支持库夹中的“数据类型”分枝中寻找。譬如:想了解画板的所有方法,可以到“数据类型 -> 画板”下查看,如果点击“画板”数据类型下面的某个方法,会在代码编辑区里出现该方法的调用代码,我们可以利用这种功能来快速编辑代码。
另一方法是:选“帮助→易语言知识库→目录→参考手册首页→系统核心支持库”,我们会发现那里列举了易语言所有的控件对象(窗口单元),点击某个控件对象,会显示该控件对象的所有属性、方法和事件。
㈥、对象的属性、事件和方法的综合运用。(理解一个事件的过程,即子程序)
windows程序其实就是对象的属性、事件和方法的综合运用,比如“bb88骂Etp21 ,(致使)Etp21的脸色很难看,并且握紧了拳头”,转化为程序语言就是:
子程序:骂_被单击 (有一个叫“骂”的按钮)
Etp21.脸色=红一块青一块 (这个处理事件的代码可称为赋值型语句)
Etp21.握紧拳头() (这个处理事件的代码可称为方法型语句)
请找找这个程序有哪些对象、属性、方法和事件。事件过程一般表现为对象属性的变化、对象动作(方法)的执行以及指示下一事件的发生等。事件过程(子程序)的一般格式如下:
子程序:对象名_事件名()
处理事件的代码
(子程序结束)
怎样理解这个程序格式?从上述格式中可以看到,某个事件过程(子程序)的名称主要由对象名和事件名组成,中间用下划线连接以区分清楚。不能随意改动该程序名,否则当指定事件发生时系统便无法调用相应的事件过程(程序)。又如果某个对象的某个事件发生了,但是没有为该事件编写响应事件的过程代码,这样对象所发生的这个事件就会毫无反应(比如点击“按钮1”不见反应)。
--------------------------------------------------------------------------------
交流附件上传地址:http://www.91asp.com/
例程-循环显示信息
[这个贴子最后由bb88在 2002/05/07 07:18pm 编辑]
http://www.91asp.com/bbs.nsf/0/6ecbeb8f130a18cb48256bb1002c87b4/$FILE/_82f8qq4trms9svl0jpav17k652f7q4_.e
子程序:_按钮1_被单击
如果真 (标签1.标题 = “”)
标签1.标题 = “祖国你好!”
返回 ()
如果真结束
如果真 (标签1.标题 = “祖国你好!”)
标签1.标题 = “我的祖国”
返回 ()
如果真结束
如果真 (标签1.标题 = “我的祖国”)
标签1.标题 = “我会成功”
返回 ()
如果真结束
如果真 (标签1.标题 = “我会成功”)
标签1.标题 = “一个容易的语言”
返回 ()
如果真结束
如果真 (标签1.标题 = “一个容易的语言”)
标签1.标题 = “祖国你好!”
如果真结束
什么是混合编程开发工作环境?
这里的课程都是假设你用过frontpage等网页编辑工具或word之类的办公软件来讲的。因为易语言也是一种典型的可视化编程,其编辑窗口、设计图形界面的方法跟网页设计差不多,所以如果你用过以上所说的工具之一,就会对用易语言设计程序界面不难理解。
如果你学会了易语言,就为以后再深造VB、VC、VC++等语言打下很好的基础。其实对于英语不过关的大多数易爱好者来说,如果你一开始就学VB等,可能学了一年也摸不着头脑。但是如果你从学易语言开始,比如跟着《菜鸟每日一课》来学,随随便便也能很快把bb88的三板斧学全。如果你是通过VB来学这三板斧的话,相信你虽然照猫画老虎一样也能编编程,但离开例子也能编就很难做到了,并且要理解和掌握这些三板斧所用的基本原理和基本知识,很可能认真学一年也不得其门,因为你很难理解那些弯弯曲曲的字母是什么意思。以上“如果”统统结束。
可以不夸张地说,易语言是目前亚洲人编程入门的最好工具、、之、之一(其实应该是目前最好的)。但是,世界上目前还没有那种编程工具是十全十美的,每一种流行的工具都有它的优势和缺陷。在相当长的一段历史时期内,将没有那一种编程工具能够一统天下,而是八仙过海,各显其能。正因为如此,我们在从事具体的编程工作时,不应泥拘于是英文的还是中文的,是微软的还是吴涛的,你觉得那种好用,那种适合你用,你就用那种吧,邓爷爷说能抓老鼠就是好猫,然也。
就专业的编程工作者来说,也常常是几种工具配合来用,比如软件的图形界面可以用flash、photoshop之类来设计;如果你想编写大型程序的原形甚至正版,可用易语言、VB等,以加快开发速度,等觉得可行了可改用其他工具开发正版;开发数据库应用程序可用相应的工具,但里面所涉及到的网络技术又可用其他工具,包括网页编程所用的脚本语言等。基于此,我们就不难理解为什么一些单位在招聘程序员时,要求应聘者最好能掌握几种应用工具了。
以上的综合使用编程工具的方法我们可文绉绉地称之为“混合编程开发工作环境”。
--------------------------------------------------------------------------------
交流附件上传地址:http://www.91asp.com/
锁定窗口单元比例
[转帖]《例程:锁定窗口单元比例.》 作者:叶柄
子程序:__启动窗口_尺寸被改变
备注:_启动窗口.宽度=我下面就写宽度[因为在当前窗口中]如果单元多
可以自己调节
方法差不多
编辑框1.宽度 = 取用户区宽度 ()
如果 (高度 ≥ 283)
编辑框1.移动 (
128 + (高度 - 283) ÷ 2)
列表框1.移动 (
128 + (高度 - 283) ÷ 2
130 + (高度 - 283) ÷ 2)
按钮1.移动 (
列表框1.顶边
列表框1.高度 - 1)
否则
编辑框1.移动 (
128 - 取绝对值 ((高度 - 283) ÷ 2))
列表框1.移动 (
128 - 取绝对值 ((_启动窗口.高度 - 283) ÷ 2)
130 - 取绝对值 ((_启动窗口.高度 - 283) ÷ 2))
按钮1.移动 (
列表框1.顶边
列表框1.高度 - 1)
如果结束
如果 (宽度 ≥ 142)
列表框1.移动 (
67 + (宽度 - 142) ÷ 2
)
按钮1.移动 (68 + 取绝对值 ((宽度 - 142) ÷ 2)
67 + 取绝对值 ((宽度 - 142) ÷ 2)
)
否则
列表框1.移动 (
67 - 取绝对值 (宽度 - 142) ÷ 2
)
按钮1.移动 (68 - 取绝对值 ((宽度 - 142) ÷ 2)
67 - 取绝对值 ((宽度 - 142) ÷ 2)
)
如果结束
例程下载:http://eyuyan.com/non-cgi/usr/1/1_3700.e
图形控件的应用-轻松制作贺卡
下面是我一年前写的一篇关于作生日卡的文章;希望对初学者有用。 用E语言轻松制作贺卡
一、准备工作:
首先选好素材,即准备好动
画图片和背景音乐。
二、开始制作:
1、启动E语言,选择新建,将
启动窗口的背景音乐属性设为“
祝你生日快乐”、边框的属性设
为“无边框”;在启动窗口中分
别放入一个标签、一个图片框、
一个时钟控件。选择一幅你喜欢
的图片,作为标签的底图,将标
签的边框属性设为“无边框”、标题属性改为:“福如东海 寿比南山”、文字颜色属性改为红色。调整图片框的大小,使其刚好遮盖住剩余的窗口,将图片框的底图属性设为事先准备好的动画图片。
2、在“窗口程序集”中加入三个程序集容器(即通常所说的定义全局变量):
窗口程序集:窗口程序集1
程序集容器:横坐标 数据类型:整数型
程序集容器:纵坐标 数据类型:整数型
程序集容器:计数器 数据类型:短整数型
3、在“__启动窗口_创建完毕”子程序中输入如下程序(作初始化处理):
子程序:__启动窗口_创建完毕
计数器 = 1
横坐标 = 200
时钟1.时钟周期 = 100
4、在“_图片框1_被双击” 子程序中输入如下语句(这段代码用于:当把鼠标移到图片框上时单击鼠标左键退出程序):
子程序:_图片框1_鼠标左键被按下
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
结束 ()
5、在“_时钟1_周期事件”子程序中写入如下程序(用于自动控制窗口的移动口):
子程序:_时钟1_周期事件
如果 (计数器 = 1)
如果 (横坐标 ≤ 350)
横坐标 = 横坐标 + 1
纵坐标 = 纵坐标 + 1
移动 (横坐标
纵坐标
419
272)
计数器 = 1
否则
计数器 = 2
如果结束
否则
如果 (横坐标 ≥ 200)
横坐标 = 横坐标 - 1
纵坐标 = 纵坐标 - 1
移动 (横坐标
纵坐标
419
272)
计数器 = 2
否则
计数器 = 1
如果结束
如果结束
好了,运行程序试试,是不是很酷! 下载:生日卡.zip(139k)含源代码
推拉字幕
说明:字幕先逐渐变大,再逐渐变小,循环往复,直至程序退出。
窗口程序集:窗口程序集1
------------------------------
子程序:_时钟1_周期事件
局部容器:渐变字体 数据类型:长整数型
局部容器:计数器 数据类型:整数型
标签1.字体.字体大小 = 渐变字体
计数器 = (计数器 + 1) % 140
如果真 (计数器 < 60)
渐变字体 = 渐变字体 + 2
如果真结束
如果真 (计数器 > 80)
渐变字体 = 渐变字体 - 2
如果真结束
------------------------------
子程序:__启动窗口_创建完毕
_启动窗口.位置 = 3
标签1.顶边 = -20
标签1.高度 = 取用户区高度 () + 18
标签1.宽度 = 取用户区宽度 ()
西风来了
不好意思,我把我的《图片演示2.0》左看右看横看竖看,研究了半天,都看不出有什么值得一说的新技术。这个程序的所有功能就只是一个简单的“画板.复制()”命令而已。
不过既然答应浪花了,我就说说我的思路吧。先说说其中的一个百叶窗效果:
程序文本如下:
子程序:从左往右百叶窗效果
局部容器:百叶宽度 数据类型:整数型
局部容器:容器1 数据类型:字节型
判断循环首 (百叶宽度 < 演示画板.宽度 ÷ 10 + 1)
容器循环首 (1
10
1
容器1)
隐藏画板.复制 (((容器1 - 1) × 隐藏画板.宽度) ÷ 10
0
百叶宽度
隐藏画
板.高度
演示画板
((容器1 - 1) × 演示画板.宽度) ÷ 10
0
)
容器循环尾 ()
百叶宽度 = 百叶宽度 + 1
延时 (速度)
判断循环尾 ()
《图片演示》的实现图片切换的方法,就是在窗口中添加两个一样的画板,一个用来演示,
一个隐藏,存放下一幅要显示的图象。然后,把隐藏画板中的图象用不同的方法复制到
演示画板上显示,从而实现不同的效果。
这里我把百叶窗每一页百叶的最大宽度设为演示画板的十分之一。然后用循环依次从隐
藏画板中复制图象到演示画板。本程序中画板的宽度为400,所以百叶的最宽度为40,也就是
依次如下复制:
隐藏画板.复制 (0
0
百叶宽度
隐藏画板.高度
演示画板
0
0
)
隐藏画板.复制 (40
0
百叶宽度
隐藏画板.高度
演示画板
40
0
)
隐藏画板.复制 (80
0
百叶宽度
隐藏画板.高度
演示画板
80
0
)
……
隐藏画板.复制 (360
0
百叶宽度
隐藏画板.高度
演示画板
360
0
)
注:以上这段即相当于程序中的这一个循环:
容器循环首 (1
10
1
容器1)
隐藏画板.复制 (((容器1 - 1) × 隐藏画板.宽度) ÷ 10
0
百叶宽度
隐藏画
板.高度
演示画板
((容器1 - 1) × 演示画板.宽度) ÷ 10
0
)
容器循环尾 ()
其中百叶宽度从0开始,每次增加1,直到40,当宽度达到40时,所有图象复制完毕,子程
序结束。则又相当于外面那个循环:
判断循环首 (百叶宽度 < 演示画板.宽度 ÷ 10 + 1)
……
……(省略号内容为上述那个循环)
百叶宽度 = 百叶宽度 + 1
延时 (速度)
判断循环尾 ()
不知道我这样说清楚了没有?
一步一步跟我学写易程序二
一步一步跟我学写易程序二
今天我们在上一次所书写程序的基础上继续加入新功能:密码校验,即只有存在该密码的用户才能进入系统,并且进入的用户将被记录到系统日志数据库中去。
请先参阅《一步一步跟我学写易程序一》。
一、数据库部分:
根据本程序的需要,需要增加两个数据库:“密码”和“系统日志”。
密码数据库的字段列表如下:
1、密码 类型为“文本型”,字段长度为10,本字段用作记录用户密码;
2、密码所有者 类型为“文本型”,字段长度为10,本字段用作记录用户名。
数据库建立完毕后保存名称为“密码”。
系统日志数据库的字段列表如下:
3、进入者 类型为“文本型”,字段长度为10,本字段用作记录进入用户的名称;
4、进入时间 类型为“日期时间型”,本字段用作记录用户进入系统的时间。
数据库建立完毕后保存名称为“系统日志”。
数据库创建完毕后将产生两个文件:“密码.edb”、“系统日志.edb”。
二、输入初始数据:
为了演示程序功能,我们使用“数据库->记录编辑器”菜单功能打开所创建的“密码”数据库,并加入一条初始记录:
密码:“123”
密码所有者:“吴涛”
三、编写处理程序:
1、界面部分:
本程序无新增的界面部分。
2、代码部分:
程序在“__启动窗口_创建完毕”子程序前面增加了一部分代码以完成新增功能:
子程序:__启动窗口_创建完毕
局部容器:密码 数据类型:文本型
局部容器:进入者 数据类型:文本型
如果真 (输入框 (“密码校验”
“请输入密码:”
密码
) = 假)
*备注:可以自己设计一个密码输入窗体代替输入框
结束 ()
*备注:如果不输入密码
则直接退出.
如果真结束
如果 (打开 (“密码”
) = 真 且 查找 (读 (“密码”) = 密码))
进入者 = 读 (“密码所有者”)
如果真 (打开 (“系统日志”
))
加记录 (进入者
取现行时间 ())
*备注:记录当前进入者和进入时间
如果真结束
全部关闭 ()
*备注:关闭可能已经打开的所有数据库
否则
信息框 (“密码校验失败!”
0
“错误”)
结束 ()
如果结束
…… 后面为原有代码
程序分析:
在启动窗口创建完毕调用“__启动窗口_创建完毕”时,程序打开一个输入框请求用户输入密码,如果用户没有输入密码就退出输入框,程序直接结束,否则程序打开“密码”数据库并在该库中查找对应密码,如果没有找到,显示密码校验失败并退出程序。如果找到,则将用户进入信息记录到系统日志数据库中。
具体程序可以到 http://eyuyan.com/step2.zip 下载。
一个客户控件实现Http下载
窗口程序集:窗口程序集1
------------------------------
子程序:_按钮1_被单击
编辑框1.内容 = “”
客户1.连接 (“211.167.67.111”
80)
客户1.发送数据 (“GET / HTTP/1.1” + #换行符 + “Accept: */*” + #换行符 + “Accept: text/html” + #换行符 + #换行符)
------------------------------
子程序:_客户1_数据到达
编辑框1.加入文本 (从字节集转换 (客户1.取回数据 ()
#文本型))
易语言网络功能详解
易语言网络功能详解:-浪花原创
这些都是我个人对网络的理解,也不一定全对。只能作为参考:
在易语言支持库的网络通信里:
第一、取主机名:gethostname
这个主机名,其实就是你自己的计算机的名字,当然,这个名字也就是你的计算机在网络上的标识。这个命令用处不是很大。此命令返回的数据类型为文本型。
第二、通信测试:其实也就是dos命令里面的ping命令,大家在ping里都可以看到,它还有很多参数,比如说ping -t
*******等,它所测试的目标可以是IP地址,也可以是对方的主机名(不会不懂IP地址吧?如果不懂,那你就可以运行一下winipcfg,你就可以看到你自己计算机的IP地址了)所以,结合上面的第一个命令,我们就可以做出一个很简单的程序来测试一下:标签。标题=到文本(通信测试(取主机名,)),这一句代表什么意思呢?首先取出本计算机的主机名,然后再去ping本机,最后返回ping本机时所需要的时间再显示到标签。其实这就等同于dos里的ping
-t 127.0.0.1这个命令,其中的127.0.0.1即是代表本机。本命令返回数据类型为整数型。
第三、转换为主机名:本命令其实大家都可以测试一下,我相信有很多朋友的QQ都安装有查好友IP地址的补丁程序,这时,当你看到对方的IP地址时,你就可以应用一下这个软件了:标签。标题=转换为主机名(QQ上所取回的IP地址),当然由于网络的问题,你有可能得多转换几次才能成功地取回对方的主机名。本命令返回数据类型为文本型。
第四、转换为IP地址:本命令基本和上一个命令相同,只是转换的对象和目的是相反的。本命令返回数据类型为文本型。
以上,是对网络方面的一些基本知道是理解。
网络控件:
一、数据报:这是基于udp协议的一种通信方式,udp协议是一种小数据量的,安全性能不高的一种通信方式,它可以用在局域网内实现内部通信,当用数据报来实现通信时整个通信建立的过程如下:数据报A向数据报B的指定端口发送数据(数据报B则在指定的端口进行监听)当数据报B监听到有数据到达时,则用数据报的取回数据的命令来取出数据,而此时的数据为字集节型,如果你所传送的数据为文本型,则需将其转换为文本型(用从字集节转换),当然,也可以为文件或其它类型,这时,我们怎么样去判断我们所传送的是什么类型的数据呢?作为接收方,我们是不可能知道的,所以,我们就得在数据的发送方也就是数据报A里的发送数据命令里加上一些标识,比如我们可以在第一个所要所送的数据里,采用一些不常用的符号作为分隔(可参照E-QQ里的数据传送)然后我们指定第一段为传送的数据类型的说明,第二段才为具体的数据,这时,接收方当接收到数据时,首先根据第一段来判断数据类型,然后再根据数据类型来进行转换。这样,我们基本上就可以实现简单的udp通信(包括文本和数据的传送)
二、客户和服务器:这个应该很容易就明白他们之间的关系吧,服务器就象供货商,所以,我们每一个客户都应该向服务器发送请求才能进行通信。本命令是基于tcp/ip协议的通信,它可以应用在互联网上,安全性较高。具体应用如下:当一个客户需要和服务器建立通信时,首先需要进行连接,连接时就需要知道服务器的IP地址和监听端口。
客户。边接是一个逻辑型的命令,返回的值表示是否和服务器建立了连接。当连接成功后,即可向服务器所送数据,发送数据的方式还是采用;上面udp协议中的方式,加上标识。发送数据也是一个逻辑型的命令,可根据其返回值来判断是否发送成功。客户要和服务器通信,同样也得接收服务器所返回的数据,这时,客户也就有一个数据到达的事件。当客户接收到从服务器返回的数据时,自动产生本事件,此时,你就可以采用取加数据命令来取出客户端所收到的数据。此时,客户和服务器的通信即成功建立。当不需要和服务器边接时,请注意用断开连接命令来断开和服务器的连接,也就是说让服务器知道你断开的消息。
服务器端相比客户端,多出了一个取回客户而少了一个连接、一个断开连接的命令。因为作为服务器,它是让客户来连接的,而不是去连接客户的。服务器端的事件有三个,一是数据到达,这相信大家都能理解了。还有两个,一个是客户进入,当有客户进入时自动产生本事件,所以,当有不同的客户连接进来时,我们可以用取回客户的命令去得知道到当前连接到本服务器的客户的IP地址和端口号(所以,我们在此时可以结合上面的命令来得知对方的主机名)这们,我们就可以知道是谁连接上了服务器,同理,在客户离开的事件里,也可以用同样的方法去得知是谁和服务器断开了连接。服务器的发送数据方法也和客户的发送数据基本相同。
三、端口通信:此控件目前对于我们应用不大,如写拨号程序时才会使用且功能不全,所以暂时不讲解。
以上这些均来自浪花对网络功能的个人理解,如有讲得不对的地方,请各位朋友指正,谢谢!
[ 此消息由 浪花 在 2001-09-20.09:34:03 编辑过 ]
用鼠标拉动扩展控件的宽度
窗口程序集:窗口程序集1
程序集容器:鼠标状态 数据类型:整数型
------------------------------
子程序:_外形框1_鼠标位置被移动
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
如果真 (鼠标状态 ≠ 0)
外形框1.左边 = (外形框1.左边 + 横向位置) - 外形框1.宽度 ÷ 2
列表框1.宽度 = 外形框1.左边 - 外形框1.宽度 × 2 - 2
如果真结束
如果真 (列表框1.宽度 < 96)
列表框1.宽度 = 96
如果真结束
如果真 (外形框1.左边 < 126)
外形框1.左边 = 126
如果真结束
------------------------------
子程序:_外形框1_鼠标左键被按下
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
鼠标状态 = 1
------------------------------
子程序:_外形框1_鼠标左键被放开
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
鼠标状态 = 0
------------------------------
子程序:__启动窗口_鼠标位置被移动
返回值类型:逻辑型
参数:横向位置 数据类型:整数型
参数:纵向位置 数据类型:整数型
参数:功能键状态 数据类型:整数型
鼠标状态 = 0
逐渐变小的文本
下列代码是用我的“多功能代码转换器”(0.8版)从vb代码里直接翻译过来的:
窗口程序集:窗口程序集1
------------------------------
子程序:__启动窗口_创建完毕
_启动窗口.位置 = 3
标签1.高度 = 取用户区高度 ()
标签1.宽度 = 取用户区宽度 ()
标签1.背景颜色 = #黑色
标签1.标题 = “逐渐变小的文本”
标签1.字体.字体大小 = 150
标签1.渐变背景颜色1 = #绿色
标签1.可视 = 真
时钟1.时钟周期 = 100
------------------------------
子程序:_时钟1_周期事件
如果 (标签1.字体.字体大小 > 2)
标签1.字体.字体大小 = 标签1.字体.字体大小 - 2
标签1.左边 = (_启动窗口.宽度 - 标签1.宽度) ÷ 2
标签1.顶边 = (_启动窗口.高度 - 标签1.高度) ÷ 2
否则
标签1.可视 = 假
时钟1.时钟周期 = 0
如果结束