PB編程培訓(xùn)資料_第1頁(yè)
PB編程培訓(xùn)資料_第2頁(yè)
PB編程培訓(xùn)資料_第3頁(yè)
PB編程培訓(xùn)資料_第4頁(yè)
PB編程培訓(xùn)資料_第5頁(yè)
已閱讀5頁(yè),還剩107頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

秦皇島東軟軟件有限公司何鈺PowerBuilder程序設(shè)計(jì)培訓(xùn)教程Pb的安裝Pb6.5的安裝Pb6.5的安裝Pb6.5補(bǔ)丁的安裝AnyWhere5.5的安裝Pb9的安裝內(nèi)容簡(jiǎn)介關(guān)于PB(AboutPowerBuilder).使用場(chǎng)合(Where)?工與數(shù)據(jù)庫(kù)交互原理(How)?學(xué)習(xí)內(nèi)容(課程內(nèi)容)(What)?關(guān)于PowerBuilderPowerBuilder由Sybase公司出品,最早是由PowerSoft公司開發(fā)并發(fā)布銷售的,并出品了到PowerBuilder5.0為止的各個(gè)版本,初期在廣大開發(fā)人員中反映并不強(qiáng)烈,到1995年左右,由Sybase收購(gòu)PowerSoft公司開始并成功推出了PowerBuilder6.0版本,由此開始,由于它的易用性、數(shù)據(jù)窗專利技術(shù)、對(duì)各種流行RDBMS的廣泛支持、獨(dú)特的開發(fā)方法及理念、獨(dú)特的對(duì)象編程技術(shù)等等,成為現(xiàn)在為止可能是世界上用于數(shù)據(jù)庫(kù)前端開發(fā)的最快捷、最方便、最強(qiáng)大的工具,一般而言,對(duì)一個(gè)小型的系統(tǒng),在充分分析好的前提下,熟悉的程序員可以在一周以內(nèi)完成一個(gè)獨(dú)立的系統(tǒng)。這對(duì)于其他數(shù)據(jù)庫(kù)系統(tǒng)前端開發(fā)工具,如VB,Delphi,VFP,ORACLEDevelop2000等等,如果你用過這些工具,簡(jiǎn)直無(wú)法想象。

雖然現(xiàn)在流行的開發(fā)工具并不是PB,因?yàn)楝F(xiàn)在到處都是B2B,B2C,PB在這方面能夠?qū)崿F(xiàn),但比較其它專門工具而言,并不具有非常大的優(yōu)勢(shì),而且實(shí)現(xiàn)的技術(shù)比較而言相對(duì)復(fù)雜。但對(duì)于C/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用及Intrnet而言,PowerBuilder仍然是非常好的選擇。PowerBuilder應(yīng)用場(chǎng)合1、大型數(shù)據(jù)庫(kù)系統(tǒng)C/S模式前端開發(fā)工具或B/S模式應(yīng)用服務(wù)器開發(fā)工具,一般應(yīng)用于需要大型或中型數(shù)據(jù)庫(kù)系統(tǒng)支持(如ORACLE,Sybase,MSSQLServer,DB2,Informix)作為后臺(tái)數(shù)據(jù)支撐平臺(tái)的管理類系統(tǒng),一般可以承受千萬(wàn)級(jí)紀(jì)錄量的系統(tǒng),如:

·SIMIS系統(tǒng)–社保管理信息系統(tǒng)

·HIS系統(tǒng)–醫(yī)院管理信息系統(tǒng)

·“費(fèi)靈系統(tǒng)”–財(cái)政非稅系統(tǒng)2、中、小型數(shù)據(jù)庫(kù)系統(tǒng)開發(fā),一般數(shù)據(jù)量為10萬(wàn)左右,支持并發(fā)或僅單機(jī)用戶,如中、小型企業(yè)的內(nèi)部信息管理、各種小型軟件、共享軟件等;PB與數(shù)據(jù)庫(kù)交互原理簡(jiǎn)介PowerBuilder的吸引人的地方也就是它的數(shù)據(jù)窗技術(shù),描述為:1、前端(Client)建立獨(dú)立的Transaction(緩沖區(qū),事務(wù)對(duì)象),用于響應(yīng)用戶請(qǐng)求及返回執(zhí)行結(jié)果;2、任何事務(wù)都必須在某Transaction中執(zhí)行,默認(rèn)為SQLCA(SQLConnectionArea),如select*fromtable_xxxusingsqlca;Dw_xxx.settransobject(sqlca);3、數(shù)據(jù)窗通過Transaction提取數(shù)據(jù)、編輯數(shù)據(jù)、再根據(jù)需要回寫數(shù)據(jù),并保證在同一事務(wù)內(nèi),這樣就完成了日常的數(shù)據(jù)的維護(hù)、更新等操作。4、數(shù)據(jù)窗現(xiàn)在已經(jīng)作為標(biāo)準(zhǔn)的ActiveX可編程對(duì)象,可以嵌入到其他程序中使用,但總是在PB中最方便,具有專利技術(shù)的數(shù)據(jù)窗集成了數(shù)據(jù)編輯的幾乎所有的常用算法、操作方式等等,非常方便。5、實(shí)際應(yīng)用中,通過眾多的數(shù)據(jù)窗和其它標(biāo)準(zhǔn)Windows控件協(xié)調(diào)運(yùn)行,就完成了最基本的功能。實(shí)際上遠(yuǎn)遠(yuǎn)不止這些……課程內(nèi)容PowerBuilder基本原理;PB基本知識(shí)(對(duì)象、函數(shù)、事件、變量、腳本、繼承);對(duì)象及控件的基本屬性及方法;數(shù)據(jù)窗控件(Datawindow)的特性及方法;基本應(yīng)用(Application)的建立;與數(shù)據(jù)庫(kù)系統(tǒng)集成進(jìn)行開發(fā)基本技術(shù)及方法;自己動(dòng)手做東西。PowerBuilder基本原理編程原理開發(fā)界面庫(kù)(Library)管理基本對(duì)象及控件運(yùn)行方式PowerBuilder運(yùn)行原理開發(fā)支持庫(kù)Pblib.dllPbcmp.dllPbudo.dllPbrtc.dll…開發(fā)(PBLs)編譯(Pcode,Mcode)應(yīng)用(Application:DLL,Exe,PBD)BugFixing運(yùn)行支持庫(kù)pbdwe90.dllpbdwo90.dllpbdwp90.dllpbmss90.dllpbo8490.dllpbsql90.dllpbvm90.dllLibjcc.dll……DBMS發(fā)布(InstallShield)PowerBuilder基本原理-開發(fā)界面腳本預(yù)覽菜單工具條對(duì)象屬性面板函數(shù)及事件狀態(tài)條PowerBuilder基本原理-開發(fā)界面說(shuō)明:1、PB開發(fā)為標(biāo)準(zhǔn)的MDI方式,即對(duì)應(yīng)不同的開發(fā)對(duì)象,有它不同的菜單及工具條,對(duì)應(yīng)不同的功能;2、可以創(chuàng)建的對(duì)象包括4大類:

對(duì)象(窗口、函數(shù)、結(jié)構(gòu)、菜單……)

數(shù)據(jù)窗對(duì)象(Grid,Free

Form,Tabular,Label,N-Up……)

數(shù)據(jù)庫(kù)(DatabaseProfile,Query,Pipeline)

工程(Application,Proxy

Library,COMCTS,OLE2,JavaProxy……)3、常用工具

Library,Editor,Classview

Browser,DBProfileEditor,

Debugger,DWSyntax等數(shù)據(jù)庫(kù)基本知識(shí)-1一、C/S模式圖示DBServersTCP/IP發(fā)送SQL語(yǔ)句到數(shù)據(jù)庫(kù)服務(wù)器返回SQL語(yǔ)句查詢結(jié)果到客戶機(jī)WinNT,Linux,UnixMicrosoftSQLServerORACLESybase,DB2,InformixClientsServersClientsClients1、客戶端運(yùn)行自己的程序,向服務(wù)器發(fā)送SQL請(qǐng)求及取回結(jié)果。2、服務(wù)器偵聽網(wǎng)絡(luò),響應(yīng)請(qǐng)求并返回處理結(jié)果。數(shù)據(jù)庫(kù)基本知識(shí)-2二、數(shù)據(jù)庫(kù)系統(tǒng)基本組成物理設(shè)備DBMSApplications(應(yīng)用)網(wǎng)絡(luò),協(xié)議介質(zhì),接口DBTools(管理工具)存儲(chǔ)管理數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)中的對(duì)象管理1.表單2.視圖3.觸發(fā)器4.索引5.存儲(chǔ)過程4.函數(shù)、包數(shù)據(jù)庫(kù)基本知識(shí)-3三、關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)基本概念表單(Table):由屬性和記錄構(gòu)成的二維關(guān)系表;視圖(View):基于單表或多表的查詢;存儲(chǔ)過程(Storeprocedure):存儲(chǔ)于數(shù)據(jù)庫(kù)服務(wù)器上的一系列操作的合集,由服務(wù)器執(zhí)行,可以增強(qiáng)可管理性和運(yùn)行效率;觸發(fā)器(Triggers):當(dāng)對(duì)表的某種操作發(fā)生時(shí),就引發(fā)其他的一些邏輯處理;索引(Index):服務(wù)于快速查詢,寄生于表的一種服務(wù);函數(shù),包(function,package):類似于存儲(chǔ)過程;數(shù)據(jù)庫(kù)(database):上述各對(duì)象的集合;設(shè)備(device,tablespace,datafile):存放數(shù)據(jù)庫(kù)的物理定義;日志(log):記錄對(duì)數(shù)據(jù)庫(kù)的任何操作,用于備份和恢復(fù);用戶(User):可以使用數(shù)據(jù)庫(kù)中具體內(nèi)容的人員定義;角色(Role):給同一用戶賦予不同的角色,享有不同的權(quán)限;權(quán)限(Privilege):賦予用戶操作數(shù)據(jù)的權(quán)限;數(shù)據(jù)庫(kù)基本知識(shí)-4四、ASA的數(shù)據(jù)庫(kù)管理

Sybase隨PB發(fā)行的AdaptiveServerAnywhere(ASA)6.0是短小精悍的個(gè)人數(shù)據(jù)庫(kù)系統(tǒng),支持了大多數(shù)的關(guān)系數(shù)據(jù)庫(kù)操作。如日志、事務(wù)、用戶、觸發(fā)器,并提供管理中心(Sybasecentral)來(lái)管理數(shù)據(jù)庫(kù)的內(nèi)容,

在PB中,一個(gè)小型的數(shù)據(jù)庫(kù)應(yīng)用用ASA作為后臺(tái)數(shù)據(jù)庫(kù)已經(jīng)完全可以勝任。本課程的后臺(tái)數(shù)據(jù)庫(kù)將主要放在ASA。

SybaseCentral實(shí)際上是以插件方式運(yùn)行的,他可以管理Sybase產(chǎn)品中的大多數(shù),如SybaseEnterprise(SYE)數(shù)據(jù)庫(kù),JugarCTSPowerDynamo,等等.提供了統(tǒng)一的界面。當(dāng)然也可以通過SQL語(yǔ)句來(lái)管理數(shù)據(jù)庫(kù)。包括建表、索引、存儲(chǔ)過程、觸發(fā)器,數(shù)據(jù)更新,授權(quán)等等都可以通過SQL語(yǔ)句來(lái)執(zhí)行。 下面將通過演示來(lái)講解關(guān)于SybaseCentral的使用,特別是如何建庫(kù),建表等操作。應(yīng)用-Application如何建立應(yīng)用(Application)事件及腳本(EventsandScripts)連接(Transaction)入口(StartPointer)應(yīng)用-1.建立1、Menu->File->New->Application (菜單-文件->新建->開始向?qū)?>Application)2、選擇應(yīng)用名稱和存放的庫(kù)文件 一個(gè)應(yīng)用就建立完畢。實(shí)際上這個(gè)應(yīng)用沒有任何腳本、窗口,也沒有處理任何事情。 應(yīng)用建立完畢后,PB自動(dòng)建立了一個(gè)PBL文件(PowerBuilderLibrary),并在這個(gè)PBL文件中創(chuàng)建了一個(gè)Applicationentry(應(yīng)用條目)

一般,一個(gè)應(yīng)用都有一個(gè)主窗口,由這個(gè)窗口負(fù)責(zé)和用戶的交互過程,而在應(yīng)用的open事件的腳本中處理的就是如何打開這個(gè)窗口,如何和數(shù)據(jù)庫(kù)建立連接,如何初始化一些全局變量,關(guān)閉應(yīng)用時(shí)(Close事件)做如何處理等等。如:

Open事件:

……. connectusingsqlca;

open(w_main_frame) Close事件:

disconnectusingsqlca; destroyxxxx

就是在 譬如,建立應(yīng)用名為pb_lesson,存放庫(kù)名為lesson.pbl,則在lesson.pbl中就存在了一個(gè)pb_lesson的條目,當(dāng)然,可以在其他pbl中創(chuàng)建一個(gè)新的application. 應(yīng)用-2.事件及用途(1)Application的事件Open

當(dāng)一個(gè)應(yīng)用執(zhí)行時(shí),即觸發(fā)此事件,實(shí)際上就是程序的入口,一般處理一些公用變量,公用對(duì)象,連接數(shù)據(jù)庫(kù),打開主窗口等操作;Close

當(dāng)主窗口關(guān)閉后觸發(fā)此事件,如果沒有打開任何窗口,則在Open事件后直接觸發(fā)此事件,一般在這個(gè)事件中斷開連接,清除變量等操作;Connectiongbegin

當(dāng)連接開始時(shí)觸發(fā)此事件,由connect函數(shù)直接觸發(fā)此事件Connectionend

當(dāng)連接結(jié)束后觸發(fā)此事件,由disconnect函數(shù)觸發(fā)Idle

idle(xxxsecond)函數(shù)觸發(fā),既當(dāng)系統(tǒng)處于等待狀態(tài)指定秒數(shù)xxx后觸發(fā)該事件,一般處理如關(guān)閉系統(tǒng),提醒用戶等Systemerror

當(dāng)程序運(yùn)行發(fā)生任何系統(tǒng)錯(cuò)誤時(shí)觸發(fā)該事件,一般處理記錄錯(cuò)誤,提醒用戶等操作。常用事件:open,close,systemerror應(yīng)用-2.事件及用途(2)腳本(scripts)編寫基本知識(shí)

·一般依賴于某事件或函數(shù),由事件或函數(shù)觸發(fā)而執(zhí)行,由換行或;表明一條語(yǔ)句的結(jié)束,如

Connectusingsqlca;

Open(w_main_frame) Disconnectusingsqlca; ·任何嵌入式SQL都必須用;來(lái)表明該語(yǔ)句的結(jié)束,如

Selectstudent_name

into:ls_name

fromtable_1 wherecol_1=‘hello’; ·大小寫不敏感,如ls_name

和LS_Name表明同一個(gè)變量或?qū)ο?/p>

·可以在一行寫多條語(yǔ)句,用;隔開。如

ls_name=‘xxx’;ls_name2=‘yyy’;li_cnt=2; ·變量或?qū)ο蟮囊们氨仨毬暶鳎?/p>

stirng

ls_name=‘a(chǎn)bc’//初始值

ls_name=‘Liujiangang’

Messagebox(‘Hello’,’MyNameis‘+ls_name)

就是彈出一個(gè)消息框,并提示標(biāo)題為Hello,內(nèi)容為MyNameisLiujiangang

的內(nèi)容。并顯示確認(rèn)按鈕用來(lái)接受用戶響應(yīng)。應(yīng)用-3.連接(1)一般地,在數(shù)據(jù)庫(kù)前端開發(fā)中,都連接到某數(shù)據(jù)庫(kù)服務(wù)器的某數(shù)據(jù)庫(kù),或者連接到本地的某數(shù)據(jù)庫(kù)或ODBC源,而連接一般是在應(yīng)用的Open事件中處理的,在Close事件中關(guān)閉此連接,連接實(shí)際上是Transaction對(duì)象,該對(duì)象有下列常用屬性:DBMS:指定數(shù)據(jù)庫(kù)管理系統(tǒng)的名稱,如O84ORACLE8.0.4,ODBCServerName:指定數(shù)據(jù)庫(kù)服務(wù)器名稱,如EPCS_LOCAL,MSS_DB等Database:指定數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)庫(kù),如MaterialDBUserID:指定數(shù)據(jù)庫(kù)用戶的ID號(hào),如dboUserPassLogID:指定用于連接到數(shù)據(jù)庫(kù)服務(wù)器的用戶ID號(hào),如connectorLogPassDBParm:附加的連接參數(shù),如‘ApplicaitonName=“asdfadsf”’等,隨DBMS而變化AutoCommit:是否自動(dòng)提交,如True,false以上這些參數(shù)對(duì)特定的DBMS不是都必需的,一般DBMS,ServerName,都必須指定。其他屬性(該對(duì)象創(chuàng)建后才具備):SQLCode:最近SQL語(yǔ)句執(zhí)行的PB結(jié)果碼,0,-100,-1三個(gè)數(shù)值SQLDBCode:最近事務(wù)中SQL語(yǔ)句返回的數(shù)據(jù)庫(kù)操作返回碼;SQLErrtext:最近操作的錯(cuò)誤信息;SQLNRows:最近操作返回的結(jié)果數(shù)據(jù);一般,一個(gè)應(yīng)用中已有默認(rèn)的Transaction存在,即SQLCA,因此,在Application的OPEN事件中就可以指定它的具體屬性用來(lái)連接數(shù)據(jù)庫(kù),如//Profilepb_classSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=pb_class;UID=;PWD=;“應(yīng)用-3.連接(2)就指定了TransactionSQLCA的屬性,然后就可以用數(shù)據(jù)庫(kù)的四個(gè)方法中的Connect來(lái)處理如一個(gè)Application的常用的Open事件腳本為:SQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=pb_class;UID=;PWD=;“Connectusingsqlca;Ifsqlca.sqlcode=-1then

Messagebox(‘Error’,’cann’tConnecttoServer’+sqlca.serverName,stopsign!) haltclose//終止并處理Application的Close事件EndifOpen(w_frame)應(yīng)用-4.入口一個(gè)系統(tǒng)的入口就是Application的Open事件,但是一般在這個(gè)事件中打開某窗口,如

Open(w_frame)

主要的事務(wù)就由w_frame來(lái)處理了。此時(shí)Application仍繼續(xù)運(yùn)行著并監(jiān)控著W_frame的狀態(tài),一旦W_frame結(jié)束,就觸發(fā)Close事件窗口-window窗口概述1、窗口(Window)是程序和用戶進(jìn)行交互的主要界面,類似于VB或Delphi的Form(窗體),在窗口上可以布置各種不同類型的控件以滿足程序的要求,各控件間相互協(xié)作,完成預(yù)定功能。2、一個(gè)窗口可以只被打開一次或者作為一個(gè)實(shí)例變量而被創(chuàng)建(實(shí)例化)然后打開多次。3、任何窗口的最底層基類都是windows,可以逐級(jí)繼承,對(duì)于節(jié)省代碼開支,界面一致性等非常有好處。4、數(shù)據(jù)窗作為標(biāo)準(zhǔn)控件可以直接嵌入到窗口中使用。窗口-1.創(chuàng)建有2種方式創(chuàng)建一個(gè)窗口:1.新建:從菜單中選擇“文件->新建”,彈出新建向?qū)?,選擇“對(duì)象-Windows”,系統(tǒng)就自動(dòng)創(chuàng)建一個(gè)標(biāo)題為Untitled的空窗口,沒有任何腳本,但可以被打開。2.繼承: 菜單中選擇“繼承”,彈出可被繼承的祖先清單,選擇一個(gè),系統(tǒng)自動(dòng)從該祖先窗口繼承,新窗口擁有祖先窗口的所有特性及腳本,并可以重載及覆蓋這些屬性或腳本。創(chuàng)建并修改完成,按Ctrl+S或文件->保存,輸入窗口名稱并指定放在那個(gè)PBL中,該窗口就可以被調(diào)用了。注意點(diǎn):基于繼承的窗口,一旦祖先的屬性修改,則該窗口中沒有被重載或覆蓋的部分即自動(dòng)修改,實(shí)際上該窗口分為2部分:祖先和自己。窗口-2.基本屬性窗口的屬性非常多(41個(gè)),仔細(xì)理解屬性的具體用途及含義對(duì)用好窗口對(duì)象非常重要。屬性名稱含義標(biāo)題(Title):定義該窗口的標(biāo)題欄;類型(WindowType)定義該窗口的類型:Main!-主窗口,常用方式Popup-彈出式窗口,用來(lái)為其它窗口提供支持信息Child!–由父窗口打開,并且只能在父窗口范圍內(nèi)存在Response!-用于輸入信息,模式窗口MDI!,MDIhelp!-多文檔窗口菜單(MenuName)對(duì)Main,MDI,mdihelp類型的窗口有效,設(shè)置該窗口的菜單名稱外觀屬性外觀:enabled,visible,titlebar,maxbox,minbox,resizeable,border,backcolor,mdiclientcolor,HscrollBar,VScrollBar等等位置:x,y,width,height,pointer菜單:toolbarvisible,toolbaralignment,toolbarx,toolbarY,toolbarWidth,ToolbarHeight運(yùn)行態(tài)屬性(只讀,描述性質(zhì))Control[],menuid運(yùn)行態(tài)屬性bringtotop窗口-3.支持控件(1)窗口共支持以下33種標(biāo)準(zhǔn)控件1CommandButton命令按鈕(cb_ok,cb_cancel)18HScrollBar

水平滾動(dòng)條2PictureButton圖形按鈕(pb_ok,pb_cancel)19VScrollBar垂直滾動(dòng)條3CheckBox

檢查框(cbx_choice_1)20HTrackBar

水平導(dǎo)軌4RadioButton收音機(jī)按鈕(單選按鈕)(rb_tes)21VTrackBar

垂直導(dǎo)軌5StaticText靜態(tài)文本(st_notice)22HProgressBar

水平進(jìn)度條6StaticHyperLink文本超級(jí)連接(shl_1)23VProgressBar

垂直進(jìn)度條7Picture圖形(p_1)24DropDownListBox下拉列表框(ddlb_8PictureHyperLink圖形超級(jí)連接(phl_1)25DropDownPictureListBox下拉圖形列表框(ddplb_9GroupBox

分組框26ListBox列表框(lb_)10Line 線條27PictureListBox圖形列表框11Oval橢圓28ListView列表視圖12Rectangle矩形29TreeView樹13RoundRectangle圓角矩形30Tab標(biāo)簽14SingleLineEdit單行編輯(sle_test)31DataWindow數(shù)據(jù)窗15EditMask掩碼編輯(em_year)32Graph圖表16MultiLineEdit

多行編輯33OLEOLE2對(duì)象17RichTextEdit富文本編輯34UserObject用戶自定義控件(對(duì)象)窗口-3.支持控件(2)這些控件各自有自己的屬性,事件及函數(shù)(Properties,Events,Functions),以后我們將穿插在各章節(jié)中提及。

UserObject是一種特殊的對(duì)象(控件),它以CustomClass,Stand

Class,Custom

Visible,External

Visual,StandVisual五種基本類為基類,擁有該基類的基本屬性,同時(shí)在他們的基礎(chǔ)上擴(kuò)展屬性,函數(shù)及事件,并直接作為一個(gè)可視化控件可以被window或?qū)嵗笫褂谩4翱?4.常用事件 事件是描述一個(gè)窗口或窗口中控件的行為的語(yǔ)法,只有在滿足特定的條件時(shí)才會(huì)觸發(fā)該事件,一般一個(gè)事件反映了某種條件下的某一動(dòng)作。也可以手工方式使系統(tǒng)滿足這些條件從而觸發(fā)這些事件。事件名稱事件含義及用途Open當(dāng)該窗口被用open()函數(shù)打開時(shí)觸發(fā)該事件,一般作為該窗口進(jìn)行初始化處理的入口Close當(dāng)該窗口被關(guān)閉后消失前觸發(fā),可能被close()函數(shù)關(guān)閉,也可能是系統(tǒng)級(jí)關(guān)閉操作,一般用于收尾處理Resize當(dāng)該窗口的大小調(diào)整時(shí)觸發(fā),一般用于調(diào)整界面控件的相對(duì)位置CloseQuery后于Close事件觸發(fā),當(dāng)該窗口準(zhǔn)備關(guān)閉前觸發(fā),可以替代close事件,并可以決定是否可以關(guān)閉Timer由窗口函數(shù)Timer()觸發(fā),到達(dá)指定秒數(shù)后觸發(fā)該事件,一般用于控制。Activate當(dāng)窗口被激活前觸發(fā),觸發(fā)后焦點(diǎn)自動(dòng)移到該窗口的第一個(gè)制表站或上次的制表站,如果沒有任何可編輯對(duì)象,則該窗口獲得焦點(diǎn)。Deactivate當(dāng)該窗口變?yōu)榉羌せ顮顟B(tài)前觸發(fā)鼠標(biāo)事件Clicked,doubleclicked,mousedown,mousemove,mouseup,rbuttondown拖放事件Dragdrop,dragwithin,dragenter,dragleave鍵盤Key,systemkey其他DDE控制,Other,show,hide,ToolbarMoved,Help窗口-5.常用函數(shù)窗口函數(shù)一般用來(lái)控制窗口的行為,取得窗口信息,控制窗口的行為,觸發(fā)特定事件等等函數(shù)名稱函數(shù)含義及用途Open(),openSheet()系統(tǒng)級(jí)函數(shù),用于打開某特定窗口,變參調(diào)用Close()系統(tǒng)級(jí)函數(shù),用戶關(guān)閉某窗口,變參調(diào)用PostEvent在當(dāng)前腳本執(zhí)行完畢后觸發(fā)某事件(后續(xù)某動(dòng)作),變參TriggerEvent立刻觸發(fā)某事件(嵌入某動(dòng)作),變參Parentwindow()系統(tǒng)級(jí)函數(shù),取該窗口或某對(duì)象的父窗口Classname()指定窗口或?qū)ο蟮念惷Q)Typeof()返回當(dāng)前對(duì)象的類型(powerobjet)Timer(seconds)開始計(jì)時(shí),如Timer(5,this)表示本窗口在5秒后觸發(fā)Timer事件,變參ArrangeSheets()如果是MDI框架窗口,則按指定方式排列所有文檔窗口Hide(),show()隱藏,顯示,setredraw(false)大小及位置Move(x,y),resize(w,h),workspacewidth(),workspaceheight(),workspacex(),workspacey(),setposition菜單Settoolbarpos(),settoolbar(),changemenu()鼠標(biāo)Pointerx(),pointery()其他DDE控制系列函數(shù)窗口-6.控件操作(1)在界面設(shè)計(jì)中,往往用到非常多的控件放在同一窗口中,一般會(huì)有下列要求:1:對(duì)齊操作 包括左、上、下、右,豎向、橫向?qū)R等操作。 以第一個(gè)選擇的對(duì)象為基準(zhǔn)2:大小操作 包括寬度,高度:3:相對(duì)位置操作 水平間距,豎向間距(三個(gè)以上對(duì)象選中時(shí)才有效)4:制表站(taborder)定義 當(dāng)運(yùn)行時(shí),用戶按tab在各個(gè)控件上的移動(dòng)順序,一般以10進(jìn)位 如10,20,30……140……5:公用屬性及特有屬性指定 字體、文本對(duì)齊方式、前景色、背景色、邊框等:右對(duì)齊水平中間對(duì)齊向下對(duì)齊向上對(duì)齊左對(duì)齊豎向中間對(duì)齊等高文本色(前景色)背景色邊框等寬等高等寬橫向等間距豎向等間距窗口-7.控件操作(2)其他按鈕功能:剪切對(duì)象或文本粘貼對(duì)象或文本撤銷或重做上次的任意操作腳本工具按鈕置于最前端復(fù)制對(duì)象或文本置于最后端打開當(dāng)前選中對(duì)象的腳本屬性面板切換到當(dāng)前選中對(duì)象全選選中行及光標(biāo)所在行標(biāo)記為注釋選中行及光標(biāo)所在行標(biāo)記為非注釋查找和替換編譯當(dāng)前腳本粘貼各種語(yǔ)法或原型定義保存窗口-8.控件的公用屬性每個(gè)控件都有的屬性共7個(gè),這實(shí)際上是可視控件(Control)的最基本屬性Name:在窗口中唯一標(biāo)記該控件的有效字符串Enabled:使某控件失效或使能,失效后用戶無(wú)法操作,但是可以手工觸發(fā)它的事件Visible:可視與否ForegroundColor:前景色(按鈕無(wú)效)BackgroundColor:背景色Tag:與系統(tǒng)無(wú)任何關(guān)系的一個(gè)公用屬性,可以做任何事情Border:邊框類型,枚舉值,有些控件指定了也無(wú)效是無(wú)效的。位置:在父對(duì)象中的定位(如x,y,width,height,x1,y1,x2,y2等,但屬性名稱不一致)關(guān)于顏色的算法:長(zhǎng)整型(long),rgb顏色系統(tǒng)顏色值=rgb(red,blue,green)=green*65536+blue*256+red如紅色(255)=rgb(255,0,0)=0*65536+0*256+255可以從下拉工具條中直接選取常用顏色及系統(tǒng)顏色窗口-9.窗口控件簡(jiǎn)介-命令按鈕類型:Commandbuttom,PictureCommandButton

最常用屬性:

default:True時(shí),當(dāng)在窗口中的任意控件上按下回車鍵,就會(huì)觸發(fā)它的clicked事件,同時(shí)邊框加深;

cancel:True時(shí),當(dāng)在窗口中的任意控件上按下Escape,就會(huì)觸發(fā)它的clicked事件;

text:現(xiàn)實(shí)的文本,如“確定(&O)”就是這樣的:

PictureCommandButton中

PictureName,DisabledPictureName指定有效,失效時(shí)的圖片,但因?yàn)椴恢С滞该?,故用的比較少。

Htextalign,VtextAlign:制定水平,垂直方向的文本對(duì)齊方式事件:

clicked:最主要事件,在用戶按下并抬起鼠標(biāo)后觸發(fā)。 其他事件:rbuttondown,dragdrop,dragenter,dragwithin,dragleave,getfocus,lostfocus等等 極少用,一般都在clicked事件中寫腳本。函數(shù):

setfocus():取得焦點(diǎn),一般在別的控件中調(diào)用,如cb_xxx.post

setfocus()

classname():取得名稱,如cb_test.classname()就返回“cb_test”

hide(),show(),resize(),move()等較少用到。用途:到處都用,但一個(gè)界面上按鈕不易太多,而且布置要合理,用圖片按鈕給用戶比較直接的感覺,但是顏色就固定了。窗口-10.窗口控件簡(jiǎn)介-靜態(tài)文本類型:StaticText

,經(jīng)常用,一般用做顯示信息屬性:

text:顯示的文本

backcolor,textcolor,bordercolor:顏色屬性(底色,前景色,邊框色)事件:

clicked,doubleclicked,極少對(duì)它寫腳本函數(shù):同commandbutton,很少用窗口-11.窗口控件簡(jiǎn)介-可編輯類主要有:SingleLineEdit,MultiLineEdit,EditMask,RichTextEdit屬性:

SingleLineEdit text:可以修改,其他和statictext一致;

MultiLineEdit

全部SingleLineEdit屬性和事件,可以折行

EditMask

和SingleLineEdit一致,可以制定輸入的格式(mask屬性),如日期型,則 mask輸入‘yyyy-mm-dd’

RichTextEdit:類word文檔處理控件,一般較少用到事件:

modified:最常用事件,指明做了修改后執(zhí)行什么操作。

getfocus:取得焦點(diǎn)后執(zhí)行的操作,一般用來(lái)選擇文本,如: this.selecttext(1,len(this.text))

其他事件很少用到函數(shù):

copy(),paste(),selecttext(),cut(),undo()等等,都是用于文本操作的。其他文本編輯控件都有這些函數(shù),如sle_test.copy()表明將sle_test中選中的文本復(fù)制到剪貼板。用途: 除了數(shù)據(jù)窗以外的所有用戶輸入的口子都在這兒,因此用途非常廣,結(jié)合數(shù)據(jù)窗,就可以完成用戶輸入部分的操作了。窗口-12.窗口控件簡(jiǎn)介-顯示及控制類類型:HScrollBar,Vscrollbar:滾動(dòng)條

HTrackBar,VTrackBar:導(dǎo)軌

HProgressBar,VProgressBar:進(jìn)度條屬性:minposition,maxposition,position:指定最小,最大值,當(dāng)前值 如hpb_1.position=87//表明將進(jìn)度條的位置移動(dòng)到87處(不一定代表是\ 87%,因?yàn)楹蚼axposition有關(guān))事件:TrackBar,ScrollBar moved:當(dāng)移動(dòng)按鈕或?qū)к墪r(shí)觸發(fā)函數(shù):TrackBar,ScrollBar

setposition(),setrange(),OffsetPos():設(shè)置位置,范圍,相對(duì)移動(dòng)用途: 這幾個(gè)控件,一般Hprogressbar較常用,經(jīng)常使用在需要進(jìn)行常時(shí)間運(yùn)行的程序中,顯示當(dāng)前運(yùn)行的總體進(jìn)度,以免用戶以為死機(jī)而reset.(PB是單線程內(nèi)核,即使可以通過yield()函數(shù)來(lái)進(jìn)行后臺(tái)處理,但一旦執(zhí)行某運(yùn)算,一般是很難終止的,而且此時(shí)cpu的占用會(huì)非常高,以至用戶以為機(jī)器死了)窗口-13.窗口控件簡(jiǎn)介-下拉列表框類型:DropDownListBox(ddlb),DropDownPictureListBox(ddplb)屬性:兩者基本相似,ddplb多了一個(gè)圖形顯示及圖形屬性,圖形處理函數(shù)而已,在實(shí)際使用中,基本上沒有多少區(qū)別。

Item:指定下拉列表中的項(xiàng)目,一般不能太多,否則就毫無(wú)意義。

PictureName:按順序指定圖片名稱,然后和item中的pictureindex對(duì)應(yīng)

Sorted:是否按item中的文本排序

ShowList:=true,則永遠(yuǎn)顯示下拉列表。一般很少用,本來(lái)就是想省地方,現(xiàn)在再占用一塊地方,還不如用PictureListBox來(lái)的好。事件:selectionchanged

當(dāng)選中的對(duì)象改變時(shí)觸發(fā),一般都在這兒寫腳本??梢酝ㄟ^事件的參數(shù)index來(lái)得到當(dāng)前選中的是哪一項(xiàng)。函數(shù):

DirList():可以直接將某目錄下的文件名全部顯示出來(lái),配合Treeview,可以自己做一個(gè)目錄及文件樹

DirSelect():取出由dirlist()生成的列表中當(dāng)前選中的文件名或目錄名;

Additem(),Insertitem(),DeleteItem()增加,插入,刪除item

SelectItem():手工指定選中的item

TotalItems():一共有多少個(gè)item Reset():清除所有item

FindItem():查找符合條件的item用途: 用在唯一需要確定某類型的時(shí)候,選項(xiàng)不要超過20個(gè),否則很容易找不到,而且,20個(gè)圖片堆在一起,很難確定那個(gè)是你真正需要選擇的。窗口-14.窗口控件簡(jiǎn)介-列表類類型:ListBox,PictureListBox屬性、事件、函數(shù): 與下拉列表類基本類似,甚至函數(shù)、事件、都差不多,不過列表類支持多選 因此也就多了有關(guān)于多選的其他函數(shù),常用的有3個(gè):

state(),判斷某個(gè)item是否為選中,

setstate():設(shè)置某項(xiàng)的選中狀態(tài)

TotalSelected():一共選中了多少個(gè)用途: 一般作為需要用戶可以有多個(gè)選擇余地的地方,但是item不能太多,5個(gè)里面挑一個(gè)好找,50個(gè)里面的話,只有眼花@_@窗口-15.窗口控件簡(jiǎn)介-視圖類類型:ListView,TreeView

這是兩個(gè)僅次于datawindow的復(fù)雜程度和好用程度的兩個(gè)控件,由于有比較豐富的屬性和函數(shù)可調(diào)用,因此可以做出很多效果。屬性:ListView

:LargetPicture屬性 主要是用來(lái)顯示為L(zhǎng)argeIcon!類型而設(shè)的。 其他屬性同PictureListBox

但是可以指定多個(gè)列,而不是單個(gè)item。

TreeView

一個(gè)item可以有3個(gè)圖片: PictureIndex,selectedPictureIndex,StatePictureIndex

每個(gè)Item不是單一的文本,而是特別的TreeViewItem,有自己的子屬性 如data,label,pictureindex,selectedpictureindex,level等等事件:SelectionChanged:選中項(xiàng)改變

RbuttonDown:鼠標(biāo)右鍵,一般用來(lái)做彈出菜單:menu_xxx.popup(xpos,ypos)函數(shù):圖片類:addpicture(),deletepicture():主要用于動(dòng)態(tài)形成視圖

ListView:add,insert,delete等等,如

TreeView:

AddStatePicture(),DeleteStatePicture():處理狀態(tài)圖片

AddItem(),DeleteImte(),SetItem:增加,刪除,修改某節(jié)點(diǎn)(Item)

InsertItem():指定位置插入某Item

InsertItemLast():在某節(jié)點(diǎn)下級(jí)最后增加下層Item

InsertItemFirst():在某節(jié)點(diǎn)下級(jí)最前插入下層Item

InsertItemSort():在某節(jié)點(diǎn)下級(jí)中按排序插入下層Item

FindItem():相對(duì)查找,如同層、上層、下層

Expanditem(),CollapseItem():展開、折疊指定節(jié)點(diǎn)

SelectItem(),SetFirstVisible()選中某節(jié)點(diǎn),使某節(jié)點(diǎn)第一個(gè)可見應(yīng)用:非常廣泛窗口-16.窗口控件簡(jiǎn)介-其他其它控件:圖形控件,圖表控件:

Line,Oval,Rectangle,RoundRectangle,他們總是處于最底層而不可能覆蓋在其他控件的上方,沒有事件,一般僅做裝飾用。運(yùn)行時(shí)修改它們的屬性就可以實(shí)現(xiàn)各種效果。圖表控件:Graph

用來(lái)表示系列數(shù)據(jù)。一個(gè)圖表控件可以有一個(gè)或多個(gè)數(shù)據(jù)系列。 函數(shù):

AddCategory,將一個(gè)Category添加到控件中。 AddSeries,在一個(gè)已經(jīng)存在的Category中添加一個(gè)數(shù)據(jù)系列并返回一個(gè)值。

AddData和InsertData,利用AddSeries的返回值在一個(gè)已經(jīng)存在的數(shù)據(jù)系列中添加一個(gè)數(shù)據(jù)項(xiàng)。另外用戶還可以直接在數(shù)據(jù)窗口中利用Graph風(fēng)格來(lái)顯示圖形化的數(shù)據(jù)。菜單-Menu菜單:Menu

應(yīng)用程序中一般都有菜單,原因很簡(jiǎn)單。因?yàn)槿绻宽?xiàng)命令都有按鈕完成,就會(huì)因?yàn)榘粹o過多而使得用戶在使用起來(lái)找不到頭緒。而下拉式菜單不但具有占用空間小的優(yōu)點(diǎn),而且層次分明,每項(xiàng)功能都有相應(yīng)的文字提示。所以對(duì)于一個(gè)復(fù)雜的應(yīng)用程序來(lái)說(shuō),菜單絕對(duì)是必不可少的。Pow-erBuilder提供了一個(gè)菜單畫板。用戶可在菜單畫板中定義自己需要的菜單項(xiàng)和每個(gè)菜單項(xiàng)相應(yīng)的腳本創(chuàng)建:文件-新建-對(duì)象-菜單即可進(jìn)入菜單畫板,或文件-繼承,選擇祖先菜單,然后也進(jìn)入菜單畫板。屬性:每個(gè)菜單有若干級(jí)聯(lián)的菜單項(xiàng)構(gòu)成,每項(xiàng)成為一個(gè)menuitem,每個(gè)item都具有菜單的所有屬性,包括: 普通屬性:

name:名稱,如果從祖先繼承,則不能修改

text:菜單文字,如“文件(&F)”

Microhelp:顯示在MDIHelp框架窗口的狀態(tài)欄中的文字

Visible,Enable:可見,使能

shortcut:快捷鍵,如CTRL+S,有下級(jí)菜單的菜單沒有快捷鍵 工具條屬性:

ToolbarItemText:工具條上的文字;

ToolbarItemName:工具條圖片;

ToolbarItemDownName:工具條下壓圖片;

ToolbarItemSpace:工具條前面的空格;

ToolbarItemOrder:工具條順序;

ToolbarItemIndex:工具條所在的Dock順序菜單-如何使用菜單的事件:

selected:選中后,即鼠標(biāo)通過該菜單項(xiàng);

clicked:單擊后,一般在這兒寫腳本;腳本編寫: 一般在腳本中打開某窗口,如:

openSheet(w_mdi_sheet,parentwindow,0,original!)就是在框架窗口parentwindow(菜單的屬性,表明該菜單依附的主窗口,一般為MDIFrame)中打開w_mdi_sheet,并將打開的窗口的標(biāo)題自動(dòng)顯示在定義為windows類型的菜單下,并保持原始w_mdi_sheet的位置。詳細(xì)參數(shù)請(qǐng)查看opensheet函數(shù)。一般菜單用在2個(gè)地方:

MDIFrame:框架窗口中,作為主程序的主要界面的一種執(zhí)行方式, 一般一個(gè)MDIFrame都必須指定一個(gè)菜單;

Popup:彈出式菜單,用在特定的窗口或?qū)ο笾?,由menu_xxx.popup(x,y)來(lái)調(diào)用如何引用菜單:

2種方式,顯示和隱式引用: 如有框架中定義菜單:m_frame,其中有

m_file(文件&F)

m_file_open(打開&O)

m_file_empbar(-)

m_file_exit(關(guān)閉(&x))

則在主窗口中對(duì)該菜單中m_file_exit菜單項(xiàng)的引用可以是:

m_frame.m_file.m_file_exit或

m_frame.item[1].item[3]框架-框架應(yīng)用程序在如今的Window應(yīng)用軟件中,多文檔(MDI)應(yīng)用程序占了很大的比重。這是因?yàn)橄鄬?duì)于單文檔界面,多文檔界面可以同時(shí)打開多個(gè)窗口,無(wú)需關(guān)閉窗口就可以打開另外一個(gè),可以自由的在各文檔之間切換。因此,為了使我們的軟件更具實(shí)用性,能夠更好的方便用戶,創(chuàng)建一個(gè)MDI的應(yīng)用程序就顯得尤為必要。MDI應(yīng)用程序由兩部分組成,即MDI框架和框架內(nèi)的工作表(Sheet)。MDI框架就是執(zhí)行程序時(shí)首先打開的主窗口。在框架中打開的其它窗口被稱為工作表。在同一屏幕中,主窗口即MDI框架只能有一個(gè),而工作表可以有很多個(gè),且只能在框架范圍內(nèi)活動(dòng)。也就是說(shuō),當(dāng)工作表被最小化時(shí),它不會(huì)縮小在Win95的工具欄上,而會(huì)出現(xiàn)在框架底部的一個(gè)橫欄上。當(dāng)工作表被最大化時(shí),它也只能被放大到充滿整個(gè)框架,而不是整個(gè)屏幕。創(chuàng)建框架的方法很簡(jiǎn)單,只需首先在窗口屬性中指定一個(gè)菜單,然后將窗口的類型改為MDIFrame或MDIFrameWith

Micorhelp即可。MDI框架中的工作表實(shí)際上就是一個(gè)普通的窗口,但是不能是MDIFrame、MDIFrameWithMicro-Help或Response等類型的窗口。要想在一個(gè)MDI框架中建立一個(gè)工作表,只需調(diào)用函數(shù)OpenSheet即可。工作表在MDI框架中有三種排列方式,即Cascaded!、Layered!和Original!三種方式。用戶可以在建立工作表時(shí)為工作表指定一種排列方式,也可以通過函數(shù)ArrangeSheets來(lái)重新排列工作關(guān)于工作表的函數(shù)還有GetActiveSheet,被用來(lái)返回當(dāng)前MDI框架中被激活的工作表,它的返回值是一個(gè)窗口類型。當(dāng)沒有工作表被激活時(shí),返回值為Null,用戶可以通過IsVa-lid函數(shù)來(lái)判斷其返回值是否有效。GetFirstSheet,用來(lái)返回MDI框架中頂層的工作表;GetNextSheet用來(lái)返回指定工作表的下一個(gè)表。ParentWindow()函數(shù),返回當(dāng)前工作表的父窗口,也就是其所在的MDI框架。OpenSheetWithParm帶參數(shù)的打開工作表。在MDI框架中的工作表如果帶有菜單,那么當(dāng)該工作表被打開后它的菜單將覆蓋原來(lái)框架的菜單。當(dāng)多個(gè)工作表具有不同的菜單時(shí),在菜單欄上顯示的將是當(dāng)前被激活工作表的菜單。只有當(dāng)關(guān)閉了所有的工作表,或者工作表根本沒有菜單的時(shí)候,在菜單欄上顯示的才是MDI框架的菜單。對(duì)于菜單項(xiàng)的每一項(xiàng),無(wú)論它是MDI框架還是工作表的菜單,都可以為該選項(xiàng)設(shè)置狀態(tài)欄上的提示信息,只需在菜單項(xiàng)的屬性Micro-Help中設(shè)置即可。一般,工作表的菜單都是從框架菜單繼承或相同的,以免打開一個(gè)工作表后無(wú)法打開其他工作表。窗口-小結(jié)1窗口是程序的核心界面,應(yīng)用通過各個(gè)窗口,利用窗口中的各種控件和用戶交互,完成數(shù)據(jù)的處理工作;2一般應(yīng)用都以MDIFrame作為框架程序,3Sheet菜單從Frame菜單繼承或沒有菜單,保證框架界面的統(tǒng)一和完整;4界面設(shè)計(jì)應(yīng)遵循一定的原則,不是想怎么做就怎么做,必須考慮協(xié)同開發(fā)問題,用以保證整體性和一致性。5腳本的編寫、函數(shù)、事件的命名都必須考慮規(guī)范性的問題,從一開始養(yǎng)成良好的命名規(guī)范及編寫習(xí)慣,對(duì)己對(duì)人都極有好處。Datawindow-IntroDatawindowDatawindow-1.基礎(chǔ)數(shù)據(jù)窗口是用于查詢、顯示和維護(hù)來(lái)自關(guān)系數(shù)據(jù)庫(kù)或其他數(shù)據(jù)源(如Excel文件或其他文件)數(shù)據(jù)的對(duì)象。在數(shù)據(jù)窗口中可以定義數(shù)據(jù)的顯示格式、顯示風(fēng)格和其他數(shù)據(jù)屬性,使數(shù)據(jù)對(duì)用戶更加直觀和更有意義。

Datawindow-2.顯示風(fēng)格和數(shù)據(jù)源顯示風(fēng)格(Style)

用于定義數(shù)據(jù)窗口的顯示風(fēng)格和外部特征。Tabular(列表):記錄橫置于頁(yè)面,標(biāo)題在所有列的頂端,可以多行數(shù)據(jù);Freeform(自由格式):每列左側(cè)有一個(gè)標(biāo)簽,一屏只顯示一條記錄;Grid(網(wǎng)格):如Excel的sheet格式;Label(標(biāo)簽):每頁(yè)有幾個(gè)標(biāo)簽,每個(gè)標(biāo)簽一行;N-UP(分欄):并列顯示;Group(分組):在表頭下按列分組的格式;Composite(組合):嵌套格式Graph(圖表):數(shù)據(jù)的圖形顯示;Crosstab(交叉):行列格式的數(shù)據(jù)表示,列可動(dòng)態(tài)計(jì)算;RichText:多信息文本,文本段落中可以嵌入列;Ole:連接或嵌入到數(shù)據(jù)窗口的OLE對(duì)象于獲取的數(shù)據(jù)關(guān)聯(lián)。數(shù)據(jù)源(DataSource)

定義數(shù)據(jù)窗口中數(shù)據(jù)的來(lái)源:QuickSelect:來(lái)源于sql數(shù)據(jù)庫(kù)的多表;SQLSelect:定義完整的sql語(yǔ)法;Query:通過查詢面板定義的查詢對(duì)象作為數(shù)據(jù)源;Storedprocedure:以存儲(chǔ)過程作為數(shù)據(jù)源;External:通過文件輸入或程序代碼生成的數(shù)據(jù)。Datawindow-3.如何使用數(shù)據(jù)窗口(1)使用數(shù)據(jù)窗主要包括以下兩個(gè)步驟:一、在datawindowpainter或datawindowBuilder中創(chuàng)建或編輯一個(gè)數(shù)據(jù)窗口對(duì)象;二、在開發(fā)環(huán)境中,將一個(gè)數(shù)據(jù)窗口控件或組件放在窗口或web頁(yè)面中,并把數(shù)據(jù)窗口控件和數(shù)據(jù)窗口對(duì)象關(guān)聯(lián)起來(lái)(指定數(shù)據(jù)窗的dataobject屬性)通過數(shù)據(jù)窗口控件,應(yīng)用程序與在數(shù)據(jù)窗口畫板中定義的數(shù)據(jù)窗口對(duì)象進(jìn)行通訊,通過編寫程序控制數(shù)據(jù)窗口控件和控件所包含的數(shù)據(jù)窗口對(duì)象。程序代碼可以修改、查詢數(shù)據(jù),改變數(shù)據(jù)的表現(xiàn)形式、處理錯(cuò)誤、共享數(shù)據(jù)窗口控件之間的數(shù)據(jù)等等。Datawindow-3.如何使用數(shù)據(jù)窗口(1)關(guān)聯(lián): 數(shù)據(jù)窗控件是一個(gè)對(duì)象容器。 在窗口或其他對(duì)象中,指定某數(shù)據(jù)窗控件的dataobject到某存在的數(shù)據(jù)窗對(duì)象,就可以在窗口中使用該數(shù)據(jù)窗對(duì)象了。命名:dw前綴,如dw_employee對(duì)象:d_employee引用:w_xxx.dw_employeeDatawindow-4.數(shù)據(jù)訪問數(shù)據(jù)訪問如果某數(shù)據(jù)窗需要和數(shù)據(jù)庫(kù)建立聯(lián)系,則該數(shù)據(jù)窗必須指定到某事務(wù)對(duì)象,因此一般通過以下步驟來(lái)訪問:1、創(chuàng)建并連接事務(wù)對(duì)象;connectusingsqlca2、為數(shù)據(jù)窗設(shè)置事務(wù)對(duì)象;3、獲取、修改數(shù)據(jù),保存到數(shù)據(jù)庫(kù);4、斷開數(shù)據(jù)庫(kù)連接 其中,1,4一般在Application中的open和close事件中處理。2,3示例:

dw_control.settransobject(sqlca);//連接事務(wù)

dw_control.retrieve()//檢索數(shù)據(jù)()中空為無(wú)條件檢索

….處理數(shù)據(jù)

//更新數(shù)據(jù)

ifdw_control.update(true,false)=1then//Update修改數(shù)據(jù)庫(kù)

commitusingsqlca;//提交數(shù)據(jù)//真正將數(shù)據(jù)提交到數(shù)據(jù)庫(kù)

dw_control.resetupdate() else rollbackusingsqlca;//回滾最近的提交、、恢復(fù)當(dāng)前的數(shù)據(jù)

endif加載外部數(shù)據(jù):

importClipboard,importfile,importstring函數(shù)提供了獲取外部數(shù)據(jù)的方式Datawindow-5.數(shù)據(jù)維護(hù)數(shù)據(jù)維護(hù) 一個(gè)數(shù)據(jù)窗有三個(gè)緩沖區(qū)用來(lái)存放用戶的數(shù)據(jù): 主緩沖區(qū)(Primary!):保存未被修改或刪除或過濾出的數(shù)據(jù); 過濾緩沖區(qū)(Filted!):被過濾出的數(shù)據(jù); 刪除緩沖區(qū)(Deleted!):被用戶刪除的數(shù)據(jù)PB通過這三個(gè)緩沖區(qū)保留用戶所有對(duì)檢索出來(lái)的數(shù)據(jù)的操作,然后統(tǒng)一處理為與數(shù)據(jù)庫(kù)打交道的sql語(yǔ)法,如insert,delete,update,實(shí)際上就是完成最終的這三種操作。數(shù)據(jù)存取

提?。?/p>

GetItemDate(獲取的數(shù)據(jù)是Date類型的),GetitemDateTime,GetItemDecimal,GetItemNumber,

GetItemString,GetItemTime,GetText

寫入:

SetItem dw_control.getitemString(20《行》,’emp_name’)即得到Primary!緩沖區(qū)中第20行的emp_name列的值。

setitem(20,’emp_name’,’劉建剛‘)即設(shè)置Primary!緩沖區(qū)中第20行的emp_name為指定值。也可以用數(shù)據(jù)窗控件的對(duì)象屬性來(lái)存取數(shù)據(jù),如上述語(yǔ)法可以對(duì)應(yīng)為:

dw_control.object.emp_name[20] dw_control.object.emp_name[20]=‘劉建剛’其他函數(shù)常用:

Accepttext,DeleteRow,Filter,Getrow,InsertRow,Reset,Retrieve

RowsCopy,RowsMove,RowsDiscard,RowCount,ModifiedCount,DeletedCount,FiltedCount

ScrollToRow,ScrollPriorPage,ScrollNextPage,ScrollFirstPage,ScrollLastPage

SelectRow,GetItemStatus,SetItemStatus,SetFilter,SetSort,Find

ShareData,ShareDataOff,SaveAs,SaveAsAscii

Update,ResetUpdateDatawindow-6.對(duì)象屬性數(shù)據(jù)窗口對(duì)象屬性主要用來(lái)存儲(chǔ)控制數(shù)據(jù)窗口行為的有關(guān)信息,這些信息不是數(shù)據(jù)窗口控件的屬性,而是在數(shù)據(jù)窗口控件(容器)中存在的數(shù)據(jù)窗口對(duì)象的屬性。利用Describe和Modify函數(shù)可以用來(lái)提取和修改數(shù)據(jù)窗口對(duì)象屬性。 如:dw_control.describe(‘emp_name.border’)即取得emp_name的邊框?qū)傩?或dw_control.object.emp_name.border

取出,返回:any類型

dw_control.modify(‘emp_name.border=“2”’)即將該邊框設(shè)為0類型(無(wú)邊框)PowerBuilder的數(shù)據(jù)窗對(duì)象(14個(gè))提供了非常多,相當(dāng)全面的屬性描述,這些對(duì)象的有些屬性可以修改,有些是只讀的,如某數(shù)據(jù)列的編輯格式,一般制作完成后,在數(shù)據(jù)窗口控件中就不能再修改而只能取出他的具體編輯方式。理解這些屬性并充分運(yùn)用好這些屬性,可以極大地?cái)U(kuò)展編程的靈活性和可擴(kuò)展性,這也是數(shù)據(jù)窗對(duì)象學(xué)習(xí)的難點(diǎn),一般難以在短時(shí)間內(nèi)掌握,需要不斷的磨練。Datawindow-7.數(shù)據(jù)窗口中的錯(cuò)誤二種類型(控件中存在)1、DBError事件,在數(shù)據(jù)窗控件retrieve,update時(shí)出錯(cuò)時(shí)觸發(fā),描述該數(shù)據(jù)窗對(duì)象連接的事務(wù)返回的具體信息,如update時(shí)報(bào)告一致性錯(cuò)誤,列錯(cuò)誤等等,連接錯(cuò)誤,共享錯(cuò)誤等等。2、ItemError事件:當(dāng)某列編輯不符合檢驗(yàn)規(guī)則(validation)時(shí)觸發(fā)該事件Datawindow-8.數(shù)據(jù)窗口應(yīng)用實(shí)例(1)設(shè)計(jì)步驟:1.先通過Datawindow

Winzard設(shè)計(jì)好數(shù)據(jù)窗對(duì)象,如d_my_first_grid2.新建或繼承一個(gè)窗口,在窗口中加入一個(gè)數(shù)據(jù)窗控件dw_13.查看該控件的屬性,調(diào)整dataobject屬性,連接到剛才的數(shù)據(jù)窗對(duì)象,或在程序中指定他的屬性,如:

dw_1.dataobject=‘d_my_first_grid’

按“…”彈出如下對(duì)話框,選擇剛才設(shè)計(jì)的數(shù)據(jù)窗對(duì)象就可以了Datawindow-8.數(shù)據(jù)窗口應(yīng)用實(shí)例(2)使用步驟:1.創(chuàng)建事務(wù)對(duì)象,默認(rèn)為SQLCA,可以自己定義一個(gè)全局事務(wù)變量;2.指定該事務(wù)對(duì)象的屬性,連接到數(shù)據(jù)庫(kù);(一般在Application的Open事件中處理),如:

//RollCall

的連接定義

SQLCA.DBMS="ODBC"

SQLCA.AutoCommit=False

SQLCA.DBParm="ConnectString='DSN=RollCall;UID=;PWD=',PBCatalogOwner='dba'"Connectusingsqlca;ifsqlca.sqlcode<>0then

//顯示錯(cuò)誤,處理錯(cuò)誤

endif3.編輯某窗口,一般在這個(gè)窗口的Open事件中對(duì)數(shù)據(jù)窗控件設(shè)置事務(wù)信息,如Windows的Open事件中寫入:

dw_1.settransobject(sqlca)

即表示將dw_1的數(shù)據(jù)操作和sqlca這個(gè)事務(wù)對(duì)象聯(lián)系起來(lái)。Datawindow-8.數(shù)據(jù)窗口應(yīng)用實(shí)例(3)4.檢索數(shù)據(jù):dw_1.retrieve(參數(shù)1,參數(shù)2,…….);5.對(duì)檢索出來(lái)的數(shù)據(jù)(放在緩沖區(qū)中)進(jìn)行編輯,通過直接編輯,Setitem,dw_1.object對(duì)象引用等操作,編輯數(shù)據(jù);6.編輯完成,將該數(shù)據(jù)窗中的修改過的數(shù)據(jù)保存,是否修改由PB自己判斷,可以通過dw_1.GetItemStatus函數(shù)得到每行、每列的修改狀態(tài)用來(lái)作特殊的判斷。一般的保存腳本如下:

ifdw_1.update(true,false)=1thencommit;//提交事務(wù)

//完整的語(yǔ)法應(yīng)當(dāng)是Commitusingsqlca; //對(duì)于默認(rèn)事務(wù)sqlca,可以省略u(píng)singsqlca子句。

dw_1.resetupdate()//復(fù)位修改狀態(tài)為從未修改過

else

RollBack;//回滾事務(wù),并提示錯(cuò)誤信息

Messagebox(‘錯(cuò)誤’,‘保存數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤:~r~r’+&

sqlca.sqlerrtext,Stopsign!) endif7.當(dāng)不需要再使用該事務(wù)時(shí),記得斷開(一般在Application的Close事件中處理):

DisconnectUsingSqlca;Datawindow-8.數(shù)據(jù)窗口應(yīng)用實(shí)例(3)對(duì)數(shù)據(jù)窗操作的常用腳本1.插入行

dw_1.insertrow(2)//在第二行前插入一條新行2.追加行

dw_1.insertrow(0)//在尾部追加一行3.刪除行

dw_1.Deleterow(2)//刪除第二行4.過濾

dw_1.setfilter(‘emp_namelike“劉%”’)//凡是雇員姓劉的

dw_1.filter()5.排需

dw_1.setsort(‘emp_namea,emp_addressd’)//按姓名正序,地址倒序排需

dw_1.sort()6.查找

ll_found_Row=dw_1.find(‘emp_namelike“劉%”’,1,dw_1.rowcount()) //在1–dw_1.rowcount()范圍內(nèi)查找第一個(gè)滿足條件的記錄7.賦值

dw_1.setitem(2,’emp_name’,’測(cè)試‘)//設(shè)置第二行中emp_name的值為’測(cè)試‘8.取值

ls_emp_name=dw_1.GetItemSTring(2,’emp_name’)//取出第二行的emp_name值到ls_emp_name變量9.走動(dòng)記錄 滾動(dòng)到指定行:dw_1.scrolltorow(20)//滾動(dòng)到第20行,一般和find一起操作 相對(duì)滾動(dòng)行:dw_1.scrollpriorrow(),scrollnextrow(),scrollNexPage(),scrollPriorPage()10.更新。Dw_1.update(true,false)PowerScript編程PowerScript任何程序的編制歸根結(jié)底都需要由代碼完成,雖然可視化編程為我們提供了極大的方便。但是如果沒有完善的代碼,程序就不可能有完善的功能。 PowerScript是PowerBuilder的編程語(yǔ)言。我們?cè)趯W(xué)習(xí)時(shí)可能已經(jīng)發(fā)現(xiàn),PowerScript語(yǔ)言與傳統(tǒng)的Basic語(yǔ)言有很多相似之處。PowerScript是一種自由格式的語(yǔ)言,在編寫程序代碼時(shí),編譯器忽略它的空格、縮進(jìn)、空行等,在這方面它又與C語(yǔ)言有幾分相近。在本章中,我們將介紹PowerScrpit的數(shù)據(jù)類型,變量及作用范圍,程序結(jié)構(gòu),以及一些常用函數(shù)和語(yǔ)句,尤其是一些和數(shù)據(jù)庫(kù)有關(guān)的操作,將是本章內(nèi)容的重點(diǎn)。PowerScript-變量的類型和作用域

變量是指在程序運(yùn)行過程中可以改變的量,變量在程序運(yùn)行的過程中被賦值,在執(zhí)行各種操作的時(shí)候,變量的值被不斷傳遞,以實(shí)現(xiàn)程序員設(shè)定的各種操作。可以說(shuō),沒有變量就沒有程序可言,而靈活使用各種不同的變量將使程序設(shè)計(jì)更為簡(jiǎn)潔、高效、安全,條理性也會(huì)更強(qiáng)。在變量聲明時(shí)只需注意四點(diǎn),一是必須以字母開頭;二是標(biāo)識(shí)符不能使用保留字;三是標(biāo)識(shí)符長(zhǎng)度必須小于40;各字符之間不允許有空格。另外還要注意連字符,因?yàn)檫B字符容易和減號(hào)混淆。 在PowerBuilder中,所有變量都必須事先聲明才能使用,而且類型固定,一旦聲明之后就不能變化。變量的作用域是指某一變量的使用范圍。早期的BASIC語(yǔ)言中,所有的變量都是全局變量,這樣做有很大的危害,主要是因?yàn)檫^多的全局變量會(huì)引起程序的崩潰,同時(shí)也會(huì)限制為函數(shù)取名的個(gè)數(shù)。在PowerBuilder中,程序的變量分為四個(gè)層次,局部變量、實(shí)例變量、共享變量和全局變量,用戶可以充分利用局部變量和實(shí)例變量以使程序變的簡(jiǎn)潔和高效。類型前綴說(shuō)明示例局部變量Locall僅在某腳本范圍內(nèi)有效li_index實(shí)例變量Instancei依賴于某對(duì)象而存在,在一個(gè)對(duì)象范圍內(nèi),并可以定義此變量對(duì)外部對(duì)象而言的存取權(quán)限,如:限定前綴Private和Protected,默認(rèn)為Public,可以再細(xì)化為PrivateWrite、PrivateReadProtectedWrite,ProtectedReadPUBLIC:is_user_namePRIVATE:is_my_name共享變量Shareds共享變量與實(shí)例變量相似,但有一點(diǎn)區(qū)別,那就是共享變量的值不因?qū)ο蟮年P(guān)閉而改變。聲明的方法是Declare|SharedVariables。ss_window_type全局變量Globalg用戶可以在任何地方訪問它gu_ext_functionPowerScript-數(shù)組及使用數(shù)組是任何一種程序化語(yǔ)言都必須有的一種數(shù)據(jù)結(jié)構(gòu),與集合和枚舉類型的數(shù)據(jù)結(jié)構(gòu)不同,它是一系列有序數(shù)據(jù)的集合。數(shù)組中的每一個(gè)元素都屬于相同的數(shù)據(jù)類型,并且每一個(gè)元素都有相同數(shù)組名和不同的數(shù)組下標(biāo)。數(shù)組的類型有兩種:一種是一維數(shù)組,另一種是多維數(shù)組。多維數(shù)組必須有一個(gè)固定的大小,而一維數(shù)組的下標(biāo)可以是固定的,也可以是可變的。用戶在聲明一個(gè)數(shù)組時(shí)首先必須聲明的是一個(gè)數(shù)組的類型,然后是數(shù)組名,數(shù)組下標(biāo)。 一維數(shù)組定義:

stringls_my_array_1[]//不定長(zhǎng)數(shù)組

stringls_my_array_2[10]//從ls_my_array[1]到ls_my_array[10]共10個(gè)單元

stringls_my_array_3[5to24]//從ls_my_array[5]到ls_my_array[24]共10個(gè)單元 多維數(shù)組:

stringls_my_2d_array1[100,200]//定義一個(gè)100*200的數(shù)組,共20000個(gè)單元

stringls_my_2d_array2[1-100,-2to97]//定義一個(gè)100*100

的數(shù)組。 數(shù)組及數(shù)組間的操作: 上界及下界:UpperBound(ls_my_array_1),LowerBound(ls_my_array_3))

數(shù)組是否一致=,<>

數(shù)組變量類型可以是任意類型,包括窗口,菜單,自定義對(duì)象,控件等等。。。

PowerScript-結(jié)構(gòu)使用一個(gè)結(jié)構(gòu)是一個(gè)或幾個(gè)相關(guān)變量的集合,它們有著相同或不同的數(shù)據(jù)類型,但都在同一個(gè)名字下。在有些語(yǔ)言中,例如Pascal和COBOL語(yǔ)言,集合又被叫做記錄。集合允許將一些相關(guān)的數(shù)據(jù)項(xiàng)整合為一個(gè)整體而不是彼此獨(dú)立。比如說(shuō),如果將用戶的ID,地址,等級(jí),照片組合為一個(gè)叫做user_struct的結(jié)構(gòu),就可以將這個(gè)變量的集合作為一個(gè)統(tǒng)一的user_struct結(jié)構(gòu)來(lái)使用 結(jié)構(gòu)按存取范圍分為2類: 全局結(jié)構(gòu): 作為一個(gè)獨(dú)立對(duì)象存放在PBL中,可以直接申明并引用。如通過winzard創(chuàng)建一個(gè)Structure對(duì)象,然后在腳本中就可以使用了。譬如已經(jīng)做好了一個(gè)結(jié)構(gòu)叫做st_user_structure,則程序中應(yīng)當(dāng)如下使用: 一、申明一個(gè)變量(上述四種變量中的一種) 二、指定這個(gè)變量的類型為st_u

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論