powerbuilder10实用教程.ppt

上传人:za****8 文档编号:13190040 上传时间:2020-06-07 格式:PPT 页数:331 大小:1.52MB
返回 下载 相关 举报
powerbuilder10实用教程.ppt_第1页
第1页 / 共331页
powerbuilder10实用教程.ppt_第2页
第2页 / 共331页
powerbuilder10实用教程.ppt_第3页
第3页 / 共331页
点击查看更多>>
资源描述
2020年6月7日,第1页,第1章PowerBuilder10.0概述,教学目标教学重点教学过程,2020年6月7日,第2页,第2章PowerBuilder10.0编程基础,教学目标教学重点教学过程,2020年6月7日,第3页,教学目标,熟悉和掌握PowerBuilder10.0的基本语法规则对PowerBuilder10.0有初步的认识和了解,并能够编写一些简单的小程序,2020年6月7日,第4页,教学重点,标识符命名规则注释语句基本控制语句函数和结构,2020年6月7日,第5页,教学过程,语言特点PowerScript基础语句控制语句系统函数自定义函数函数的重载和超越使用外部函数结构,2020年6月7日,第6页,2.1语言特点,PowerScript语言的语法和组织结构与传统的Basic相似,但是它格式更自由,在编写程序代码时,编译器忽略它的空格、缩进、空行等。PowerScript语言不仅支持标准的SQL语句,而且还提供了一套完整的嵌入式SQL语句,大大增强了程序操作和访问数据库的能力。PowerScript语言不仅支持常规的数据类型,同时也支持用于处理多媒体的二进制对象数据。,2020年6月7日,第7页,2.2PowerScript基础语句,PowerScript语言基础做简单介绍,包括标识符、保留字、注释和代词、数据类型、变量和常量、数组、运算符和表达式等。读者可以与其他程序语言的相关知识相对比,以加深对该语言的理解。,2020年6月7日,第8页,标识符,标识符是程序中用来代表变量、标号、函数、窗口、菜单、控件及对象等名称的符号。在PowerBuilder中标识符的命名必须遵循以下命名规则:必须以字母和下划线开头。保留字不能作为标识符。除了首字母其余字符可以是字母、数字以及下述特殊符号:下划线(_)、连字符()、美元符号($)、和百分号(%)。最大有效字符长度为40,中间不能出现空格或指定字符以外的其他字符。标识符不区分大小写,如Part1、PART1、part1是同一个标识符。,2020年6月7日,第9页,保留字,保留字是PowerBuilder语言中具有特殊用途的一组单词,不能把保留字作为标识符使用,否则PowerBuilder将会给出编译错误。保留字同标识符一样,不区分大小写,但在程序中一般把保留字书写为大写形式。,2020年6月7日,第10页,注释,注释是在程序中用来说明某些语句的作用的文本,或者是程序开发者在程序中暂时屏蔽的代码段。在程序中,它是不会被编译执行的。行注释用来对单行语句进行注释,它可以是一整行。行注释以双斜线“/”开始,其后书写注释内容。如:num=num1*23块注释既可以注释单独一行,也可以注释一段或连续几段。块注释以“/*”开头,以“*/”结尾,中间为注释内容。如:num=num1+num2,2020年6月7日,第11页,代词,PowerBuilder的代词用于指代特定的对象或控件。使用代词可以避免因对象或控件名被修改等情况而使引用出错。主要有以下三个代词:This:在为一个窗口、自定义用户对象、菜单、应用对象或控件编写脚本时,This表示正在处理的对象和控件本身。Super:在编写继承的对象或者控件代码时,有两种方式可供选择,一种是直接使用祖先对象的名称;一种是使用Super,用于调用祖先对象中的函数,但是不能用于调用与祖先窗口控件相关的脚本,只能在祖先的直接后代的函数和事件中使用Super,否则会编译出错。Parent:用于窗口中的控件、自定义用户对象的控件和菜单编写脚本,指示包含控件的窗口、自定义用户对象和当前菜单的上层菜单项。,2020年6月7日,第12页,数据类型,数据类型是编程语言中的一个重要概念,它表示数据的特点。在PowerScript语言中共有4种数据类型,它们分别是:标准数据类型、Any数据类型、系统对象数据类型以及枚举数据类型。,2020年6月7日,第13页,标准数据类型,标准数据类型包括整型(Integer或Int)、字符型(Character或Char)、字符串型(String)、布尔型(Boolean)、日期型(Date)等,可以用这些数据类型声明变量、常量或数组中。,2020年6月7日,第14页,系统对象数据类型,系统对象数据类型是PowerScript语言中比较特殊的数据类型。在PowerBuilder应用程序中,所有用户用到的系统对象,例如窗口、菜单、按钮、列表框、图形等,都被认为是系统对象数据类型。下面的代码声明了菜单和窗口变量。,2020年6月7日,第15页,Any数据类型,Any数据类型是一种可以变化的数据类型,可以用来存储任何类型的数据,包括标准数据类型、对象、结构或矩阵在内的任何指定的数据类型。一个Any数据类型的变量类型并不是固定的,它取决于赋值变量的数据类型。但是当把一个Any数据类型的变量赋值给另一变量时,必须要明确该Any变量的实际数据类型,否则就有可能发生数据类型不匹配的错误。,2020年6月7日,第16页,枚举数据类型,枚举数据类型是PowerScript语言中的一种特殊的数据类型。开发人员可以使用两种方式使用枚举数据类型:作为函数的参数和指定一个对象或控件的属性。枚举数据类型的变量能够被赋上固定值,并以感叹号(!)结尾。例如,BackColor是枚举类型,用来指定该单行编辑框边框的颜色。它的有效取值为:Yellow!(黄色)、Green!(绿色)、Black!(黑色)、Red!(红色)。指定一个单行编辑框的sle_1中所显示的边框颜色为“红色”的代码如下:sle_1.BackColor=Red!,2020年6月7日,第17页,变量与常量,变量就是在应用程序的使用中可以改变其自身值的数据标识。在PowerBuilder中,根据作用范围变量可以分为全局变量、实例变量、共享变量和局部变量4种。全局变量(Global):它是独立于应用程序中的其他对象,在整个应用程序中都可以访问到的变量。实例变量(Instance):它属于单独的一个对象,是对象的一个属性。共享变量(Shared):它属于一个对象的定义,可以被这个对象的所有实例所共享。共享变量在对象关闭和再次打开的时候仍然保持它自己的值。局部变量(Local):它是一个临时变量,存活范围仅在定义它的脚本程序中。脚本程序运行完毕,变量即被销毁。与变量不同的是,常量在声明之后是不会再改变的,试图对它进行二次赋值,会引发编译错误。,2020年6月7日,第18页,数组,数组是一系列有相同数据类型的有序数据的集合。数组中的所有元素都共用一个变量名,通过下标可以访问数组中的每一个元素。要声明一个数组只要在变量名后加上方括号即可。对于固定数组,还可以在方括号中指定数组的维数。如果声明数组时括号中没有指定维数,则此数组是变长数组,在运行时可以根据需要调整数组的大小。,2020年6月7日,第19页,运算符,PowerScript中,运算符就是连接数据构成表达式,并完成一定运算的符号。有4大类运算符:算术运算符、关系运算符、连接运算符和逻辑运算符。算术运算符是对数字数据进行运算的。关系运算符用来比较两个或者多个操作数,比较的结果为以下3个值之一:TRUE、FALSE、NULL。关系运算符可以用于所有数据类型的比较。逻辑运算符多用于比较判断语句中用于构建结果为TRUE或FALSE的Boolean表达式。连接运算符,用于把两个或者多个String型或Blob型的变量连接到一起,形成一个新的字符串的操作,PowerScript语言用符号“+”表示连接字符串的操作。,2020年6月7日,第20页,表达式,表达式是由运算符和操作数组成的、符合PowerScript语法规则的式子。运算对象可以是PowerScript语言中的任何数据类型。在表达式中,必须使用与运算对象的数据类型相兼容的运算符,如数值型数据可以使用乘或除作为运算符。具有两种类型的表达式,它们分别是数字类型表达式和字符(串)类型表达式。,2020年6月7日,第21页,2.3控制语句,条件判断语句循环语句赋值语句返回和中止语句,2020年6月7日,第22页,条件判断语句,条件判断语句是根据判断条件不同,执行不同语句的一组语句。在PowerBuilder中有两种条件判断语句:If语句和ChooseCase语句。If语句是针对程序中某一给定条件进行判断,根据判断的结果执行不同操作的一组语句。它主要有两种结构:IfThen结构和IfThenElse结构。ChooseCase语句是根据判断表达式的值来选择不同的Case块语句执行。ChooseCase语句与IfThen语句都属于条件判断语句,可以交换使用实现同样的功能,但ChooseCase提供了比IfThen语句更多的分支供用户筛选,增强了程序的可读性,提高了运行效率。,2020年6月7日,第23页,循环语句,循环是重复执行某一动作的语言结构。循环语句根据设置的循环条件来决定执行的循环语句块。在PowerScript语言中,用于循环控制的语句有For.Next语句、Do.Loop语句和Goto语句3种形式。For.Next语句是循环次数确定的循环结构,在执行循环的时候,规定了循环执行的次数。Do.Loop语句是一个通用的循环语句。用来控制当所给条件满足时或直到所给条件满足时所要执行的代码段。Goto语句是一条无条件跳转语句,只要是遇到Goto语句,就强制控制程序直接跳转至Goto语句上相应的标号语句上。在DoLoop语句或For.Next语句循环体中,遇到Continue语句后,将不执行Continue语句后循环结束前的所有语句,而直接开始执行下一轮的循环。Exit语句只能用于Do.Loop语句或For.Next语句循环体中,可以直接终止并跳出当前循环体。,2020年6月7日,第24页,赋值语句,赋值语句是用来对变量或对象属性指定值的语句。,2020年6月7日,第25页,返回和中止语句,返回和中止语句有Return、Halt语句两种。Return语句用于从脚本中返回调用程序。Halt语句用于中止应用程序的执行。,2020年6月7日,第26页,2.4系统函数,系统函数是PowerScript的通用函数,它们不属于任何对象,是PowerBuilder的内部函数,在应用程序的任何地方都可以直接使用。这些函数大大简化了开发人员的编程工作。其中常用的几类函数为:打开关闭窗口函数、类型转换类函数、日期时间类函数、字符串操作函数等。,2020年6月7日,第27页,2.5自定义函数,在PowerBuilder中除了有丰富的内置函数供使用外,还可以根据所实现的功能定义自己的函数。在PowerScript中的自定义函数分为两种类型:全局函数和对象级函数。,2020年6月7日,第28页,2.6函数的调用,在窗口中,可以手动输入函数名来调用函数,也可以通过粘贴操作来调用用户的自定义函数。在菜单栏中选择“Edit”“PasteSpecial”“Function”命令,并从“Function”子菜单中选择内部函数、用户自定义函数或外部函数。选择使用AutoScript功能并在弹出的列表框中双击函数名,然后在Browser中选择函数并将其粘贴至脚本中即可。,2020年6月7日,第29页,2.7函数的重载和超越,继承对象函数时可以选择重载(overloading)或超越(overriding)函数定义,都是由函数名和参数列表决定函数是重载还是超越已有的函数。函数的重载,就是相同的函数名对应参数的几种不同表现形式,它可以使同一函数名的函数体有不同的操作内涵,从而达到程序的多态性。函数的重载必须是在同一个作用域下的。函数的超越是指在后代对象中定义了一个与祖先对象中所包含的函数完全相同的函数,它们不仅拥有相同的函数名称,而且还拥有同样的参数列表和返回值。在这种情况下,在后代对象中调用该函数时,该后代对象中的函数的优先级永远要比其祖先对象中的相同函数的优先级要高。在后代对象中,除非使用全局函数作用域时调用祖先的该函数,否则一直调用后代的该函数。,2020年6月7日,第30页,2.8使用外部函数,在使用PowerBuilder的编程过程中,用户除了可以使用系统提供的函数和用户自定义函数之外,还可以使用PowerBuilder平台之外的函数,即外部函数。在PowerBuilder10.0中所支持的外部函数范围非常广泛,它可以是由PowerScript语言之外的任何语言写出的,支持32位平台标准调用序列的函数,比如动态链接库(DLL)中的函数、WindowsAPI以及其他的工具软件包中所提供的函数等。,2020年6月7日,第31页,2.9结构,结构是一种数据类型,是由一个或多个相互关联的变量通过共用一个名称所组合成的有机整体。这些相互关联的变量的数据类型组织形式灵活多样,不受任何限制。用户可以把相互关联的对象通过一个结构集合起来操作。PowerScript语言中的结构分为两种类型:全局结构和对象级结构。全局结构不与任何对象关联,并且能够在整个应用程序中使用。对象级结构必须与具体对象相关联。定义一个结构也就定义了一个新的数据类型。只要该结构的定义保存在应用库中,用户就可以在脚本和用户自定义函数中使用该结构。用户也可以在用户自定义函数中,将结构作为参数再函数中传递。在定义函数时,将结构定义为函数的参数。同样用户自定义函数的返回值也可以是结构。对于外部函数,也可以将结构作为函数的参数。,2020年6月7日,第32页,第3章数据库管理,教学目标教学重点教学过程,2020年6月7日,第33页,教学目标,学习和掌握数据库管理的基础知识能运用PowerBuilder10.0中的工具对数据库进行操作能在程序中连接数据库,2020年6月7日,第34页,教学重点,建立数据源对数据库进行管理操作数据库,2020年6月7日,第35页,教学过程,数据源的创建与设置数据库面板数据库管理连接数据库操作数据表操作表中的数据,2020年6月7日,第36页,3.1数据源,创建ODBC数据源设置ODBC数据源删除ODBC数据源,2020年6月7日,第37页,创建ODBC数据源,要实现通过ODBC访问数据库,就必须首先为数据库建立一个ODBC数据源,这样数据库才能实现和应用程序的交互。而使用ODBC数据源可以访问来自多种数据库管理系统的数据,所以必须为系统添加驱动程序的软件组件。且ODBC数据源会自动添加并配置这些驱动程序。,2020年6月7日,第38页,设置ODBC数据源,在创建ODBC数据源后,有时还需要对创建的数据源的配置进行修改,以便改变一些参数。例如设置登录名称和密码、受损坏的数据库文件、对数据库进行压缩操作、设置驱动程序的页超时、缓冲区大小等。,2020年6月7日,第39页,删除ODBC数据源,在“用户DSN”选项卡中,选择要删除的数据源后,单击“删除”按钮就会弹出“ODBC管理器”对话框,在此对话框中单击“是(Y)”按钮就可以完成数据源的删除。,2020年6月7日,第40页,3.2数据库面板,数据库面板在PowerBuilder10.0中起到了非常重要的作用,数据库的很多操作都可以通过数据库面板来完成。可以通过选择“Tools”“DatabasePainter”命令来调用数据库面板,如下图所示。在数据库面板窗体中,包括了很多的视图,这些视图的功能如下所示:Objects视图。此视图列出了数据库概要和结构信息,对于活动的数据库连接,还列出了同数据库关联的对象,显示的信息由数据库和用户权限决定。ObjectLayout视图。用于显示表的图形外观。Columns视图。用于创建或者修改数据表的列。ISQLSession视图。用于建立、执行和解释SQL语句。ObjectDetails视图。用于显示对象的属性,有些对象的属性是只读的,有些对象的属性是可修改的。Results视图。用网格、表或自由表单形式显示数据。ActivityLog视图。显示执行动作的SQL定义。ExtendedAttributes视图。列出了连接数据库里定义的显示格式、编辑风格以及有效性规则。,2020年6月7日,第41页,2020年6月7日,第42页,3.3数据库管理,数据库是数据表、索引、视图及数据的集合。数据库的管理主要也就是对数据表、索引、视图和数据的管理。其中,数据库的创建和删除可以通过SybaseCentral来完成,SybaseCentral提供了一个管理ASA数据库的图形界面。,2020年6月7日,第43页,3.4连接数据库,PowerBuilder在访问数据库之前,必须首先与要操作的数据库建立连接。利用数据库面板可以很容易地连接数据库,下面以ODBC接口为例,讲解连接步骤。,2020年6月7日,第44页,启动PowerBuilder,单击DBProfile图标,打开“DatabaseProfiles”对话框。,2020年6月7日,第45页,在ODBODBC节点上单击鼠标右键,在弹出的快捷菜单上选择“NewProfile”命令,打开“DatabaseProfileSetupODBC”对话框。选择“Connection”选项卡,在“ProfileName”文本框中输入名称,在“DataSource”下拉列表框中选择前面设置的ODBC数据源,在“UserID”文本框中输入用户名,在“Password”文本框中输入密码。,2020年6月7日,第46页,2020年6月7日,第47页,选择“Preview”选项卡,单击此选项卡上的“TestConnection”按钮,测试数据库的连接配置。如果能够成功地连接数据库,则显示对话框,提示数据库连接成功。,2020年6月7日,第48页,3.5操作数据表,创建表设置主键设置外键设置索引,2020年6月7日,第49页,创建表,数据表是存放数据的主要地方,在数据库中作用很重要。选择“Objects”“Insert”“Table”命令,激活Columns视图,在此视图中输入相应的列内容。输入完成以后保存,并输入表名即可。,2020年6月7日,第50页,设置主键,主键的作用是为了惟一标识数据表中的一个或多个列,它不允许为空也不允许重复。在菜单中选择“Objects”“Insert”“PrimaryKey”命令,或者在数据表上单击鼠标右键,在弹出的快捷菜单中选择“New”“PrimaryKey”命令,打开“PrimaryKey”对话框,在“PrimaryKey”文本框中输入“id”,在“Columns”列表框中选中“id”列。设置完成后单击工具栏上的保存按钮保存设置,完成主键的定义。删除主键的方法是在Objects视图中选择要删除的主键,在该主键上单击鼠标右键,在弹出的快捷菜单中选择“DropPrimarykey”命令,在打开的对话框中选择“Yes”按钮,完成对主键的删除。,2020年6月7日,第51页,设置外键,外键的作用是与其他表中的主键匹配,对于一个表来说外键可以有多个。在菜单中选择“Objects”“Insert”“ForeignKey”命令,打开“ForeignKey”对话框,然后在“General”选项卡中选择要与其他表主键关联的列name,然后在“ForeignKey”文本框中输入外键的名称,选择“PrimaryKey”选项卡,在该选项卡中的“Table”下拉列表框中选择要关联的表admin,然后保存对外键的设置。删除外键的方法是在Objects视图中选择要删除的外键,在该外键上单击鼠标右键,在弹出的快捷菜单中选择“DropForeignkey”命令,在打开的对话框中选择“Yes”按钮,完成对外键的删除。,2020年6月7日,第52页,设置索引,索引是表的一个重要概念,在进行表的搜索和排序时,索引起着关键性的作用。索引与主键不同,索引既可以重复也可以为空值。选择要建立索引的表,在菜单中选择“Objects”“Insert”“Index”命令,打开Index视图。在“Index:”文本框中输入索引的名字,在“Columns”列表框中选择sex,选中“Unique”复选框表示该列中的数据惟一,而“Ascending”复选框用于指定数据排序的顺序,然后保存对索引的设置。删除索引的方法是在Objects视图中选择要删除的索引,在该索引上单击鼠标右键,在弹出的快捷菜单中选择“DropIndex”命令,在打开的对话框中选择“Yes”按钮,完成对索引的删除。,2020年6月7日,第53页,3.6操作表中的数据,在数据库面板中除了创建数据表和设置主键、外键和索引以外还可以对数据表中的数据进行浏览、编辑和删除。,2020年6月7日,第54页,第4章应用程序设计基础,教学目标教学重点教学过程,2020年6月7日,第55页,教学目标,了解PowerBuilder中应用程序对象的相关概念能够利用应用程序模板以自己定制的形式创建简单的应用程序,2020年6月7日,第56页,教学重点,应用程序对象定制应用程序移植现有程序应用程序对象的属性和事件,2020年6月7日,第57页,教学过程,应用程序对象概述创建应用程序设置应用程序属性应用程序的事件,2020年6月7日,第58页,4.1应用程序对象概述,应用程序对象是应用程序的入口点,它定义了一些应用程序级的事件、函数和属性。每个PowerBuilder应用程序都必须有一个,而且只能有一个应用对象。当用户运行应用程序时,应用程序对象的Open事件将被触发,在这个事件中可以设置应用的初始状态,也可以装入其他对象和连接数据库等,例如可以在这里指定首先显示的窗口。当用户终止应用程序时,应用对象的Close时间被触发,在这个事件中可以完成必要的系统清理工作,例如断开与数据库的连接。应用程序对象同窗口、菜单、用户对象一样,都存储在PowerBuilder的PBL应用库中。PowerBuilder应用程序可以说是一系列对象的集合。,2020年6月7日,第59页,4.2创建应用程序,在PowerBuilder中,创建一个应用程序有三种方式:自动生成应用程序(使用应用程序模板)、定制应用程序和移植已有应用程序。用户可根据个人的需要,选择不同的创建方式。自动生成应用程序这种方法适用于初学者。用户只需根据模板向导的提示,一步一步地操作即可建立一个应用程序。定制应用程序就是通过自己的设计来创建出更满足自己的需求的程序。移植已有应用程序就是将已经存在的应用程序移植到当前的版本中。移植已有应用程序很简单,只需创建新的工作区和目标文件,而库文件和应用程序对象都使用原来的。在移植已有应用程序的时候,必须要有原应用程序的库文件,并且该库文件中包含应用程序对象。,2020年6月7日,第60页,4.3设置应用程序属性,设置默认字体设置应用程序的图标设置默认全局变量,2020年6月7日,第61页,设置默认字体,在PowerBuilder中,应用程序的4个字体属性决定了开发应用程序过程中经常使用的4种字体,它们分别为:TextFont、ColumnFont、HeaderFont和LabelFont。TextFont:决定了窗口中的控件、用户对象、数据窗口中静态文本的默认字体。ColumnFont:指定了数据窗口中检索出的数据使用的默认字体。HeaderFont:定义了列表风格和网格风格数据窗口对象中列标题的默认字体。LabelFont:确定了自由风格数据窗口中列标签的默认字体。,2020年6月7日,第62页,在开发应用程序时,根据需要先设置好这些字体,可以为以后设计其他对象时免除重复设置的操作。下面以TextFont属性为例介绍字体的设置方法。打开一个需要设置字体的应用程序,在应用程序的“Properties”面板中单击“AdditionalProperties”按钮,打开“Application”对话框,选择“TextFont”选项卡(如果要修改其他的字体,可打开对应的选项卡),然后根据需要进行修改。修改的字体属性只对修改后生成的应用程序有效,而对修改字体前已建立的应用程序无效。,2020年6月7日,第63页,设置应用程序的图标,应用程序图标是在窗体最小化时或在创建应用程序快捷方式时所显示的图标,它的格式一般为“*.ico”。可以在应用程序的“Properties”对话框中单击“AdditionalProperties”按钮,打开“Application”对话框,然后“Icon”选项卡中进行设置。,2020年6月7日,第64页,设置默认全局变量,PowerBuilder10.0中提供了5个内置的全局变量,分别为:“SQLCA”、“SQLDA”、“SQLSA”、“Error”、“Message”,它们都有默认的类型。修改这些变量类型可以更方便应用程序的开发,例如使其直接提供中文的提示信息。要修改这些全局变量可以在应用程序的“Properties”对话框中单击“AdditionalProperties”按钮,打开“Application”对话框。选择“VariableTypes”选项卡,在相应的文本框中输入新的类型即可。SQLCA:事务处理类型,用于和数据库通信。SQLDA:在动态SQL中使用。SQLSA:在动态SQL中使用。Error:在运行期间报告错误。Message:处理非PowerBuilder定义的消息,并且在窗口之间传递参数。,2020年6月7日,第65页,4.4应用程序的事件,Open事件Close事件Idle事件SystemError事件ConnectionBegin事件ConnectionEnd事件,2020年6月7日,第66页,Open事件,应用程序一启动就会触发Open事件,且只触发一次。如果没有为该事件添加代码,应用程序就不能够调用应用程序中的对象。否则系统会弹出警告对话框,提示必须对应用程序编写Open事件代码。在PowerBuilder应用程序中,Open事件应该完成以下工作:初始化应用程序。利用INI文件设置某些属性,并初始化一个事务对象。连接要访问的数据库。查询环境,保证运行应用程序所需要的资源都可用。打开应用程序主窗口进行事务处理。,2020年6月7日,第67页,Close事件,在PowerBuilder应用程序结束时,会触发Close事件,它也只触发一次。通常这个事件要完成以下工作:释放应用程序中的对象。向INI文件中存入信息,以便下次运行时恢复状态。关闭应用程序中尚未关闭的文件。断开与数据库的连接。,2020年6月7日,第68页,Idle事件,在应用程序长时间没有进行操作,并且超过应用程序指定的时间间隔时会触发Idle事件。如果编写了Idle事件的代码,系统会在Idle事件触发后执行这些代码,例如在应用程序空闲一段时间没有操作时,让应用程序自动保存或触发系统的屏幕保护程序等。Idle事件的用途有以下几个:创建自己独具特色的屏幕保护程序。隐藏机密数据并强制用户在长时间未操作应用程序时重新输入密码。了解用户是否长时间未操作应用程序。,2020年6月7日,第69页,SystemError事件,在应用程序操作过程中出现严重错误时会触发SystemError事件,可以在此处编写错误处理和可能的恢复代码。如果用户没有编写错误处理程序,那么PowerBuilder将弹出标有错误代码和错误信息的对话框。,2020年6月7日,第70页,ConnectionBegin事件,ConnectionBegin事件用于分布式PowerBuilder应用的服务器端。当客户程序试图连接到服务器程序时,将触发ConnectionBegin事件。,2020年6月7日,第71页,ConnectionEnd事件,ConnectionEnd事件特用于分布式PowerBuilder应用的服务器端。当客户程序试图断开与服务器程序的连接时,将会触发ConnectionEnd事件。,2020年6月7日,第72页,第5章窗体编程,教学目标教学重点教学过程,2020年6月7日,第73页,教学目标,了解创建窗体的基本步骤了解如何添加窗体控件了解窗体属性的设置窗体的控件调整按钮的使用,2020年6月7日,第74页,教学重点,窗体的属性设置窗体的方法和事件,2020年6月7日,第75页,教学过程,创建窗体设置窗体属性窗体方法窗口事件,2020年6月7日,第76页,5.1创建窗体,主窗体子窗体弹出式窗体应答窗体多文档窗体多文档微帮助窗体,2020年6月7日,第77页,主窗体,主窗体一般还可以称为父窗体,独立于其它任何窗体,通常作为一个应用程序的启动界面,可以有菜单、工具栏、最大化、最小化按钮等。首先创建一个Workspace,然后再创建一个Application,在工具栏上单击新建按钮,打开New对话框,选择PBObject选项卡,单击Window选中图标,然后单击OK按钮,在Properties窗口中,可以设置窗体类型,最后保存即可。,2020年6月7日,第78页,子窗体,子窗体是从属于主窗体或一个弹出式窗体的窗体,它是依赖与其祖先窗口而存在的,会跟随其祖先窗口移动,子窗体有以下特点:必须拥有一个主窗体。可以有标题栏。不能有菜单栏。不能超出父窗体的范围。子窗体的创建同主窗体创建方法一样,只是将Properties窗口中WindowType下拉列表框的窗体类型设置为Child!选项即可。为前边创建的myform主窗体创建一个子窗体,命名为chform,并设置子窗体的TitleBar属性为真,BackColor属性为Sky,运行主窗体,并打开子窗体。,2020年6月7日,第79页,弹出式窗体,弹出式窗体与主窗体不同,它是通过其他窗体打开的。弹出式窗体在打开后,焦点自动指向弹出窗体并在弹出窗口上执行相应的操作;只有将弹出窗口关闭后,其祖先窗口才可能重新获得焦点。弹出式窗体具有以下特点:附属于其它窗体。显示在父窗体的上面。当父窗体最小化或关闭时,弹出窗体也会随之最小化或关闭。可以同时对父窗体和弹出式窗体进行操作。创建弹出式窗体和创建主窗体方法相同,只需要将Properties属性窗口中的WindowType属性设置为Popup!选项。,2020年6月7日,第80页,应答式窗体,应答式窗体主要用来提示用户输入信息,不能对其进行最大化、最小化或改变窗体大小的操作。当用户打开一个应答窗体后就不能在对其他窗体进行操作,只有在关闭应答窗体后才能继续对其他窗体进行操作。创建应答窗体和创建主窗体方法相同,只需要将Properties窗口中的WindowType类型选择设置为Response!选项即可。创建一个应答式窗体,命名为rsform,运行主窗体,并打开应答式窗体。,2020年6月7日,第81页,多文档窗体,多文档窗体可以在一个主窗体中可以打开多个子文档窗体,例如word程序。多文档窗体创建方法和主窗体相同,只需要将Properties窗口中的WindowType下拉列表框选择Mdi!选项即可。创建多文档窗体时,必须要为它指定一个菜单,否则系统会弹出一个错误提示框。,2020年6月7日,第82页,多文档微帮助窗体,多文档微帮助窗体和多文档窗体非常相似,创建方法同样是将“Properties”窗口中的“WindowType”下拉列表框选择“Mdihelp!”选项即可。关于多文档微帮助窗体的创建可以参照多文档窗体的创建方法。,2020年6月7日,第83页,5.2设置窗体属性,设置普通属性设置滚动条设置工具栏属性设置其他属性,2020年6月7日,第84页,设置普通属性,窗体的普通属性是在Properties属性窗口中的General选项卡进行设置的,包括Title、Tag、MenuName、WindowType、BackColor等。,2020年6月7日,第85页,设置滚动条,在Properties窗口中的Scroll选项卡中,可以设置窗体的滚动条属性。Scroll选项卡中滚动条的常用属性选项含义如下:HscrollBar设置窗口对象中是否显示水平滚动条。属性值为True时显示水平滚动条,否则为False时不显示。VscrollBar设置窗口对象中是否显示垂直滚动条。属性值为True时显示垂直滚动条,否则为False时不显示。UnitsPerLine设置垂直滚动条的垂直滚动的单位,属性的缺省值为0。UnitPerColumn设置水平滚动条的水平滚动的单位。属性的缺省值为0。ColumnsPerPage设置窗体中每页可以显示多少列。缺省值为0。LinesPerPage设置窗体中每页可以显示多少行。缺省值为0。,2020年6月7日,第86页,设置工具栏属性,在Properties窗口中的Toolbar选项卡中可以设置窗体上工具栏的属性包括是否可见、工具栏的高度和宽度等。Toolbar选项卡中的各属性设置项含义如下所示:ToolbarVisible设置窗口中的工具条是否显示出来。属性值为True时显示,否则为False时不显示。ToolbarAlignment设置工具条在一个MDI窗口中的显示位置。ToolbarX设置当工具条以窗口方式浮动显示时工具条窗口左上角距MDI窗口左边界的距离。用于MDI窗口。ToolbarY设置当工具条以窗口方式浮动显示时工具条窗口左上角距MDI窗口上边界的距离。用于MDI窗口。ToolbarWidth设置当工具条以窗口方式浮动显示时工具条窗口的宽度。用于MDI窗口。ToolbarHeight设置当工具条以窗口方式浮动显示时工具条窗口的高度。用于MDI窗口。,2020年6月7日,第87页,设置其他属性,在Properties窗口中的Other选项卡中可以设置窗口的一些其他属性,包括窗体的高度、宽度、窗体的坐标等。,2020年6月7日,第88页,5.3窗体方法,窗体对象除了有属性外,还有方法,熟练的使用它们可以使应用程序实现个中功能以满足需要。下面是几个常用的方法(由于方法众多,因此仅列举几个):ArrangeSheets:此方法用于排列MDI框架中的表单或图标。返回数据类型为整型。返回值为1成功,否则,返回值为-1失败。ChangeMenu:用于更换与窗口相关联的菜单。其中,参数position只适用于MDI框架类型的窗口。ClassName:用于取窗口对象的类名。返回数据类型为字符串。返回值为窗口对象的类名说明操作成功;否则,将返回空串。Hide:返回数据类型为整型.,用于隐藏窗口。如果返回值为1操作成功,否则,返回值为-1。Move:返回数据类型为整型。用于移动窗口。如果返回值为1,操作成功,否则,返回值为-1;参数是NULL,则返回NULL。,2020年6月7日,第89页,5.4窗口事件,PowerBuilder程序才用事件驱动工作方式,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统,用户或者其它应用程序触发的事件,然后执行相应的事件代码。PowerBuilder10.0中为窗体定义了很多事件,包括Open、MouseDown、Show等,当触发窗体的这些事件时使得应用程序执行相应的程序代码,从而实现应用程序的各种功能。下面列出了接几个常用事件。,2020年6月7日,第90页,Activate:当窗口被激活前,触发该事件。Clicked:当鼠标单击窗口时触发该事件。Close:当窗口关闭时触发该事件。CloseQuery:当窗口将要关闭时触发该事件,用于判断是否关闭该窗口。DoubleClicked:当用户双击窗口未被占用的区域时触发该事件。DragDrop:当一个可拖拽控制对象被放到窗口上时触发该事件。Open:在脚本执行了打开窗口函数,但窗口还没有显示之前时触发该事件。Help:当用户按F1键时,或从标题栏拖拽帮助按钮到菜单命令或控件时触发该事件。Timer:在调用Timer()函数启动定时器,设定的时间已经过去时触发该事件。,2020年6月7日,第91页,第6章控件的使用,教学目标教学重点教学过程,2020年6月7日,第92页,教学目标,了解控件的基础知识熟悉这些常用控件的使用方法和属性熟练地使用常用的控件,2020年6月7日,第93页,教学重点,常用控件的使用方法控件的属性,2020年6月7日,第94页,教学过程,控件概述按钮控件文本框控件列表控件进度条控件、滚动条控件和轨迹条控件图形类控件其他控件,2020年6月7日,第95页,6.1控件概述,PowerBuilder提供了丰富的标准控件,利用这些控件,开发人员可以实现对窗口的设计和变成,还可以完成应用程序开发的大多数功能。PowerBuilder为插入的控件自动命名,开发人员可以修改这些控件,以方便应用程序的开发。另外,还可以进行控件布局、以及定义控件的快捷键等。,2020年6月7日,第96页,插入控件,要向一个窗口插入控件时,可以选择“Insert”“Control”“ControlName”命令,或者在控件下拉列表框中选择对应的控件,如图所示。然后在窗口中要插入控件的位置单击即可完成控件的插入操作。当插入控件后,可以调整它的大小、位置,定义外观和行为,添加脚本代码等。,2020年6月7日,第97页,控件布局,当插入控件后,就可以在布局工具中对控件进行排列和对齐操作,PowerBuilder提供了一个网格(grid)用于对齐控件。对齐控件的方法为:选择要对齐的控件,然后按住“Ctrl”键,并单击需要同第一个对齐的控件。然后在菜单栏中选择“Format”|“Align”菜单项中的命令,或者在工具栏的布局下拉列表框中选择对应的对齐方式。,2020年6月7日,第98页,定义控件的快捷键,可以为控件定义快捷键,使用户可以按下“Alt+快捷键”来快速定位一个控件。如何定义快捷键依赖于控件类型是否具有显示文本,如果没有显示文本,必须在控件本身中定义快捷键。下面介绍其中几个控件的定义快捷键方法。为命令按钮、复选框和单选按钮定义快捷键的步骤为:先单击控件,然后在其属性视图“General”选项卡中的“Text”文本框中,在字符前面加入“&”符号即可定义快捷键。,2020年6月7日,第99页,6.2按钮控件,按钮控件分为两类,一类是命令按钮控件,另一类是图形按钮控件。命令按钮控件(CommandButton)用于创建一个按钮,并执行相应的操作。例如关闭窗口时提示是否关闭该窗口。图形按钮控件用于接受用户的操作命令。它可以在该按钮上显示图像,图像的格式可以为BMP、GIF、JPG和JPEG等。对于按钮控件来说Clicked事件是非常重要的一个事件,此事件在单击按钮时被触发。,2020年6月7日,第100页,6.3文本框控件,文本框控件用于输入或者显示文本信息。灵活运用这些控件可以增强程序界面的交互性。静态文本框控件只用于显示文本信息,不允许输入和修改文本信息,但是可以在设计时或者在脚本代码中更改要显示的信息。一般用于显示一些操作提示或者反馈信息。单行文本框控件用于输入、编辑文本信息,它用于显示较少的数据。在文本框中会有一个光标指示控件的焦点。多行文本框控件允许输入、显示多行的文本信息,用于输入比较多的文本数据。文本框掩码控件是用来创建掩码的,输入和编辑必须与指定的掩码格式一致。它能够完成输入的自动格式化,因此通常用于带格式的输入,例如日期等。RichText文本框控件的功能比多行文本框更强大,用于显示带格式的多文本编辑框。它提供了字体控制、颜色控制、查找、替换、打印预览、打印控制等功能。,2020年6月7日,第101页,6.4列表控件,列表控件的数据可以直接从列表中选取,不需要用户手动输入。对于一些不需要用户输入的或固定的数据可以选择列表控件。单选按钮控件时,是在多个可选项中选择一个,不可以多选,是用于表示“是”或“否”之类的两种状态的控件。例如人的性别“男”或“女”只可以选其中的一个。复选框控件特点在于,复选框控件可以一次性地选择很多信息,例如小说分类可以选择“玄幻”、“武侠”、“网游”等。列表框控件用于以列表的形式显示数据,它可以自动显示垂直滚动条和水平滚动条。下拉列表框控件和列表框控件的作用基本相同,不过在下拉列表框控件的右边有一个向下的箭头。,2020年6月7日,第102页,6.5进度条控件、滚动条控件和轨迹条控件,进度条控件、滚动条控件和轨迹条控件的作用都是对位置进行指示。可以使用进度条表示花费时间较长的操作的执行过程,例如复制文件时的进度。滚动条可以调整窗口显示的位置。轨迹条可以对离散值进行选择操作。进度条控件包括两种:水平进度条和垂直进度条。两种进度条的使用方式基本相同,主要属性也相同。滚动条控件是常见的控件之一,同进度条控件一样也有两种:水平滚动条和垂直滚动条。在窗口中宽度或高度不够的时候就可以显示水平滚动条和垂直滚动条。轨迹条控件主要用于微调指示数据,例如调节音乐的音量。轨迹条控件也分两类:水平轨迹条和垂直轨迹条。,2020年6月7日,第103页,6.6图形类控件,图形类控件通常用于增强界面的显示效果,例如使用直线将窗口中的控件分隔或者用矩形控件为窗口划分区域等。图形类控件也可以当作其他控件使用,例如对矩形控件编写Clicked事件代码后,这个矩形控件就具有了命令按钮的功能了。直线控件在窗体的主要作用是对窗体中不同的控件进行分隔。椭圆控件在窗口中可以起到装饰页面的作用。矩形控件用来画一个矩形,以分割界面或增强界面效果。用来画一个带有圆角的矩形,可以设置圆角矩形的线型、颜色、长、宽等。,2020年6月7日,第104页,6.7其他控件,除了上边所介绍的控件类型的控件外,还有其他几类控件,如Tab控件、图形超链接控件、静态超链接控件等。Tab控件的作用就是将其他控件分成几个部分分别显示,它也就是平时常用的选项卡控件。使用Tab控件可以在一个窗体里使用很多控件而互相不干扰。图形超链接控件拥有图形框的特性,并提供了访问Internet页面的超链接。静态超链接控件也提供了访问Internet页面的超链接。,2020年6月7日,第105页,第7章菜单,教学目标教学重点教学过程,2020年6月7日,第106页,教学目标,了解菜单的概念能创建和灵活使用菜单、窗口控件搭建出美观使用的应用程序界面,2020年6月7日,第107页,教学重点,菜单的分类菜单的属性设置菜单对象的函数菜单的继承,2020年6月7日,第108页,教学过程,菜单概述菜单的分类创建菜单菜单属性设置为菜单项编写脚本菜单对象的函数,2020年6月7日,第109页,7.1菜单概述,菜单是操作应用程序的一个向导,是应用程序中指令集或功能的列表,用户通过选择菜单项发出命令,指示程序完成所需要的任务。它是用户进入该程序的门户,为用户操作程序提供了较为直观的信息。除了子窗口和响应窗口外,其他窗口类型都可以包含菜单。PowerBuilder的菜单也是一种对象,它具有属性、事件和函数,可以在对象脚本中动态修改。菜单项具有以下3种情况:只有菜单项名称。选择这种菜单项将直接完成所对应的操作。菜单项名称后面有小黑三角标记。这表示选中之后会弹出一个菜单形成级联菜单。菜单项名称后面有省略号。这表示选择这种菜单项将弹出一个对话框,用户需要在对话框中做进一步操作。,2020年6月7日,第110页,7.2菜单的分类,窗口中的菜单根据所应用的场合和表现形式一般被分为3种:下拉式菜单、弹出式菜单和级联式菜单。下拉式菜单是在应用程序顶部的菜单栏里并列的一组菜单标题,它在应用窗口打开时随之显示。在下拉式菜单中用户可以选中所需的菜单标题执行相应的操作,例如选中File菜单打开属于该菜单标题的下拉式菜单。弹出式菜单一般与鼠标右键相对应。弹出式菜单没有固定的菜单栏,而是在某一个指定事件发生时才会出现。如果要在程序中使用弹出式菜单,需要在程序中用脚本语言来指定。下拉菜单不需要通过编写脚本来显示。弹出式菜单可以在程序开发时随时指定。级联式菜单的应用十分广泛,它与下拉式菜单和弹出式菜单都有着密切的联系。如果在该下拉菜单的菜单项中还包含有其他的菜单项,这时就可以通过级联菜单的形式给出。级联式菜单是由该菜单项右面的小黑三角标记导出的,该标记表明此菜单项指向另外的级联菜单,2020年6月7日,第111页,7.3创建菜单,利用菜单生成向导继承式创建在菜单项间放置分割线复制菜单项,2020年6月7日,第112页,利用菜单生成向导,在初学菜单的创建时,可以通过菜单生成向导来完成全部的操作。选择“File”“New”命令,打开“New”对话框。然后在“PBObject”选项卡中,选择Menu图标。单击“OK”按钮,即可打开菜单设计面板。,2020年6月7日,第113页,继承式创建,利用继承方式生成菜单可以缩短菜单的创建时间,提高工作效率,增加程序的重用性。继承方式创建菜单的方法为:选择菜单栏上的“File”“Inherit”命令,打开“InheritfromObject”对话框,在此对话框中选择要继承的菜单,然后单击“OK”按钮,弹出“InheritFailed”对话框,警告要将继承的菜单栏关闭,关闭了菜单栏后,就可以将此菜单栏继承过来了。最后对此菜单栏进行必要的修改,并保存此菜单栏。当使用继承方式创建菜单时,可以对继承得到的菜单执行下面的操作:添加菜单项、插入菜单项、修改已有的菜单项、覆盖继承的脚本和为菜单声明函数、结构、变量等。但是,不能执行修改继承菜单项的顺序、删除继承的菜单项、在继承菜单项之间插入菜单项、修改继承得到的菜单项的名称和修改继承菜单项的类型的操作。,2020年6月7日,第114页,在菜单项间放置分割线,在不同菜单项之间加入分割线,实现了不同类型和功能的菜单项的分类排放,方便了用户的使用。在菜单项间放置分割线的方法为:在需要放置分隔的地方添加一个菜单项。在空白文本框中输入一个短横线“-”,按下回车键,这样就在菜单项间放置了一个分割线。,2020年6月7日,第115页,复制菜单项,对于要创建的菜单项和已存在的菜单项的基本结构差不多的情况下。通过复制菜单项,可以节省大量操作,提高效率。复制菜单项的方法为:选择要复制的菜单项和子菜单项,然后右键单击,在弹出的菜单中选择“Duplicate”命令,或者按下Ctrl+T键,则复制的菜单项将在所选择的菜单项的后面的同一级上显示,且名称相同,修改复制菜单项的文本,并修改复制菜单项的属性和脚本,然后保存即可。,2020年6月7日,第116页,7.4菜单属性设置,General选项卡Toolbar选项卡,2020年6月7日,第117页,General选项卡,在“General”选项卡中可以设置菜单的名称、外观属性和快捷键等,“General”选项卡中常用选项的功能如下:Name:字符串型,用来设置当前菜单项的名称。LockName:布尔型,用来设置当前菜单项是否为锁定状态。锁定状态下不能修改名称。Text:字符串型,用来设置菜单项中的文本,中、英文均可。Tag:字符串型,用来存储与该菜单对象有关的字符串。Visable:布尔型,用来设置该菜单项是否可视。Enabled:布尔型,用来设置是否允许当前菜单项被选中。Checked:布尔型,用来设置该菜单项是否已经被选中。MenuItemType:用于设置所创建的菜单项的类型。ShortcutKey:字符串型,用于设置菜单项的快捷键。,2020年6月7日,第118页,Toolbar选项卡,在“Toolbar”选项卡中可以定义在工具栏上可见的工具按钮,设置它如何在工具栏上放置、设置使用的图片、为按钮的按下和未按下状态设置不同的图片。“Toolbar”选项卡中常用选项的功能如下:ToolBarItemText:字符串型,设置应用程序中与该菜单项相联系的工具栏按钮的显示文本信息及提示信息。ToolBarItemName:字符串型,设置应用程序中与该菜单项相联系的工具栏按钮未被按下时所显示的图标名称。ToolBarItemDownName:字符串型,设置应用程序中与该菜单项相联系的工具栏按钮被按下时所显示的图标名称。ToolBarItemVisible:布尔型,设置应用程序中与该菜单项相联系的工具栏上的按钮是否可见。Columns:整型,设置在级联工具栏中所显示的图片的列数。,2020年6月7日,第119页,7.5为菜单项编写脚
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!