《PowerBuilder9教程.ppt》由会员分享,可在线阅读,更多相关《PowerBuilder9教程.ppt(86页珍藏版)》请在三一办公上搜索。
1、PowerBuilder 程序设计与系统开发,PowerBuilder 程序设计与系统开发,内容介绍大纲进度考试方法第一章、PowerBuilder基本原理第二章、基本知识(C/S,数据库)第三章、对象及控件的基本属性及方法;第四章、数据窗控件(Datawindow)的特性及方法;第五章、基本应用(Application)的建立;第六章、PFC(Powerbuilder Founder Class)技术原理及实现。第七章、与数据库系统集成进行开发基本技术及方法;第八章、高级编程技术,内容简介,关于 PB(About PowerBuilder).使用场合(Where)?谁需要(Who)?工与数据
2、库交互原理(How)?学习内容(课程内容)(What)?,关于 PowerBuilder,PowerBuilder 最早是由PowerSoft公司开发并发布销售的,并出品了到PowerBuilder5.0为止的各个版本,初期在广大开发人员中反映并不强烈,到1995年左右,由Sybase收购PowerSoft公司开始并成功推出了PowerBuilder 6.0版本,由此开始,由于它的易用性、数据窗专利技术、对各种流行RDBMS的广泛支持、独特的开发方法及理念、独特的对象编程技术等等,成为现在为止可能是世界上用于数据库前端开发的最快捷、最方便、最强大的工具,一般而言,对一个小型的系统,在充分分析好
3、的前提下,熟悉的程序员可以在一周以内完成一个独立的系统。这对于其他数据库系统前端开发工具,如VB,Delphi,VFP,ORACLE Develop2000等等,如果你用过这些工具,简直无法想象。虽然现在流行的开发工具并不是PB,因为现在到处都是B2B,B2C,PB在这方面能够实现,但比较其它专门工具而言,并不具有非常大的优势,而且实现的技术比较而言相对复杂。但对于S/C结构的数据库应用及Intrnet而言,PowerBuilder仍然是非常好的选择。,PowerBuilder的发展史,1974年Kertzman创建Computer Solutions公司,1987年改名为PowerSoft,
4、1991年6月发布PowerBuilder1.0,1995年8月Sybase与Powersoft公司合并,1996年发布PowerBuilder5.0,2003年发布PowerBuilder9.0,1984年Mark Hoffman 和Bob Epstein共同创立Sybase,PowerBuilder应用场合,1、大型数据库系统C/S模式前端开发工具或B/S模式应用服务器开发工具,一般应用于需要大型或中型数据库系统支持(如ORACLE,Sybase,MS SQL Server,DB2,Informix)作为后台数据支撑平台的管理类系统,一般可以承受千万级纪录量的系统,如:MRPII系统 物料
5、资源计划 ERP系统 企业资源计划 CRM Customer Relation Management(客户关系管理)Call Center 呼叫中心(Haier)2、中、小型数据库系统开发,一般数据量为10万左右,支持并发或仅单机用户,如中、小型企业的内部信息管理、各种小型软件、共享软件等;3、与Sybase的PowerDynamo,Jaguar CTS,PowerSite等集成,建立电子商务应用服务支撑平台;4、与PHP,Java,ASP集成,作为Intranet或Internet的后台数据库系统维护工具,如异种平台(Unix,Linux,Solaris,NT)上的ORACLE,MySQL,
6、DB2等的Client方式维护。,谁需要 PowerBuilder,PB可以做的事情很多,因此也就成为现在各软件公司进行系统开发的一种常用工具,如果你将从事下列工作或有这些需求,则最好了解或通晓PB:1、数据库系统前端开发中的程序设计;2、开发咨询或技术支撑;3、数据库系统分析及设计;4、需要掌握VB,Delphi,Developer 2000以外的其他工具;5、了解Internet网站建设中可以保护现有PB资源的开发方式;注意:PB与数据库系统是不可分离的,因此,你只有对DBMS有基本的理解才可能用好PB,精通当然最好。如果你不知道DBMS是什么东西,请先学习相关内容,南京大学是非常好的入门
7、教材,各流行数据库系统的基本概念都涵盖了。,PB 与数据库交互原理简介,PowerBuilder的吸引人的地方也就是它的数据窗技术,描述为:1、前端(Client)建立独立的Transaction(缓冲区,事务对象),用于响应用户请求及返回执行结果;2、任何事务都必须在某Transaction中执行,默认为SQLCA(SQL Connection Area),如 select*from table_xxx using sqlca;Dw_xxx.settransobject(sqlca);3、数据窗通过Transaction提取数据、编辑数据、再根据需要回写数据,并保证在同一事务内,这样就完成了
8、日常的数据的维护、更新等操作。4、数据窗现在已经作为标准的ActivX可编程对象,可以嵌入到其他程序中使用,但总是在PB中最方便,具有专利技术的数据窗集成了数据编辑的几乎所有的常用算法、操作方式等等,非常方便。5、实际应用中,通过众多的数据窗和其它标准 Windows控件协调运行,就完成了最基本的功能。实际上远远不止这些,大纲进度(课程内容),学分:2+1(多媒体教室授课2,上机1)内容:PowerBuilder基本原理;PB基本知识(对象、函数、事件、变量、脚本、继承);对象及控件的基本属性及方法;数据窗控件(Datawindow)的特性及方法;基本应用(Application)的建立;与数
9、据库系统集成进行开发基本技术及方法;PFC(Powerbuilder Founder Class)技术基本原理;自己动手做东西。,PowerBuilder基本原理,编程原理开发界面库(Library)管理基本对象及控件运行方式,PowerBuilder运行原理,开发支持库Pblib.dllPbcmp.dllPbudo.dllPbrtc.dll,开发(PBLs),编译(Pcode,Mcode),应用(Application:DLL,Exe,PBD),BugFixing,运行支持库PBvm70.dllPBdwe70.dllLibjcc.dllPbo8470.dllPbrtc.dllYouOcx.O
10、CXYouLIb.DLL,DBMS,发布(InstallShield),PowerBuilder基本原理-开发界面,脚本,预览,菜单,工具条,对象属性面板,函数及事件,状态条,PowerBuilder基本原理-开发界面,说明:1、PB开发为标准的MDI方式,即对应不同的开发对象,有它不同的菜单及工具条,对应不同的功能;2、可以创建的对象包括4大类:对象(窗口、函数、结构、菜单)数据窗对象(Grid,Free Form,Tabular,Label,N-Up)数据库(Database Profile,Query,Pipeline)工程(Application,Proxy Library,COM C
11、TS,OLE2,Java Proxy)3、常用工具Library,Editor,Class viewBrowser,DB Profile Editor,Debugger,DW Syntax等,数据库基本知识-1,一、C/S模式图示,DB Servers,TCP/IP,发送SQL语句到数据库服务器,返回SQL语句查询结果到客户机,WinNT,Linux,Unix,Microsoft SQL ServerORACLESybase,DB2,Informix,Clients,Servers,Clients,Clients,1、客户端运行自己的程序,向服务器发送SQL请求及取回结果。2、服务器侦听网络,
12、响应请求并返回处理结果。,物理设备,数据库基本知识-2,二、数据库系统基本组成,DBMS,Applications(应用),网络,协议介质,接口,DB Tools(管理工具),存储管理数据库管理数据库中的对象管理1.表单2.视图3.触发器4.索引5.存储过程4.函数、包,数据库基本知识-3,表单(Table):由属性和记录构成的二维关系表;视图(View):基于单表或多表的查询;存储过程(Store procedure):存储于数据库服务器上的一系列操作的合集,由服务器执行,可以增强可管理性和运行效率;触发器(Triggers):当对表的某种操作发生时,就引发其他的一些逻辑处理;索引(Inde
13、x):服务于快速查询,寄生于表的一种服务;函数,包(function,package):类似于存储过程;数据库(database):上述各对象的集合;设备(device,tablespace,datafile):存放数据库的物理定义;日志(log):记录对数据库的任何操作,用于备份和恢复;用户(User):可以使用数据库中具体内容的人员定义;角色(Role):给同一用户赋予不同的角色,享有不同的权限;权限(Privilege):赋予用户操作数据的权限;,三、关系数据库系统基本概念,数据库基本知识-4,Sybase 随PB发行的Adaptive Server Anywhere(ASA)6.0 是
14、短小精悍的个人数据库系统,支持了大多数的关系数据库操作。如日志、事务、用户、触发器,并提供管理中心(Sybase central)来管理数据库的内容,在PB中,一个小型的数据库应用用ASA作为后台数据库已经完全可以胜任。本课程的后台数据库将主要放在ASA。Sybase Central实际上是以插件方式运行的,他可以管理Sybase产品中的大多数,如Sybase Enterprise(SYE)数据库,Jugar CTS PowerDynamo,等等.提供了统一的界面。当然也可以通过SQL语句来管理数据库。包括建表、索引、存储过程、触发器,数据更新,授权等等都可以通过SQL语句来执行。下面将通过演
15、示来讲解关于Sybase Central的使用,特别是如何建库,建表等操作。,四、ASA中的数据库管理,应用-Applicaiton,如何建立应用(Application)事件及脚本(Events and Scripts)连接(Transaction)入口(Start Pointer),应用-1.建立,1、Menu-File-New-Application(菜单-文件-新建-开始向导-Application)2、选择应用名称和存放的库文件一个应用就建立完毕。实际上这个应用没有任何脚本、窗口,也没有处理任何事情。应用建立完毕后,PB自动建立了一个PBL文件(PowerBuilder Librar
16、y),并在这个PBL文件中创建了一个Application entry(应用条目)一般,一个应用都有一个主窗口,由这个窗口负责和用户的交互过程,而在应用的open事件的脚本中处理的就是如何打开这个窗口,如何和数据库建立连接,如何初始化一些全局变量,关闭应用时(Close事件)做如何处理等等。如:Open事件:.connect using sqlca;open(w_main_frame)Close事件:disconnect using sqlca;destroy xxxx就是在譬如,建立应用名为pb_lesson,存放库名为lesson.pbl,则在lesson.pbl中就存在了一个pb_les
17、son的条目,当然,可以在其他pbl中创建一个新的application.,应用-2.事件及用途(1),Application的事件Open当一个应用执行时,即触发此事件,实际上就是程序的入口,一般处理一些公用变量,公用对象,连接数据库,打开主窗口等操作;Close当主窗口关闭后触发此事件,如果没有打开任何窗口,则在Open事件后直接触发此事件,一般在这个事件中断开连接,清除变量等操作;Connectiongbegin当连接开始时触发此事件,由connect 函数直接触发此事件Connectionend当连接结束后触发此事件,由disconnect函数触发Idle idle(xxx secon
18、d)函数触发,既当系统处于等待状态指定秒数xxx后触发该事件,一般处理如关闭系统,提醒用户等Systemerror当程序运行发生任何系统错误时触发该事件,一般处理记录错误,提醒用户等操作。常用事件:open,close,systemerror,应用-2.事件及用途(2),脚本(scripts)编写基本知识 一般依赖于某事件或函数,由事件或函数触发而执行,由换行或;表明一条语句的结束,如Connect using sqlca;Open(w_main_frame)Disconnect using sqlca;任何嵌入式SQL都必须用;来表明该语句的结束,如Select student_name i
19、nto:ls_name from table_1 where col_1=hello;大小写不敏感,如ls_name 和LS_Name表明同一个变量或对象 可以在一行写多条语句,用;隔开。如ls_name=xxx;ls_name2=yyy;li_cnt=2;变量或对象的引用前必须声明,如stirng ls_name=abc/初始值ls_name=LiujiangangMessagebox(Hello,My Name is+ls_name)就是弹出一个消息框,并提示标题为Hello,内容为 My Name is Liujiangang 的内容。并显示确认按钮用来接受用户响应。,应用-3.连接(1
20、),一般地,在数据库前端开发中,都连接到某数据库服务器的某数据库,或者连接到本地的某数据库或ODBC源,而连接一般是在应用的Open事件中处理的,在Close事件中关闭此连接,连接实际上是Transaction对象,该对象有下列常用属性:DBMS:指定数据库管理系统的名称,如O84 ORACLE 8.0.4,ODBCServerName:指定数据库服务器名称,如EPCS_LOCAL,MSS_DB等Database:指定数据库服务器上的数据库,如MaterialDBUserID:指定数据库用户的ID号,如dboUserPassLogID:指定用于连接到数据库服务器的用户ID号,如 connect
21、orLogPassDBParm:附加的连接参数,如ApplicaitonName=“asdfadsf”等,随DBMS而变化AutoCommit:是否自动提交,如True,false以上这些参数对特定的DBMS不是都必需的,一般DBMS,ServerName,都必须指定。其他属性(该对象创建后才具备):SQLCode:最近SQL语句执行的PB结果码,0,-100,-1三个数值SQLDBCode:最近事务中SQL语句返回的数据库操作返回码;SQLErrtext:最近操作的错误信息;SQLNRows:最近操作返回的结果数据;一般,一个应用中已有默认的Transaction存在,即SQLCA,因此,在
22、Application的OPEN事件中就可以指定它的具体属性用来连接数据库,如/Profile pb_classSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=DSN=pb_class;UID=;PWD=;“,应用-3.连接(2),就指定了Transaction SQLCA的属性,然后就可以用数据库的四个方法中的Connect来处理如一个Application的常用的Open事件脚本为:SQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString=D
23、SN=pb_class;UID=;PWD=;“Connect using sqlca;If sqlca.sqlcode=-1 then Messagebox(Error,cannt Connect to Server+sqlca.serverName,stopsign!)halt close/终止并处理Application的Close事件End ifOpen(w_frame),应用-4.入口,一个系统的入口就是Application的Open事件,但是一般在这个事件中打开某窗口,如Open(w_frame)主要的事务就由w_frame来处理了。此时Application仍继续运行着并监控着W
24、_frame的状态,一旦W_frame结束,就触发Close事件,窗口-Window,窗口概述1、窗口(Window)是程序和用户进行交互的主要界面,类似于VB或Delphi的Form(窗体),在窗口上可以布置各种不同类型的控件以满足程序的要求,各控件间相互协作,完成预定功能2、一个窗口可以只被打开一次或者作为一个实例变量而被创建(实例化)然后打开多次。3、任何窗口的最底层基类都是windows,可以逐级继承,对于节省代码开支,界面一致性等非常有好处。4、数据窗作为标准控件可以直接嵌入到窗口中使用。,窗口-1.创建,有2种方式创建一个窗口:1.新建:从菜单中选择“文件-新建”,弹出新建向导,选
25、择“对象-Windows”,系统就自动创建一个标题为 Untitled 的空窗口,没有任何脚本,但可以被打开。2.继承:菜单中选择“继承”,弹出可被继承的祖先清单,选择一个,系统自动从该祖先窗口继承,新窗口拥有祖先窗口的所有特性及脚本,并可以重载及覆盖这些属性或脚本。创建并修改完成,按Ctrl+S或文件-保存,输入窗口名称并制定放在那个PBL中,该窗口就可以被调用了。注意点:基于继承的窗口,一旦祖先的属性修改,则该窗口中没有被重载或覆盖的部分即自动修改,实际上该窗口分为2部分:祖先和自己。,窗口-2 窗口的基本属性,窗口的属性非常多(41个),仔细理解属性的具体用途及含义对用好窗口对象非常重要
26、。常用属性:,窗口-3.窗口支持的控件.1,窗口共支持以下33种标准控件,窗口-3.窗口支持的控件.2,这些控件各自有自己的属性,事件及函数(Properties,Events,Functions),以后我们将穿插在各章节中提及。UserObject是一种特殊的对象(控件),它以Custom Class,Stand Class,Custom Visible,External Visual,Stand Visual五种基本类为基类,拥有该基类的基本属性,同时在他们的基础上扩展属性,函数及事件,并直接作为一个可视化控件可以被window或实例化后使用。,窗口-4.窗口常用事件,事件是描述一个窗口或
27、窗口中控件的行为的语法,只有在满足特定的条件时才会触发该事件,一般一个事件反映了某种条件下的某一动作。也可以手工方式使系统满足这些条件从而触发这些事件。,窗口-5.窗口常用函数,窗口函数一般用来控制窗口的行为,取得窗口信息,控制窗口的行为,触发特定事件等等,窗口-6.窗口控件操作(一),在界面设计中,往往用到非常多的控件放在同一窗口中,一般会有下列要求:1:对齐操作包括左、上、下、右,竖向、横向对齐等操作。以第一个选择的对象为基准2:大小操作包括宽度,高度:3:相对位置操作水平间距,竖向间距(三个以上对象选中时才有效)4:制表站(tab order)定义当运行时,用户按tab在各个控件上的移动
28、顺序,一般以10进位如 10,20,301405:公用属性及特有属性指定字体、文本对齐方式、前景色、背景色、边框等:,右对齐,水平中间对齐,向下对齐,向上对齐,左对齐,竖向中间对齐,等高,等宽,等高等宽,竖向等间距,横向等间距,文本色(前景色),背景色,边框,窗口-7.窗口控件操作(二),其他按钮功能:,保存,剪切对象或文本,复制对象或文本,粘贴对象或文本,撤销或重做上次的任意操作,打开当前选中对象的脚本,属性面板切换到当前选中对象,脚本工具按钮,全选,选中行及光标所在行标记为注释,选中行及光标所在行标记为非注释,查找和替换,编译当前脚本,粘贴各种语法或原型定义,置于最前端,置于最后端,窗口-
29、8.窗口控件的公用属性,每个控件都有的属性共7个,这实际上是可视控件(Control)的最基本属性Name:在窗口中唯一标记该控件的有效字符串Enabled:使某控件失效或使能,失效后用户无法操作,但是可以手工触发它的事件Visible:可视与否Foreground Color:前景色(按钮无效)BackgroundColor:背景色Tag:与系统无任何关系的一个公用属性,可以做任何事情Border:边框类型,枚举值,有些控件指定了也无效是无效的。位置:在父对象中的定位(如x,y,width,height,x1,y1,x2,y2等,但属性名称不一致)关于颜色的算法:长整型(long),rgb颜
30、色系统颜色值=rgb(red,blue,green)=green*65536+blue*256+red如 红色(255)=rgb(255,0,0)=0*65536+0*256+255可以从下拉工具条中直接选取常用颜色及系统颜色,窗口-9.窗口控件简介 命令按钮,类型:Commandbuttom,PictureCommandButton 最常用属性:default:True时,当在窗口中的任意控件上按下回车键,就会触发它的clicked事件,同时边框加深;cancel:True时,当在窗口中的任意控件上按下Escape,就会触发它的clicked事件;text:现实的文本,如“确定(&O)”就是
31、这样的:PictureCommandButton中PictureName,DisabledPictureName指定有效,失效时的图片,但因为不支持透明,故用的比较少。Htextalign,VtextAlign:制定水平,垂直方向的文本对齐方式事件:clicked:最主要事件,在用户按下并抬起鼠标后触发。其他事件:rbuttondown,dragdrop,dragenter,dragwithin,dragleave,getfocus,lostfocus等等极少用,一般都在clicked事件中写脚本。函数:setfocus():取得焦点,一般在别的控件中调用,如 cb_xxx.post setf
32、ocus()classname():取得名称,如 cb_test.classname()就返回“cb_test”hide(),show(),resize(),move()等较少用到。用途:到处都用,但一个界面上按钮不易太多,而且布置要合理,用图片按钮给用户比较直接的感觉,但是颜色就固定了。,窗口-10.窗口控件简介 静态文本,类型:StaticText,经常用,一般用做显示信息属性:text:显示的文本backcolor,textcolor,bordercolor:颜色属性(底色,前景色,边框色)事件:clicked,doubleclicked,极少对它写脚本函数:同 commandbutto
33、n,很少用,窗口-11.窗口控件简介 可编辑类,主要有:SingleLineEdit,MultiLineEdit,EditMask,RichTextEdit属性:SingleLineEdittext:可以修改,其他和statictext一致;MultiLineEdit全部SingleLineEdit属性和事件,可以折行EditMask和SingleLineEdit一致,可以制定输入的格式(mask属性),如日期型,则mask输入 yyyy-mm-ddRichTextEdit:类word文档处理控件,一般较少用到事件:modified:最常用事件,指明做了修改后执行什么操作。getfocus:取
34、得焦点后执行的操作,一般用来选择文本,如:this.selecttext(1,len(this.text)其他事件很少用到函数:copy(),paste(),selecttext(),cut(),undo()等等,都是用于文本操作的。其他文本编辑控件都有这些函数,如sle_test.copy()表明将sle_test中选中的文本复制到剪贴板。用途:除了数据窗以外的所有用户输入的口子都在这儿,因此用途非常广,结合数据窗,就可以完成用户输入部分的操作了。,类型:HScrollBar,Vscrollbar:滚动条 HTrackBar,VTrackBar:导轨 HProgressBar,VProgre
35、ssBar:进度条属性:minposition,maxposition,position:指定最小,最大值,当前值 如 hpb_1.position=87/表明将进度条的位置移动到87处(不一定代表是 87%,因为和maxposition有关)事件:TrackBar,ScrollBar moved:当移动按钮或导轨时触发函数:TrackBar,ScrollBar setposition(),setrange(),OffsetPos():设置位置,范围,相对移动用途:这几个控件,一般Hprogressbar较常用,经常使用在需要进行常时间运行的程序中,显示当前运行的总体进度,以免用户以为死机而r
36、eset.(PB是单线程内核,即使可以通过yield()函数来进行后台处理,但一旦执行某运算,一般是很难终止的,而且此时cpu的占用会非常高,以至用户以为机器死了),窗口-12.窗口控件简介 显示及控制类,窗口-13.窗口控件简介 下拉列表框,类型:DropDownListBox(ddlb),DropDownPictureListBox(ddplb)属性:两者基本相似,ddplb多了一个图形显示及图形属性,图形处理函数而已,在实际使用中,基本上没有多少区别。Item:指定下拉列表中的项目,一般不能太多,否则就毫无意义。PictureName:按顺序指定图片名称,然后和item中的picture
37、index对应Sorted:是否按item中的文本排序ShowList:=true,则永远显示下拉列表。一般很少用,本来就是想省地方,现在再占用一块地方,还不如用PictureListBox来的好。事件:selectionchanged当选中的对象改变时触发,一般都在这儿写脚本。可以通过事件的参数index来得到当前选中的是哪一项。函数:DirList():可以直接将某目录下的文件名全部显示出来,配合Treeview,可以自己做一个目录及文件树DirSelect():取出由dirlist()生成的列表中当前选中的文件名或目录名;Additem(),Insertitem(),DeleteItem
38、()增加,插入,删除 itemSelectItem():手工指定选中的itemTotalItems():一共有多少个itemReset():清除所有itemFindItem():查找符合条件的item用途:用在唯一需要确定某类型的时候,选项不要超过20个,否则很容易找不到,而且,20个图片堆在一起,很难确定那个是你真正需要选择的。,窗口-14.窗口控件简介 列表类,类型:ListBox,PictureListBox属性、事件、函数:与下拉列表类基本类似,甚至函数、事件、都差不多,不过列表类支持多选因此也就多了有关于多选的其他函数,常用的有3个:state(),判断某个item是否为选中,set
39、state():设置某项的选中状态TotalSelected():一共选中了多少个用途:一般作为需要用户可以有多个选择余地的地方,但是item不能太多,5个里面挑一个好找,50个里面的话,只有眼花 _,窗口-14.窗口控件简介 视图类,类型:ListView,TreeView这是两个仅次于datawindow的复杂程度和好用程度的两个控件,由于有比较丰富的属性和函数可调用,因此可以做出很多效果。属性:ListView:LargetPicture属性主要是用来显示为 LargeIcon!类型而设的。其他属性同PictureListBox但是可以指定多个列,而不是单个item。TreeView一个
40、item可以有3个图片:PictureIndex,selectedPictureIndex,StatePictureIndex每个Item不是单一的文本,而是特别的TreeViewItem,有自己的子属性如 data,label,pictureindex,selectedpictureindex,level等等事件:SelectionChanged:选中项改变 RbuttonDown:鼠标右键,一般用来做弹出菜单:menu_xxx.popup(xpos,ypos)函数:图片类:addpicture(),deletepicture():主要用于动态形成视图 ListView:add,insert
41、,delete等等,如 TreeView:AddStatePicture(),DeleteStatePicture():处理状态图片AddItem(),DeleteImte(),SetItem:增加,删除,修改某节点(Item)InsertItem():指定位置插入某ItemInsertItemLast():在某节点下级最后增加下层ItemInsertItemFirst():在某节点下级最前插入下层ItemInsertItemSort():在某节点下级中按排序插入下层 ItemFindItem():相对查找,如同层、上层、下层Expanditem(),CollapseItem():展开、折叠指
42、定节点SelectItem(),SetFirstVisible()选中某节点,使某节点第一个可见应用:非常广泛,窗口-15.窗口控件简介 其他,其它控件:图形控件,图表控件:Line,Oval,Rectangle,RoundRectangle,他们总是处于最底层而不可能覆盖在其他控件的上方,没有事件,一般仅做装饰用。运行时修改它们的属性就可以实现各种效果。图表控件:Graph用来表示系列数据。一个图表控件可以有一个或多个数据系列。函数:AddCategory,将一个Category添加到控件中。AddSeries,在一个已经存在的Category中添加一个数据系列并返回一个值。AddData和
43、InsertData,利用AddSeries的返回值在一个已经存在的数据系列中添加一个数据项。另外用户还可以直接在数据窗口中利用Graph风格来显示图形化的数据。,菜单-Menu,菜单:Menu应用程序中一般都有菜单,原因很简单。因为如果每项命令都有按钮完成,就会因为按钮过多而使得用户在使用起来找不到头绪。而下拉式菜单不但具有占用空间小的优点,而且层次分明,每项功能都有相应的文字提示。所以对于一个复杂的应用程序来说,菜单绝对是必不可少的。Pow-erBuilder提供了一个菜单画板。用户可在菜单画板中定义自己需要的菜单项和每个菜单项相应的脚本创建:文件-新建-对象-菜单即可进入菜单画板,或文件
44、-继承,选择祖先菜单,然后也进入菜单画板。属性:每个菜单有若干级联的菜单项构成,每项成为一个 menu item,每个item都具有菜单的所有属性,包括:普通属性:name:名称,如果从祖先继承,则不能修改text:菜单文字,如“文件(&F)”Microhelp:显示在MDI Help 框架窗口的状态栏中的文字Visible,Enable:可见,使能shortcut:快捷键,如 CTRL+S,有下级菜单的菜单没有快捷键工具条属性:ToolbarItemText:工具条上的文字;ToolbarItemName:工具条图片;ToolbarItemDownName:工具条下压图片;ToolbarIt
45、emSpace:工具条前面的空格;ToolbarItemOrder:工具条顺序;ToolbarItemIndex:工具条所在的Dock顺序,菜单-如何使用,菜单的事件:selected:选中后,即鼠标通过该菜单项;clicked:单击后,一般在这儿写脚本;脚本编写:一般在脚本中打开某窗口,如:openSheet(w_mdi_sheet,parentwindow,0,original!)就是在框架窗口parentwindow(菜单的属性,表明该菜单依附的主窗口,一般为MDI Frame)中打开w_mdi_sheet,并将打开的窗口的标题自动显示在定义为windows类型的菜单下,并保持原始w_m
46、di_sheet的位置。详细参数请查看opensheet函数。一般菜单用在2个地方:MDI Frame:框架窗口中,作为主程序的主要界面的一种执行方式,一般一个MDI Frame都必须指定一个菜单;Popup:弹出式菜单,用在特定的窗口或对象中,由menu_xxx.popup(x,y)来调用如何引用菜单:2种方式,显示和隐式引用:如有框架中定义菜单:m_frame,其中有 m_file(文件&F)m_file_open(打开&O)m_file_empbar(-)m_file_exit(关闭(&x)则在主窗口中对该菜单中m_file_exit菜单项的引用可以是:或m_frame.item1.it
47、em3,框架-框架应用程序,在如今的Window应用软件中,多文档(MDI)应用程序占了很大的比重。这是因为相对于单文档界面,多文档界面可以同时打开多个窗口,无需关闭窗口就可以打开另外一个,可以自由的在各文档之间切换。因此,为了使我们的软件更具实用性,能够更好的方便用户,创建一个MDI的应用程序就显得尤为必要。MDI应用程序由两部分组成,即MDI框架和框架内的工作表(Sheet)。MDI框架就是执行程序时首先打开的主窗口。在框架中打开的其它窗口被称为工作表。在同一屏幕中,主窗口即MDI框架只能有一个,而工作表可以有很多个,且只能在框架范围内活动。也就是说,当工作表被最小化时,它不会缩小在Win
48、95的工具栏上,而会出现在框架底部的一个横栏上。当工作表被最大化时,它也只能被放大到充满整个框架,而不是整个屏幕。创建框架的方法很简单,只需首先在窗口属性中指定一个菜单,然后将窗口的类型改为MDI Frame或MDI FrameWith Micorhelp即可。MDI框架中的工作表实际上就是一个普通的窗口,但是不能是MDI Frame、MDI FrameWith Micro-Help或Response等类型的窗口。要想在一个MDI框架中建立一个工作表,只需调用函数OpenSheet即可。工作表在MDI框架中有三种排列方式,即Cascaded!、Layered!和Original!三种方式。用户
49、可以在建立工作表时为工作表指定一种排列方式,也可以通过函数ArrangeSheets来重新排列工作关于工作表的函数还有GetActiveSheet,被用来返回当前MDI框架中被激活的工作表,它的返回值是一个窗口类型。当没有工作表被激活时,返回值为Null,用户可以通过IsVa-lid函数来判断其返回值是否有效。GetFirstSheet,用来返回MDI框架中顶层的工作表;GetNextSheet用来返回指定工作表的下一个表。ParentWindow()函数,返回当前工作表的父窗口,也就是其所在的MDI框架。OpenSheetWithParm带参数的打开工作表。在MDI框架中的工作表如果带有菜单
50、,那么当该工作表被打开后它的菜单将覆盖原来框架的菜单。当多个工作表具有不同的菜单时,在菜单栏上显示的将是当前被激活工作表的菜单。只有当关闭了所有的工作表,或者工作表根本没有菜单的时候,在菜单栏上显示的才是MDI框架的菜单。对于菜单项的每一项,无论它是MDI框架还是工作表的菜单,都可以为该选项设置状态栏上的提示信息,只需在菜单项的属性Micro-Help中设置即可。一般,工作表的菜单都是从框架菜单继承或相同的,以免打开一个工作表后无法打开其他工作表。,窗口 小结,1 窗口是程序的核心界面,应用通过各个窗口,利用窗口中的各种控件和用户交互,完成数据的处理工作;2 一般应用都以MDI Frame作为