全套課件-《PowerBuilder程序設(shè)計(jì)教程》_第1頁(yè)
全套課件-《PowerBuilder程序設(shè)計(jì)教程》_第2頁(yè)
全套課件-《PowerBuilder程序設(shè)計(jì)教程》_第3頁(yè)
全套課件-《PowerBuilder程序設(shè)計(jì)教程》_第4頁(yè)
全套課件-《PowerBuilder程序設(shè)計(jì)教程》_第5頁(yè)
已閱讀5頁(yè),還剩300頁(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)介

第1章PowerBuilder8.0概述1.1什么是PowerBuilder8.0PowerBuilder(簡(jiǎn)稱PB)是Sybase公司推出的一個(gè)圖形化的應(yīng)用程序集成開(kāi)發(fā)環(huán)境。使用PB可以容易地開(kāi)發(fā)出和數(shù)據(jù)庫(kù)打交道的應(yīng)用程序。自由的編程風(fēng)格,強(qiáng)大的數(shù)據(jù)庫(kù)處理功能,先進(jìn)的Web應(yīng)用技術(shù)和友好的用戶界面深受廣大編程者喜愛(ài)。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)1.2PowerBuilder8.0的安裝1.2.1運(yùn)行PB對(duì)系統(tǒng)的要求·硬件配置100MHz以上主頻的Pentium系統(tǒng),CD-ROM驅(qū)動(dòng)器和SVGA兼容模式的顯示器,64MB以上內(nèi)存。·軟件配置Windows95以上,WindowsNT4.0以上的操作系統(tǒng)。PB8.0的一些功能只能在高版本中才能實(shí)現(xiàn)。所以要完全利用PB8.0的功能,版本越高越好。1.2.2安裝過(guò)程啟動(dòng)安裝盤(pán)上的setup.exe應(yīng)用程序,安裝PB8.0。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)1.3PowerBuilder8.0的啟動(dòng)和退出1.3.1PB8.0的啟動(dòng)打開(kāi)Windows【開(kāi)始】菜單,選擇【程序】菜單中的【Sybase】,再進(jìn)入【PowerBuilder8.0】菜單,點(diǎn)擊【PowerBuilder8.0】菜單項(xiàng)。1.3.2退出PB8.0

退出PB8.0有三種方法

·單擊工具欄【Exit】按鈕

·單擊PB8.0主窗口右上角的【關(guān)閉】按鈕

·單擊File菜單中的【Exit】命令。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)1.4PowerBuilder8.0的開(kāi)發(fā)環(huán)境1.4.1工作空間和目標(biāo)

工作空間是開(kāi)發(fā)各種應(yīng)用的“空間”和“容器”。為了操作目標(biāo),必須打開(kāi)一個(gè)工作空間。一次只能打開(kāi)一個(gè)工作空間,但在其中可以加入多個(gè)目標(biāo)。1.4.2PowerBuilder8.0主窗口最上面是PowerBar工具欄,左上部是SystemTree窗口,左下部是Clip窗口,最下面是Output窗口,灰格部分是畫(huà)板或編輯器的工作區(qū)。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)1.4.3工具欄PowerBar工具欄:PowerBar是PB主控菜單工具欄PainterBar工具欄:PainterBar是畫(huà)板的菜單工具欄,是針對(duì)某類對(duì)象的。窗口PainterBar菜單PainterBar

StyleBar工具欄下拉式工具欄按鈕:按鈕右側(cè)有一個(gè)下拉箭頭,點(diǎn)擊下拉箭頭,將會(huì)顯示同這個(gè)按鈕功能相關(guān)的其他一些按鈕結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)第2章PowerBuilder8.0的編程2.1數(shù)據(jù)庫(kù)應(yīng)用模式計(jì)算機(jī)的應(yīng)用結(jié)構(gòu)經(jīng)歷了集中式結(jié)構(gòu)、文件服務(wù)器的網(wǎng)絡(luò)結(jié)構(gòu)到現(xiàn)在的客戶/服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)、分布式客戶/服務(wù)器網(wǎng)絡(luò)結(jié)構(gòu)和Web網(wǎng)絡(luò)結(jié)構(gòu)的發(fā)展階段。2.1.1集中式應(yīng)用模式集中式應(yīng)用模式有兩個(gè)關(guān)鍵硬件:主機(jī)和客戶端。主機(jī)一般是大型機(jī),相當(dāng)于現(xiàn)在的服務(wù)器。客戶端與主機(jī)之間傳遞數(shù)據(jù)的方式非常簡(jiǎn)單:一是從客戶端鍵入信息到主機(jī),二是由主機(jī)返回到客戶端結(jié)果字符。這個(gè)時(shí)期(大約在20世紀(jì)60~70年代)的計(jì)算機(jī)所有的資源都在主機(jī)上,所有處理都在主機(jī)上完成。這種結(jié)構(gòu)的優(yōu)點(diǎn)是可以實(shí)現(xiàn)集中管理、安全性好,但大型機(jī)價(jià)格昂貴,并且應(yīng)用程序和數(shù)據(jù)庫(kù)都存放在主機(jī)中,沒(méi)有可能真正劃分應(yīng)用程序的邏輯。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.1.2文件服務(wù)器應(yīng)用模式在文件服務(wù)器應(yīng)用結(jié)構(gòu)中,應(yīng)用程序都是在客戶工作站上,而不是在服務(wù)器上運(yùn)行。文件服務(wù)器只提供資源的集中管理和訪問(wèn)途徑。這種結(jié)構(gòu)的特點(diǎn):一是共享資源集中管理,而應(yīng)用程序則分散在各個(gè)客戶工作站,二是費(fèi)用低、配置靈活,在一個(gè)局域網(wǎng)中可以方便地增減客戶工作站。因?yàn)檫@種結(jié)構(gòu)只提供文件服務(wù),所有的應(yīng)用程序都在客戶端完成,這就要求客戶工作站上的個(gè)人計(jì)算機(jī)要有足夠的能力,以便執(zhí)行所需要的任何程序或完成必要的任務(wù),這就經(jīng)常需要客戶端的計(jì)算機(jī)升級(jí)。這樣會(huì)給客戶造成很大的負(fù)擔(dān)。雖然應(yīng)用程序可以存放在網(wǎng)絡(luò)文件服務(wù)器的硬盤(pán)上,但每次都要傳送到客戶端的個(gè)人計(jì)算機(jī)內(nèi)存中才能執(zhí)行。網(wǎng)絡(luò)上經(jīng)常要傳送大量無(wú)用的數(shù)據(jù)。這種模式出現(xiàn)在20世紀(jì)80年代,個(gè)人計(jì)算機(jī)進(jìn)入商用階段,局域網(wǎng)問(wèn)世,文件服務(wù)器技術(shù)產(chǎn)生的時(shí)期。2.1.3客戶/服務(wù)器應(yīng)用模式文件服務(wù)器結(jié)構(gòu)的費(fèi)用雖低,但和大型機(jī)的集中式結(jié)構(gòu)相比,缺乏足夠的計(jì)算和處理能力.為了解決費(fèi)用和性能的矛盾,客戶/服務(wù)器結(jié)構(gòu)便應(yīng)運(yùn)而生。這種結(jié)構(gòu)允許應(yīng)用程序分別在客戶工作站和服務(wù)器(注意不再是文件服務(wù)器)上執(zhí)行??梢院侠淼胤峙鋺?yīng)用程序,充分發(fā)揮客戶工作站和服務(wù)器兩個(gè)方面的功能。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.1.2文件服務(wù)器應(yīng)用模式在客戶/服務(wù)器結(jié)構(gòu)中,應(yīng)用程序或應(yīng)用邏輯可以根據(jù)需要?jiǎng)澐衷诜?wù)器和客戶工作站中,使這些應(yīng)用程序協(xié)同工作完成特定任務(wù)??蛻艄ぷ髡鞠蚍?wù)器發(fā)送的是處理請(qǐng)求,而不是文件請(qǐng)求,服務(wù)器返回的是處理結(jié)果,而不是整個(gè)文件。客戶/服務(wù)器結(jié)構(gòu)最流行的領(lǐng)域就是數(shù)據(jù)庫(kù)應(yīng)用領(lǐng)域。比較著名的數(shù)據(jù)庫(kù)都提供了支持客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)管理系統(tǒng),如MSSQLServer、SybaseadaptiveServer和Oracle等。

在客戶/服務(wù)器結(jié)構(gòu)中,我們常把客戶端稱為前臺(tái)或前端客戶,把服務(wù)器稱做后臺(tái)或后臺(tái)服務(wù)器。

客戶/服務(wù)器結(jié)構(gòu)的核心是當(dāng)前端用戶需要后臺(tái)服務(wù)器服務(wù)時(shí),僅僅發(fā)出請(qǐng)求,服務(wù)器接收該請(qǐng)求后,執(zhí)行相應(yīng)的功能,把滿足條件的數(shù)據(jù)反饋給前臺(tái)客戶端,查詢和操作都在服務(wù)器上完成。服務(wù)器有理由配置一臺(tái)高性能的計(jì)算機(jī),所有的客戶端可以從中受益??蛻?服務(wù)器結(jié)構(gòu)的另一個(gè)主要特點(diǎn)是數(shù)據(jù)庫(kù)服務(wù)器平臺(tái)與客戶端無(wú)關(guān)。它向客戶端提供一個(gè)開(kāi)放的使用環(huán)境,客戶端的用戶通過(guò)數(shù)據(jù)庫(kù)接口和SQL語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù),不管客戶端采用什么硬件和軟件環(huán)境,只要通過(guò)網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)庫(kù)接口程序連接到服務(wù)器就可以對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.1.4分布式應(yīng)用模式

多層客戶/服務(wù)器結(jié)構(gòu)也稱分布式客戶/服務(wù)器結(jié)構(gòu),它強(qiáng)調(diào)組件的開(kāi)發(fā),將原來(lái)很多客戶端的處理邏輯剝離出來(lái),形成相對(duì)獨(dú)立的組件模塊,這些模塊安排在服務(wù)器上,供所有的客戶端應(yīng)用程序訪問(wèn)。組件的開(kāi)發(fā)使之可應(yīng)用性好、性能改善,易于管理和維護(hù)。2.1.5Web應(yīng)用模式

隨著Internet和Web技術(shù)的不斷發(fā)展以及數(shù)據(jù)庫(kù)技術(shù)的不斷更新,將Web技術(shù)與數(shù)據(jù)庫(kù)技術(shù)相結(jié)合,開(kāi)發(fā)動(dòng)態(tài)的Web數(shù)據(jù)庫(kù)應(yīng)用勢(shì)在必行。

中間件負(fù)責(zé)管理Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之間的通信并提供應(yīng)用程序服務(wù),它能夠直接訪問(wèn)數(shù)據(jù)庫(kù),提供與數(shù)據(jù)庫(kù)相關(guān)的動(dòng)態(tài)HTML頁(yè)面,然后通過(guò)Web服務(wù)器返回給用戶的瀏覽器。

除了在Web服務(wù)器端采用中間件以外,我們還可以通過(guò)Web瀏覽器把應(yīng)用下載到客戶端運(yùn)行,在客戶端直接訪問(wèn)數(shù)據(jù)庫(kù)。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.2面向?qū)ο蟮姆椒?.2.1面向?qū)ο蟮母拍?.對(duì)象、消息一個(gè)面向?qū)ο蟮某绦蛴蓪?duì)象組成。對(duì)象包含數(shù)據(jù)以及對(duì)數(shù)據(jù)進(jìn)行操作的方法,對(duì)象是具有特殊屬性和方法的實(shí)體。對(duì)象的屬性就是包含在對(duì)象中的一類特殊數(shù)據(jù),表示對(duì)象的某些特征。正是對(duì)象的屬性和方法使對(duì)象具有了行為能力。例如Button控件的Text屬性表示顯示在控件上的文字,改變了這個(gè)屬性也就改變了控件上的文字,這是對(duì)象的方法把對(duì)象在外觀上進(jìn)行了刷新,方法是對(duì)象操作數(shù)據(jù)的主要工具。2.類、實(shí)例如何定義和描述一個(gè)對(duì)象?這里需要使用類和子類的概念。類是一組幾乎相同的對(duì)象的描述,由表示一組相關(guān)對(duì)象共同性質(zhì)的方法和數(shù)據(jù)組成。類是創(chuàng)建對(duì)象的藍(lán)圖或模板。類是型的概念,對(duì)象是值的概念。當(dāng)我們用類來(lái)創(chuàng)建一個(gè)對(duì)象時(shí),我們實(shí)際上是生成了類的一個(gè)實(shí)例。把實(shí)例相應(yīng)的數(shù)據(jù)根據(jù)需要賦予確定的值,實(shí)例就成為具有自己個(gè)性的對(duì)象了。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.2.1面向?qū)ο蟮母拍?.封裝把對(duì)象的數(shù)據(jù)和方法組合在同一個(gè)結(jié)構(gòu)中,這就是對(duì)象的封裝特性。對(duì)象的數(shù)據(jù)域被封閉在對(duì)象的內(nèi)部,使得外部程序必須而且只能使用正確的方法才能對(duì)要讀寫(xiě)的數(shù)據(jù)域進(jìn)行訪問(wèn),有些情況下,只能用該對(duì)象的方法才能訪問(wèn)。4.繼承一般情況下,面向?qū)ο蟮拈_(kāi)發(fā)工具會(huì)預(yù)定義許多標(biāo)準(zhǔn)類,另外,一個(gè)開(kāi)發(fā)人員經(jīng)過(guò)長(zhǎng)期的應(yīng)用開(kāi)發(fā)也會(huì)積累一些自定義的類。人們想用簡(jiǎn)單的方法使用已有的類,這就是面向?qū)ο罄碚撝械囊粋€(gè)重要概念——繼承。繼承是自動(dòng)共享類、子類中的方法和數(shù)據(jù)的有效機(jī)制。繼承通過(guò)從父類中繼承公共方法和數(shù)據(jù),同時(shí)加入新的數(shù)據(jù)和方法來(lái)定義一個(gè)新類。此后,又可以把新建子類作為父類來(lái)創(chuàng)建它的新子類。類的創(chuàng)建沿樹(shù)型結(jié)構(gòu)發(fā)展。正是通過(guò)繼承的機(jī)制,實(shí)現(xiàn)了代碼的重用。而且可以通過(guò)逐漸完善我們的類,直到創(chuàng)建出滿足需要的各種類。

5.多態(tài)性多態(tài)性也是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要概念,它指幾個(gè)不同的對(duì)象具有相同名字的函數(shù)(方法),但每個(gè)對(duì)象為該函數(shù)提供的參數(shù)和實(shí)現(xiàn)過(guò)程都可能不相同。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.2.1面向?qū)ο蟮母拍?.函數(shù)重載函數(shù)重載是指同一個(gè)函數(shù)有幾種調(diào)用格式,或者說(shuō),一個(gè)相同的函數(shù)名字有多種參數(shù)格式和實(shí)現(xiàn)方法。與多態(tài)性不同,函數(shù)重載是指同一對(duì)象中的同一名字的函數(shù)有多種實(shí)現(xiàn)方法。在PowerBuilder中,一個(gè)對(duì)象中也可以聲明多個(gè)同名的函數(shù),在運(yùn)行時(shí),PowerBuilder根據(jù)傳送的參數(shù)個(gè)數(shù)和類型來(lái)決定調(diào)用哪一個(gè)。每個(gè)同名函數(shù)必須有不同的參數(shù),才能實(shí)現(xiàn)重載,重載函數(shù)只對(duì)對(duì)象級(jí)的函數(shù)有效。全局函數(shù)不能重載。

7.事件

事件是作用于對(duì)象的動(dòng)作或狀態(tài)改變。每個(gè)對(duì)象類型都有一組預(yù)制的特定事件。事件是使代碼得到執(zhí)行的唯一途徑。開(kāi)發(fā)者需要編寫(xiě)PowerScript代碼(腳本)來(lái)響應(yīng)特定的事件,事件的發(fā)生會(huì)觸發(fā)代碼的執(zhí)行。PowerBuilder中為各種類提供了許多常用事件,這些事件僅能接收部分Windows消息。為使相應(yīng)對(duì)象能夠接收到某個(gè)特殊消息,以滿足特殊要求,可以自己定義事件,這種自己定義的事件稱用戶事件。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.2.1面向?qū)ο蟮母拍?.方法PowerBuilder系統(tǒng)提供了豐富的內(nèi)部函數(shù),有些內(nèi)部函數(shù)是針對(duì)某個(gè)對(duì)象的,針對(duì)某個(gè)對(duì)象的函數(shù)有時(shí)也稱為該對(duì)象的方法。有些內(nèi)部函數(shù)是基本函數(shù),不屬于某個(gè)特定對(duì)象。通過(guò)Function畫(huà)板可以自定義全局函數(shù)和某個(gè)對(duì)象的函數(shù)。

2.2.2PowerBuilder中的面向?qū)ο?.PowerBuilder的對(duì)象在PowerBuilder中,對(duì)象是指像窗口和按鈕這樣的控件。通過(guò)右擊該對(duì)象,然后從彈出的菜單中選擇Properties就可以打開(kāi)屬性窗口,修改它的屬性。該屬性窗口是具有多個(gè)標(biāo)簽的對(duì)話框,其中許多選項(xiàng)可以設(shè)置。用戶也可以在運(yùn)行時(shí)用代碼改變對(duì)象的屬性。用點(diǎn)符號(hào)的方法,在運(yùn)行時(shí)幾乎可以訪問(wèn)一個(gè)對(duì)象的所有屬性。

調(diào)用對(duì)象的方法和調(diào)用對(duì)象的屬性一樣,也要用到點(diǎn)符號(hào),例如:Cb_close.Text=“關(guān)閉”修改對(duì)象的屬性Cb_close.setFocus調(diào)用對(duì)象的方法

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.2.2PowerBuilder中的面向?qū)ο?.PowerBuilder中的類

通過(guò)PowerBuilder瀏覽器(Browser)可以觀察PowerBuilder中的類及其繼承關(guān)系。點(diǎn)擊【Tools|Browser…】菜單項(xiàng)或工具欄上的【Browser】圖標(biāo)按鈕,將打開(kāi)瀏覽器,在瀏覽器中選擇System標(biāo)簽頁(yè),就可以看到PowerBuilder的各種類了。如果要看類的繼承關(guān)系;在左邊的框架內(nèi)右擊,在彈出的菜單中選擇ShowHierarchy

。2.2.3PowerBuilder的開(kāi)發(fā)方法一個(gè)PowerBuilder應(yīng)用程序由若干個(gè)窗口組成,每個(gè)窗口都有若干個(gè)控件,每個(gè)對(duì)象或控件都有若干事件,每個(gè)事件將對(duì)應(yīng)一段程序。

學(xué)習(xí)PowerBuilder應(yīng)該這樣入手:首先了解PowerBuilder的各種對(duì)象和控件,了解對(duì)象和控件的屬性和事件。PowerBuilder是面向?qū)ο蟮拈_(kāi)發(fā)工具。開(kāi)發(fā)思路是:事件驅(qū)動(dòng)程序的執(zhí)行。開(kāi)發(fā)的實(shí)質(zhì)性工作是:一、定義對(duì)象、控件及其屬性。二、定義對(duì)象和控件上某事件發(fā)生時(shí)要執(zhí)行的程序。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.3PowerBuilder編程的命名規(guī)則

當(dāng)看到一個(gè)對(duì)象的名稱時(shí),就可以很清楚地知道這是什么對(duì)象,它將要做什么等,這樣就要有一個(gè)命名規(guī)范。

在PowerBuilder中提倡使用帶有前綴的名字。

單擊【Design|options】菜單后彈出的對(duì)話框,從該對(duì)話框中可以看到PowerBuilder對(duì)每個(gè)控件所推薦的名字前綴,用戶也可以在這個(gè)對(duì)話框中改變成用戶所喜歡的控件前綴。

2.4PowerBuilder應(yīng)用程序開(kāi)發(fā)過(guò)程

創(chuàng)建一個(gè)PowerBuilder應(yīng)用程序的具體步驟包括分析、設(shè)計(jì)、開(kāi)發(fā)、調(diào)試、生成可執(zhí)行文件這幾個(gè)部分。

2.4.1分析、設(shè)計(jì)系統(tǒng)分析就是在進(jìn)行任何設(shè)計(jì)和開(kāi)發(fā)之前,一定要搞清楚程序到底要做些什么,千萬(wàn)不能在沒(méi)有完全理解需求的時(shí)候就開(kāi)始開(kāi)發(fā)和建立項(xiàng)目。當(dāng)我們完全理解了開(kāi)發(fā)需求之后,必須去制定一個(gè)計(jì)劃,這個(gè)應(yīng)用程序看上去應(yīng)該是什么樣,它是如何工作的,組成結(jié)構(gòu)是什么,采取什么樣的數(shù)據(jù)庫(kù),組織它的最好方式是什么,如何使它在大小、速度和易用性方面達(dá)到最優(yōu),這些問(wèn)題都需要在開(kāi)發(fā)之前仔細(xì)研究,屬系統(tǒng)設(shè)計(jì)的范疇。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.4.2開(kāi)發(fā)這個(gè)階段也稱為編碼階段,但在PowerBuilder中一般只需編寫(xiě)少量代碼,就可以開(kāi)發(fā)出很好的應(yīng)用程序。用戶可以用任何適合于項(xiàng)目的方法,以任何順序完成下列兩個(gè)任務(wù):一、創(chuàng)建數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的設(shè)計(jì)是在設(shè)計(jì)階段使用Database畫(huà)板來(lái)完成的,這個(gè)任務(wù)包括創(chuàng)建數(shù)據(jù)庫(kù)及各種表和索引。二、創(chuàng)建應(yīng)用程序創(chuàng)建應(yīng)用程序?qū)ο螅O(shè)置應(yīng)用程序級(jí)的屬性,編寫(xiě)應(yīng)用對(duì)象的程序腳本。使用Application畫(huà)板。在創(chuàng)建應(yīng)用程序的過(guò)程中,不可避免地要在Window畫(huà)板、Datawindow畫(huà)板、Menu畫(huà)板和其它畫(huà)板之間切換,實(shí)際上把它們看成一個(gè)完整的反復(fù)過(guò)程會(huì)更好。

創(chuàng)建窗口對(duì)象應(yīng)用程序的窗口把所有的Datawindow、控件和用戶對(duì)象結(jié)合在一起,形成完整的用戶界面結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.4.2開(kāi)發(fā)

創(chuàng)建菜單對(duì)象一般應(yīng)用程序的主窗口中都有一個(gè)下拉菜單,菜單在Menu畫(huà)板中創(chuàng)建。

創(chuàng)建Datawindow對(duì)象PowerBuilder應(yīng)用程序的核心是數(shù)據(jù)庫(kù)以及用戶與數(shù)據(jù)庫(kù)的交互。數(shù)據(jù)窗口能夠完成對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),所以數(shù)據(jù)窗口是PowerBuilder應(yīng)用程序開(kāi)發(fā)的重點(diǎn)。

編碼許多畫(huà)板都可以進(jìn)行編碼工作。大部分代碼用來(lái)連接不同的控件以及實(shí)現(xiàn)它們之間的聯(lián)系,另有一些代碼用于直接訪問(wèn)和更新數(shù)據(jù)。PowerBuilder中編寫(xiě)代碼使用PowerScript語(yǔ)言和嵌入式SQL語(yǔ)句。2.4.3調(diào)試與測(cè)試PowerBuilder中有一個(gè)功能強(qiáng)大的集成調(diào)試器,可以跟蹤程序的執(zhí)行和驗(yàn)證變量的值。測(cè)試需要在多個(gè)不同層次上進(jìn)行。保證程序符合規(guī)格定義,不出現(xiàn)任何不希望出現(xiàn)的事情。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.4.4生成可執(zhí)行文件簡(jiǎn)單地選擇菜單命令就可以完成生成可執(zhí)行文件的工作。復(fù)雜的應(yīng)用程序會(huì)包含動(dòng)態(tài)對(duì)象,還必須利用PowerBuilder動(dòng)態(tài)庫(kù)和資源文件來(lái)解決。才能創(chuàng)建高效的windows程序。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)第3章

PowerScript語(yǔ)言3.1語(yǔ)言基礎(chǔ)3.1.1注釋(//):行注釋和塊注釋塊注釋:從/*開(kāi)始,到*/結(jié)束。其中的所有內(nèi)容都是注釋。行注釋:行中以//開(kāi)始的右邊內(nèi)容是注釋。多采用行注釋。3.1.2標(biāo)識(shí)符:在腳本中使用的變量名、函數(shù)名、窗口名、菜單名及引用的對(duì)象名。標(biāo)識(shí)符必須以字母開(kāi)頭,最長(zhǎng)40個(gè)字符,中間不能插入空格3.1.3大小寫(xiě):多數(shù)情況下不區(qū)分大小寫(xiě),但要注意使用大小寫(xiě)的一致性,便于閱讀和維護(hù)程序。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.1語(yǔ)言基礎(chǔ)3.1.4命令結(jié)束符(回車鍵)

:一是:一行中寫(xiě)一條命令語(yǔ)句,行尾用Enter鍵結(jié)束。二是:一行中寫(xiě)多條命令語(yǔ)句,命令之間用分號(hào)(;)分隔,行尾用enter鍵結(jié)束。編寫(xiě)腳本時(shí),多采用第一種方式。3.1.5行繼續(xù)符(&):用“&”做為行繼續(xù)符。它使一條語(yǔ)句可以寫(xiě)在兩行上,但要注意不能在保留字或變量名中間加行繼續(xù)符。

3.1.6標(biāo)號(hào)(標(biāo)識(shí)符:)標(biāo)號(hào)的寫(xiě)法就是在標(biāo)識(shí)符的后面加冒號(hào)(:),標(biāo)號(hào)可以自成一行,也可以與語(yǔ)句在同一行,放在語(yǔ)句的最前面。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.1語(yǔ)言基礎(chǔ)3.1.7空值(null):空值(null)是與數(shù)據(jù)庫(kù)交換數(shù)據(jù)時(shí)使用的一種特殊值。它代表未定義或是不可知。

3.1.8操作符:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、字符串的連接。

3.1.9保留字:保留字供PowerBuilder內(nèi)部使用,不能作為完整的標(biāo)識(shí)符來(lái)使用。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.2數(shù)據(jù)類型、變量和常量3.2.1標(biāo)準(zhǔn)數(shù)據(jù)類型

boolean(布爾型),布爾變量有兩個(gè)值:true和false,分別表示真和假。創(chuàng)建布爾變量時(shí),其初始值是false。real(實(shí)型)

,實(shí)型變量被創(chuàng)建時(shí)的初始值是0

。integer或int(整型),整數(shù)的取值范圍是從-32768到32767。

string(字符串型),字符串要用引號(hào)(單引號(hào)或雙引號(hào))括起來(lái)。字符串變量中可以包含字母、數(shù)字或符號(hào),其變量長(zhǎng)度在0到65536之間,字符串常量最大長(zhǎng)度可達(dá)1024。char或character(字符型),該類型變量用于存儲(chǔ)一個(gè)ASCII字符。date(日期型),日期包含年、月、日,年月日之間用連接符(-)連接。

time(時(shí)間型),包含小時(shí)、分鐘、秒,小時(shí)、分鐘、秒之間用冒號(hào)(:)分隔。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.2.2變量的聲明變量是指在程序運(yùn)行過(guò)程中其值可以改變的量。變量聲明的一般語(yǔ)法結(jié)構(gòu)是:[存取權(quán)限]數(shù)據(jù)類型標(biāo)識(shí)符[=初值][,標(biāo)識(shí)符=[初值]][,…]其中方括號(hào)中的內(nèi)容是可選項(xiàng)。變量未賦初值,系統(tǒng)會(huì)自動(dòng)賦給變量默認(rèn)值。如:數(shù)值型變量的默認(rèn)初值是0。注意:變量的初值是在編譯時(shí)給定的。如:datedd1,dd2=today()dd1=today()其中dd1沒(méi)有被初始化,但dd2被初始化成編譯日期。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.2.3變量的作用域變量的作用域就是變量使用的范圍。根據(jù)變量的作用域可將變量分為四種類型:全局變量、實(shí)例變量、共享變量、局部變量。全局變量的作用域最大,它在應(yīng)用程序的任何地方都可以使用。實(shí)例變量是某個(gè)特定對(duì)象的實(shí)例化??梢栽趹?yīng)用對(duì)象、窗口對(duì)象、用戶對(duì)象或菜單對(duì)象的Script編輯器中定義它,若在定義范圍之外使用它,則要通過(guò)點(diǎn)符號(hào)(.)完成。

共享變量并不常用,只在特定情況下才會(huì)用到。局部變量只能在某程序段或函數(shù)內(nèi)部有效,可以在過(guò)程、代碼、函數(shù)內(nèi)部聲明和使用局部變量,但在聲明局部變量的范圍之外就不能使用局部變量,在不同的函數(shù)內(nèi)部或事件腳本范圍內(nèi)局部變量可以重名,不會(huì)引起混亂。

3.2.4常量常量就是在程序運(yùn)行過(guò)程中不能改變的量,聲明常量就是在聲明的常量標(biāo)識(shí)符的前面加上關(guān)鍵字constant就可以了。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.3基本語(yǔ)句3.3.1賦值語(yǔ)句(=)賦值語(yǔ)句表示將賦值號(hào)(=)右邊表達(dá)式的值賦給左邊的變量。賦值語(yǔ)句在腳本中使用極為頻繁。

3.3.2條件語(yǔ)句(IF)條件語(yǔ)句分為:?jiǎn)涡蠭F語(yǔ)句、多行IF語(yǔ)句、多條件分支語(yǔ)句(CHOOSE)。3.3.3循環(huán)語(yǔ)句(LOOP)循環(huán)語(yǔ)句有do…loop結(jié)構(gòu)和for…next兩種結(jié)構(gòu)形式。

3.3.4流程控制語(yǔ)句(EXIT)跳出循環(huán)語(yǔ)句(EXIT)

,繼續(xù)語(yǔ)句(CONTINUE)

,轉(zhuǎn)向語(yǔ)句(GOTO),返回語(yǔ)句(RETURN),停止語(yǔ)句(HALT)

,調(diào)用語(yǔ)句(CALL)

。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.4嵌入式SQLPowerBuilder系統(tǒng)中,所有的SQL語(yǔ)句后面都要加分號(hào)(;),若不加分號(hào),則認(rèn)為是語(yǔ)法錯(cuò)誤。

3.4.1數(shù)據(jù)庫(kù)連接CONNECT3.4.2數(shù)據(jù)庫(kù)斷開(kāi)DISCONNECT3.4.3事務(wù)提交COMMIT3.4.4事務(wù)取消ROLLBACK3.4.5選擇語(yǔ)句SELECT3.4.6插入語(yǔ)句INSERT3.4.7刪除語(yǔ)句DELETE3.4.8更新語(yǔ)句UPDATE結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.5常用函數(shù)

3.5.1MessageBox()函數(shù)

3.5.2Open()和Close()3.5.3IS族函數(shù)

3.5.4類型轉(zhuǎn)換函數(shù)

3.5.5關(guān)鍵字Trigger3.6常用代詞

3.6.1This代詞

3.6.2Parent代詞

3.6.3ParentWindow代詞

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.5常用函數(shù)3.5.1MessageBox()函數(shù)

messagebox()函數(shù)用來(lái)向用戶顯示信息。函數(shù)格式:si_button_pressed=messagebox(title,text,icon,buttons,default)

3.5.2Open()和Close()Open()函數(shù)用來(lái)打開(kāi)一個(gè)窗口。格式:Open(窗口名)。Close()函數(shù)用來(lái)關(guān)閉一個(gè)窗口。格式:close(窗口名)。實(shí)際應(yīng)用中,經(jīng)常在窗口的控件中使用close(parent)表示關(guān)閉控件所在的窗口。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.5常用函數(shù)3.5.3IS族函數(shù)

IS函數(shù)的返回值是布爾類型的,其值只有兩個(gè):true或false。

IS族函數(shù)是一類函數(shù)。如isnumber()、isdate()、istime()、isnull()函數(shù)等。3.5.4類型轉(zhuǎn)換函數(shù)

類型轉(zhuǎn)換函數(shù)用來(lái)將一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。

integer(string):將字符串轉(zhuǎn)換成整型。long(string):將字符串轉(zhuǎn)換成長(zhǎng)整型。real(string):將字符串轉(zhuǎn)換成實(shí)型。double(string):將字符串轉(zhuǎn)換成雙精度型。dec(string):將字符串轉(zhuǎn)換成十進(jìn)制數(shù)。string(number,format):將數(shù)值按一定格式轉(zhuǎn)換成字符串。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)3.5常用函數(shù)3.5.5關(guān)鍵字TriggerTrigger關(guān)鍵字用來(lái)觸發(fā)其它控件上的事件。

3.6常用代詞3.6.1This代詞

This代詞代表窗口、用戶對(duì)象、菜單、應(yīng)用對(duì)象或控件本身。

3.6.2Parent代詞

Parent代詞可以用在窗口控件、用戶定制的對(duì)象、菜單腳本中。

在窗口控件中使用parent時(shí),parent表示包含該控件的窗口。

在菜單項(xiàng)腳本中使用parent,表示當(dāng)前菜單項(xiàng)的上一級(jí)菜單項(xiàng)。

3.6.3ParentWindow代詞

ParentWindow代詞只能在菜單腳本中使用,它代表運(yùn)行時(shí)菜單所在的窗口。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)第4章應(yīng)用對(duì)象開(kāi)發(fā)PowerBuilder應(yīng)用程序,必須首先創(chuàng)建應(yīng)用程序?qū)ο蟆?/p>

4.1什么是應(yīng)用應(yīng)用是一系列相關(guān)的活動(dòng),這些活動(dòng)通過(guò)窗口、菜單、數(shù)據(jù)窗口和其他控件來(lái)實(shí)現(xiàn),同時(shí)應(yīng)用也是執(zhí)行這些活動(dòng)的入口點(diǎn),只有打開(kāi)應(yīng)用才能看到所設(shè)計(jì)的窗口、菜單等對(duì)象。4.2創(chuàng)建應(yīng)用對(duì)象創(chuàng)建工作區(qū):選擇菜單【File|New…】,選擇【W(wǎng)orkspace|Workspace】,點(diǎn)擊【OK】按鈕,選擇工作區(qū)所在的路徑、輸入工作區(qū)名稱后,點(diǎn)擊保存按鈕,就完成了工作區(qū)的創(chuàng)建。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)4.2創(chuàng)建應(yīng)用對(duì)象創(chuàng)建應(yīng)用:先創(chuàng)建或打開(kāi)工作區(qū),再選擇菜單【File|New…】,選擇Target標(biāo)簽中的Application圖標(biāo),輸入應(yīng)用名稱后,點(diǎn)擊【Finish】按鈕,就完成了應(yīng)用的創(chuàng)建。設(shè)置應(yīng)用對(duì)象的屬性:應(yīng)用屬性的定義是作用于整個(gè)應(yīng)用程序范圍內(nèi)的,這些屬性決定了應(yīng)用程序的菜單、窗口等對(duì)象相應(yīng)參數(shù)的默認(rèn)值。

設(shè)置應(yīng)用程序的屬性,可雙擊應(yīng)用對(duì)象,在出現(xiàn)的圖中進(jìn)行設(shè)置。也可在圖中單擊AdditionalProperties按鈕設(shè)置應(yīng)用的其他一些屬性。應(yīng)用對(duì)象是程序的入口點(diǎn),只有對(duì)應(yīng)用對(duì)象的open事件編寫(xiě)腳本,應(yīng)用程序才能執(zhí)行。雙擊要編寫(xiě)腳本的應(yīng)用對(duì)象,或選擇菜單【View|Script】,都能打開(kāi)應(yīng)用對(duì)象的腳本編寫(xiě)窗口。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)編寫(xiě)應(yīng)用對(duì)象腳本Open事件:該窗口中有兩個(gè)下拉式列表框,左邊下拉列表框列出對(duì)象名稱,右邊下拉列表框列出相應(yīng)對(duì)象所能觸發(fā)的事件。

必須對(duì)應(yīng)用的open事件編寫(xiě)腳本,否則應(yīng)用無(wú)法執(zhí)行。應(yīng)用的open事件一般要編寫(xiě)如下語(yǔ)句。

//ProfileExercise,定義數(shù)據(jù)庫(kù)SQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="Connectstring='DSN=exercise'"http://連接數(shù)據(jù)庫(kù)connect;//數(shù)據(jù)庫(kù)連接錯(cuò)誤時(shí)給出錯(cuò)誤信息,并中斷程序的執(zhí)行。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)編寫(xiě)應(yīng)用對(duì)象腳本Open事件:ifsqlca.sqlcode<>0then messagebox("不能連接數(shù)據(jù)庫(kù)",sqlca.sqlerrtext) returnendif//打開(kāi)應(yīng)用的第一個(gè)窗口open(w_main)這里定義數(shù)據(jù)庫(kù)部分可從數(shù)據(jù)庫(kù)屬性中直接獲取,其方法是:打開(kāi)數(shù)據(jù)庫(kù)畫(huà)板,選擇要連接的數(shù)據(jù)庫(kù),點(diǎn)擊右鍵,選擇Preview標(biāo)簽,點(diǎn)擊Copy按鈕后,回到應(yīng)用的Open事件中,直接進(jìn)行粘貼。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)第5章數(shù)據(jù)庫(kù)5.1數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)數(shù)據(jù)庫(kù)是組織和存放數(shù)據(jù)的地方。這里所說(shuō)的數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),它可以包含多個(gè)二維表,每個(gè)二維表由行、列組成。行(Row):表中的一行叫做一個(gè)記錄,是組成表的基本數(shù)據(jù)。列(Column):表中的列稱為字段,列的名字叫做字段名。字段用來(lái)描述表的結(jié)構(gòu)。數(shù)據(jù)類型(Type):數(shù)據(jù)類型指字段的取值范圍。字段必須具有數(shù)據(jù)類型,如字符型、數(shù)值型、日期型、時(shí)間型等。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.1數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)主鍵(PrimaryKey):主鍵又稱關(guān)鍵字,由表中的一個(gè)字段或多個(gè)字段組成。主鍵的值唯一確定了其他字段的值,也就是說(shuō)表中任意兩行的主鍵值都不相同。

外鍵(ForeignKey):若存在兩張表,當(dāng)表A中的一個(gè)(或多個(gè))字段是表B的主鍵時(shí),稱這一個(gè)(或多個(gè))字段是表A的外鍵。

索引(Index):索引是指按要求指定表中的一個(gè)或多個(gè)字段,用以對(duì)表中記錄進(jìn)行邏輯排序。邏輯排序是針對(duì)表中記錄的實(shí)際存儲(chǔ)位置(物理順序)來(lái)說(shuō)的。在一個(gè)表中,每個(gè)記錄的實(shí)際存儲(chǔ)位置(物理位置)決定了它的物理順序。而邏輯排序并不改變記錄的物理位置,它只是指出按照一個(gè)或多個(gè)字段進(jìn)行排序時(shí)記錄所在的物理位置。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.1數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)視圖(View):視圖是一種臨時(shí)表,它從一個(gè)或多個(gè)表中產(chǎn)生,視圖本身不包含記錄,準(zhǔn)確地說(shuō)它是一種查詢結(jié)果。

5.2創(chuàng)建和刪除本地?cái)?shù)據(jù)庫(kù)。5.2.1創(chuàng)建本地?cái)?shù)據(jù)庫(kù)選擇菜單【File|New…|Database|DatabasePainter】,打開(kāi)數(shù)據(jù)庫(kù)畫(huà)板,雙擊CreateASADatabase選項(xiàng),打開(kāi)創(chuàng)建數(shù)據(jù)庫(kù)對(duì)話框,在DatabaseName:文本框中輸入數(shù)據(jù)庫(kù)文件所在位置及名稱(全路徑);其余文本框按如下輸入。UserID:DBA(默認(rèn)用戶名)Password:SQL(默認(rèn)口令)UseTransactionLog復(fù)選框:選中該項(xiàng),意味著準(zhǔn)備啟用日志文件。稍后,數(shù)據(jù)庫(kù)就會(huì)創(chuàng)建完成并自動(dòng)連接。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.2.2刪除本地?cái)?shù)據(jù)庫(kù)1.刪除數(shù)據(jù)庫(kù)文件:斷開(kāi)將要?jiǎng)h除的數(shù)據(jù)庫(kù)的連接,點(diǎn)擊PowerBar上的DBProfile按鈕,出現(xiàn)數(shù)據(jù)庫(kù)描述文件畫(huà)板對(duì)話框,雙擊“DeleteASADatabase”選項(xiàng),出現(xiàn)刪除數(shù)據(jù)庫(kù)對(duì)話框。選擇要?jiǎng)h除的數(shù)據(jù)庫(kù)文件,點(diǎn)擊“打開(kāi)”按鈕。這樣數(shù)據(jù)庫(kù)文件就被刪除了。2.刪除數(shù)據(jù)庫(kù)相應(yīng)的數(shù)據(jù)源雙擊“ODBCAdministrator”選項(xiàng),選擇所要?jiǎng)h除的數(shù)據(jù)源名稱(默認(rèn)是數(shù)據(jù)庫(kù)名稱),點(diǎn)擊“Remove”選項(xiàng)。3.刪除數(shù)據(jù)庫(kù)配置文件選擇數(shù)據(jù)庫(kù)配置文件名,單擊【Delete】按鈕。

完成了上述工作,數(shù)據(jù)庫(kù)文件就被刪除了。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.3連接已存在的數(shù)據(jù)庫(kù)5.3.1定義數(shù)據(jù)庫(kù)配置文件1.定義數(shù)據(jù)源雙擊“ODBCAdministrator”選項(xiàng),在出現(xiàn)的對(duì)話框中點(diǎn)擊“Add”按鈕,選擇“AdeptiveServerAnywhere7.0”,點(diǎn)擊“完成”按鈕,出現(xiàn)輸入數(shù)據(jù)源參數(shù)對(duì)話框。在“ODBC”標(biāo)簽中,輸入數(shù)據(jù)源名稱Datasourcename,一般采用所創(chuàng)建的數(shù)據(jù)庫(kù)名稱。在Login標(biāo)簽中,UserID:之后輸入“dba”,在Password:之后輸入“sql”。在Database標(biāo)簽中,

Databasefile之后輸入數(shù)據(jù)庫(kù)文件所在的位置及文件名。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)2.

定義配置文件在數(shù)據(jù)庫(kù)畫(huà)板中,選擇“ODBODBC”,點(diǎn)擊右鍵選擇“NewProfile”,出現(xiàn)定義數(shù)據(jù)源配置文件對(duì)話框,在ProfileName之后輸入名稱,一般與數(shù)據(jù)庫(kù)名稱一致;在DataSource之后選擇剛剛建好數(shù)據(jù)源的名稱;在UserID之后輸入“dba”;在Password之后輸入“sql”,單擊【OK】按鈕即可。此時(shí)在ODBC項(xiàng)下就會(huì)出現(xiàn)與數(shù)據(jù)庫(kù)同名的配置文件的名稱。

5.3.2連接數(shù)據(jù)庫(kù)

選擇數(shù)據(jù)庫(kù)配置文件名稱雙擊之,就會(huì)連接上數(shù)據(jù)庫(kù)。

5.3.3連接數(shù)據(jù)庫(kù)失敗與Log文件

在連接已存在的數(shù)據(jù)庫(kù)時(shí),若該數(shù)據(jù)庫(kù)在創(chuàng)建時(shí)輸入了log文件的路徑和名稱,而連接時(shí)沒(méi)有提供創(chuàng)建數(shù)據(jù)庫(kù)時(shí)log文件的路徑,或log文件發(fā)生錯(cuò)誤,這時(shí)就會(huì)出現(xiàn)連接失敗,這里提供一種補(bǔ)救措施。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.3.3連接數(shù)據(jù)庫(kù)失敗與Log文件1.在寫(xiě)字板中打開(kāi)所要連接的數(shù)據(jù)庫(kù)文件如exercise.db,查找log,這時(shí)能找到所創(chuàng)建的LOG文件所在的正確位置,如:d:\PowerBuilder\exercise.log。2.在上面位置創(chuàng)建文件夾,若文件夾已存在,則刪除文件夾下面的log文件。3.在PowerBuilder中,重新連接數(shù)據(jù)庫(kù),這時(shí)數(shù)據(jù)庫(kù)文件就會(huì)連接成功。

5.4操作數(shù)據(jù)庫(kù)表5.4.1創(chuàng)建表

數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)的操作是通過(guò)表來(lái)完成的。1.表是在數(shù)據(jù)庫(kù)中創(chuàng)建的,在創(chuàng)建表之前,要先連接上數(shù)據(jù)庫(kù)。2.選擇“Tables”點(diǎn)擊右鍵,選擇“NewTable”,依次輸入各列的列名、數(shù)據(jù)類型、寬度、小數(shù)位數(shù)、是否為空、默認(rèn)值。3.各列輸入完成后,選擇菜單【File|Save】,輸入表名,單擊【OK】按鈕。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.2刪除表在數(shù)據(jù)庫(kù)畫(huà)板中,選擇要?jiǎng)h除的表,點(diǎn)擊右鍵,在出現(xiàn)快捷菜單中選擇DropTable菜單即可。

5.4.3定義關(guān)鍵字關(guān)鍵字包括主關(guān)鍵字、外關(guān)鍵字,關(guān)鍵字是針對(duì)一個(gè)表來(lái)定義的。在PowerBuilder中,要對(duì)表進(jìn)行操作,如添加記錄、刪除記錄、將記錄存盤(pán)等,需要事先給表定義主關(guān)鍵字,否則表的某些操作不可執(zhí)行。

1.定義主關(guān)鍵字主關(guān)鍵字就是唯一確定不重復(fù)記錄的字段或字段組合。主關(guān)鍵字一定是不可空字段。

選擇要定義關(guān)鍵字的表,點(diǎn)擊右鍵,選擇【New|PrimaryKey】,在出現(xiàn)的畫(huà)面中選擇主關(guān)鍵字字段,之后存盤(pán)。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.3定義關(guān)鍵字2.定義外關(guān)鍵字表的外關(guān)鍵字用來(lái)描述兩個(gè)表之間的相互關(guān)系,某個(gè)表的外鍵一定是另一個(gè)表的主鍵。(1)選擇要定義外鍵的表,點(diǎn)擊右鍵,選擇【New|ForeignKey】,出現(xiàn)定義外鍵對(duì)話框。(2)在General標(biāo)簽中,Table后面自動(dòng)顯示剛剛選擇的要定義外鍵的表名,在ForeignKey后面輸入要定義的外鍵名稱;在Columns后面選擇外鍵字段,此時(shí)系統(tǒng)自動(dòng)在Order后面顯示選擇的外鍵字段。

(3)在PrimaryKey標(biāo)簽的

Table后面選擇要關(guān)聯(lián)的表名,系統(tǒng)自動(dòng)顯示Columns、Order兩項(xiàng)內(nèi)容。

(4)在Rules標(biāo)簽中,選擇刪除主鍵表中的行時(shí),要遵循的完整性規(guī)則。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.4設(shè)置表的屬性

1.在Datebase畫(huà)板中,選擇要設(shè)置屬性的表,點(diǎn)擊右鍵,在彈出的菜單中選擇Properties菜單項(xiàng)2.彈出Properties對(duì)話框,其中有四個(gè)標(biāo)簽General:設(shè)置表的注釋信息。DataFont:定義數(shù)據(jù)庫(kù)畫(huà)板中顯示數(shù)據(jù)的字體。HeadingFont:定義數(shù)據(jù)庫(kù)畫(huà)板中顯示列標(biāo)題的字體。LabelFont:定義數(shù)據(jù)庫(kù)畫(huà)板中數(shù)據(jù)以FreeForm格式顯示時(shí),每個(gè)標(biāo)簽的字體。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.5設(shè)置表中列的屬性在數(shù)據(jù)庫(kù)畫(huà)板中,可以為表中的每個(gè)列定義多個(gè)屬性,選擇要設(shè)置屬性的列右擊,選擇Properties菜單項(xiàng),這時(shí)彈出的畫(huà)面中有5個(gè)標(biāo)簽頁(yè)。

1.General標(biāo)簽頁(yè)該頁(yè)中只有一項(xiàng)comments用戶可以輸入,輸入的內(nèi)容表示列的注釋。

2.Headers標(biāo)簽頁(yè)Label后面的內(nèi)容是以后制作數(shù)據(jù)窗口對(duì)象時(shí)該列的默認(rèn)標(biāo)簽,在沒(méi)有進(jìn)行修改之前,默認(rèn)值為原來(lái)的字段名。制作數(shù)據(jù)窗口對(duì)象,一般希望標(biāo)簽為漢字,此時(shí)應(yīng)輸入該字段對(duì)應(yīng)的漢字。heading后面的內(nèi)容是顯示表中數(shù)據(jù)時(shí)該列的標(biāo)題,此處在沒(méi)有進(jìn)行修改之前,默認(rèn)值為原來(lái)的字段名,但以后顯示表中的數(shù)據(jù)時(shí),一般希望是漢字標(biāo)題,此時(shí)應(yīng)輸入該字段對(duì)應(yīng)的漢字。3.Display標(biāo)簽頁(yè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)被檢索出來(lái)之后,用系統(tǒng)默認(rèn)的格式進(jìn)行顯示。對(duì)用戶來(lái)說(shuō),都希望使用自己喜歡的格式進(jìn)行顯示,這時(shí)可從系統(tǒng)提供的格式中進(jìn)行選擇,也可根據(jù)需要設(shè)定自己的格式。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.5設(shè)置表中列的屬性3.Display標(biāo)簽頁(yè)(1)創(chuàng)建一種新的顯示格式

選擇View菜單下的ExtendedAttributes選項(xiàng),點(diǎn)擊DisplayFormats前面的+號(hào),可以看到系統(tǒng)已經(jīng)定義的20種格式,若要使用其它格式,需要重新定義。定義新格式的方法:選擇DisplayFormats后,點(diǎn)擊右鍵,選擇New,在出現(xiàn)的界面中,在StyleName之后輸入所要定義的格式名稱,在DataType后面輸入所要定義的格式屬于什么類型,在Format后面輸入所要定義的新格式,也可以選擇系統(tǒng)已有的格式,輸入完成之后就完成了對(duì)格式的定義。(2)將新格式嵌入到字段中選擇設(shè)置顯示格式的字段右擊,選擇Properties后,選擇Display標(biāo)簽,出現(xiàn)屬性對(duì)話框,在DisplayFormat后面選擇用戶希望的顯示方式。(3)五種數(shù)據(jù)類型的顯示格式PowerBuilder支持五種類型的顯示格式:字符串(String)、數(shù)字型(Number)、日期型(Date)、時(shí)間型(Time)、日期時(shí)間型(DateTime),這些類型的數(shù)據(jù)在顯示時(shí)是以掩碼的方式來(lái)表示的,不同類型的數(shù)據(jù)有不同的掩碼,遵循一定的規(guī)則。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.5設(shè)置表中列的屬性4.Validation標(biāo)簽頁(yè)該標(biāo)簽頁(yè)用來(lái)定義列數(shù)據(jù)的有效性,只有符合有效性的數(shù)據(jù)才能被存儲(chǔ),否則系統(tǒng)認(rèn)為是非法數(shù)據(jù)。給某列定義有效性,要經(jīng)過(guò)以下步驟:(1)定義有效性名稱、類型選擇View菜單下的ExtendedAttributes選項(xiàng),右擊ValidationRulers,選擇New,出現(xiàn)定義有效性規(guī)則對(duì)話框,在ValidationName后面輸入有效性名稱,DataType后面選擇有效性類型,在Message后面輸入當(dāng)不符合有效性規(guī)則時(shí)出現(xiàn)的信息。(2)定義有效性規(guī)則

在定義有效性規(guī)則對(duì)話框中,選擇Definition標(biāo)簽后,單擊Match按鈕,在AvailablePattern框中選擇相應(yīng)規(guī)則,點(diǎn)擊【OK】按鈕,存盤(pán)。(3)將有效性規(guī)則嵌入到某列中打開(kāi)表中相應(yīng)字段的屬性框,選擇Validation標(biāo)簽,在ValidationRulers后面選擇定義的有效性規(guī)則即可。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.4.5設(shè)置表中列的屬性5.EditStyle標(biāo)簽頁(yè)

PowerBuilder提供了6種編輯格式,分別是:編輯框(Edit)、下拉式列表框(DropDownListBox)、復(fù)選框(CheckBox)、單選鈕(RadioButton)、編輯掩碼框(EditMask)、下拉式數(shù)據(jù)窗口(DropDownDW)。這里我們不做詳細(xì)介紹,以后在數(shù)據(jù)窗口對(duì)象一章中再作詳細(xì)介紹。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.5操作數(shù)據(jù)表中的數(shù)據(jù)

選擇要顯示的表名,點(diǎn)擊右鍵,選擇菜單中的EditData,彈出有三種數(shù)據(jù)顯示風(fēng)格的菜單。其中:Grid:網(wǎng)格顯示風(fēng)格Tabular:列表顯示風(fēng)格Freefrom:自由顯示風(fēng)格5.5.1檢索數(shù)據(jù)

在表中記錄顯示的情況下,要重新檢索表中數(shù)據(jù),可按Retrieve按鈕。

5.5.2修改、添加、刪除數(shù)據(jù)、和存儲(chǔ)數(shù)據(jù)修改數(shù)據(jù):在原有記錄上直接修改。插入記錄:選擇位置,點(diǎn)擊InsertRow按鈕插入一條空白記錄,然后輸入數(shù)據(jù)。刪除數(shù)據(jù):選擇刪除行,點(diǎn)擊DeleteRow按鈕刪除一條記錄。存儲(chǔ)數(shù)據(jù):點(diǎn)擊SaveChange按鈕將數(shù)據(jù)存盤(pán)。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.5.3將數(shù)據(jù)排序顯示

1.顯示表中記錄。2.選擇菜單【Row|Sort】,出現(xiàn)排序?qū)υ捒?,把要排序的字段從SourceData框拖到Columns框,拖動(dòng)的順序就是表中數(shù)據(jù)排序的先后次序,排序的每個(gè)字段可以是遞增排序或遞減排序,若選中排序字段的Ascending項(xiàng),則為遞增排序,反之沒(méi)選中,則按該字段遞減排序顯示。

3.定義完排序的字段或表達(dá)式后,單擊OK按鈕,就完成了排序工作。5.5.4按條件過(guò)濾數(shù)據(jù)1.顯示表中記錄。2.選擇菜單Row|Filter,出現(xiàn)定義過(guò)濾條件對(duì)話框,在對(duì)話框中輸入一個(gè)布爾型過(guò)濾表達(dá)式。3.單擊OK按鈕,則系統(tǒng)就會(huì)只顯示滿足過(guò)濾條件的記錄。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)5.5.5查看行的信息

選擇菜單【Rows|Described】。在出現(xiàn)的對(duì)話框中可看到以下信息:1.從畫(huà)板中刪除但還沒(méi)有從數(shù)據(jù)庫(kù)中刪除的行數(shù)。2.在預(yù)覽中顯示的行數(shù)。3.被過(guò)濾的行數(shù)。4.在畫(huà)板中修改但還沒(méi)有在數(shù)據(jù)庫(kù)中修改的行數(shù)。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)第6章窗口和控件6.1PowerBuilder中的窗口6.1.1窗口概述

1.窗口的屬性指窗口的大小、標(biāo)題、菜單等內(nèi)容,描述的是窗口的外觀和行為。2.窗口中的控件放置在窗口中的按鈕、數(shù)據(jù)窗口等用于顯示數(shù)據(jù)、讓用戶輸入數(shù)據(jù)或讓用戶執(zhí)行某一個(gè)動(dòng)作等對(duì)象。3.窗口的事件如Open、Close窗口事件等。設(shè)置窗口的屬性可以在窗口畫(huà)板的Properties視窗中進(jìn)行,也可以編寫(xiě)腳本,在運(yùn)行應(yīng)用程序過(guò)程中動(dòng)態(tài)地改變窗口的屬性。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.1.2窗口類型Main(主窗口):主窗口是可以獨(dú)立存在、不依賴于任何其它窗口的窗口,在執(zhí)行應(yīng)用程序過(guò)程中,獲得焦點(diǎn)時(shí)會(huì)覆蓋其它窗口,失去焦點(diǎn)時(shí)又會(huì)被其它窗口所覆蓋。它可以被最大化、最小化,也可以嵌入菜單,但菜單中若有工具欄,則工具欄不能被顯示,若在顯示菜單的同時(shí),也要顯示與菜單項(xiàng)對(duì)應(yīng)的工具欄,則應(yīng)選擇MDI或MDIHelp類型的窗口。

Popup(彈出式窗口):彈出式窗口通常由另一個(gè)窗口打開(kāi),打開(kāi)它的窗口稱為它的父窗口,它可以覆蓋父窗口,也可以移出父窗口,但不能被父窗口覆蓋,它總是顯示在父窗口的前面。

彈出式窗口可以被最大化、最小化,也可以擁有自己的菜單,當(dāng)彈出式窗口被最小化時(shí),它以圖標(biāo)形式顯示在屏幕底部,而不是在父窗口中;當(dāng)彈出式窗口最大化時(shí),最大化到整個(gè)屏幕,而不僅僅覆蓋父窗口部分;當(dāng)父窗口最小化時(shí),彈出式窗口隨其隱藏,當(dāng)父窗口被關(guān)閉時(shí),彈出式窗口也隨之關(guān)閉。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.1.2窗口類型Child(子窗口):子窗口也是由另一個(gè)窗口打開(kāi),打開(kāi)它的窗口是它的父窗口,父窗口可以是主窗口或彈出式窗口。子窗口不能移出父窗口范圍,只能在父窗口范圍內(nèi)移動(dòng),當(dāng)移動(dòng)子窗口時(shí),子窗口移出父窗口部分變?yōu)椴豢梢?jiàn);當(dāng)移動(dòng)父窗口時(shí),子窗口也隨之移動(dòng),并且保持與父窗口相對(duì)位置不變。子窗口沒(méi)有菜單,也不能被當(dāng)作當(dāng)前活動(dòng)窗口,但它可以被最大化和最小化,當(dāng)被最小化時(shí),圖標(biāo)顯示在父窗口中,當(dāng)被最大化時(shí),它充滿整個(gè)父窗口工作區(qū),當(dāng)父窗口關(guān)閉時(shí),它也被關(guān)閉。

Response(響應(yīng)窗口):響應(yīng)窗口是一種應(yīng)答式窗口,用于向用戶請(qǐng)求信息,并且要得到用戶的應(yīng)答,響應(yīng)窗口通常在另一窗口(父窗口)中打開(kāi),但它的父窗口不能是響應(yīng)窗口。當(dāng)響應(yīng)窗口獲得焦點(diǎn)成為活動(dòng)窗口時(shí),用戶必須應(yīng)答該響應(yīng)窗口或關(guān)閉該響應(yīng)窗口,才能訪問(wèn)其它窗口。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.1.2窗口類型MDI(多文檔界面窗口):MDI窗口是一個(gè)最先打開(kāi)的窗口,它充當(dāng)其它窗口的容器,任何時(shí)候在MDI中打開(kāi)的窗口叫做一個(gè)工作表,工作表只能在框架內(nèi)活動(dòng),若把它極小化,就變成一個(gè)位于框架底部的圖標(biāo)。

MDIHelp(帶微幫助的多文檔界面窗口):MDIHelp類似于MDI窗口,但MDIHelp窗口在底部多了一個(gè)狀態(tài)欄,用于向用戶顯示當(dāng)前應(yīng)用程序的一些簡(jiǎn)短信息和幫助信息。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.2創(chuàng)建窗口

6.2.1創(chuàng)建窗口對(duì)象創(chuàng)建新窗口一般要經(jīng)過(guò)以下五個(gè)步驟:打開(kāi)窗口畫(huà)板;新建一個(gè)窗口,定義窗口的屬性;在窗口中添加控件;為窗口和窗口中的控件編寫(xiě)腳本;預(yù)覽并存盤(pán)。1.單擊菜單【File|New…】。2.選擇【PBObject|Window】圖標(biāo),同時(shí)注意Target文本框中是否是創(chuàng)建窗口所在的應(yīng)用程序,若名稱正確,則點(diǎn)擊【OK】按鈕。出現(xiàn)窗口界面,如下圖。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.2.1創(chuàng)建窗口對(duì)象3.上圖右邊部分設(shè)置窗口屬性。左邊部分底部的第一個(gè)標(biāo)簽Layout用來(lái)設(shè)計(jì)窗口的格局,如在窗口中添加按鈕、文字等;第二個(gè)標(biāo)簽open用來(lái)給窗口及窗口中的控件編寫(xiě)腳本;第五個(gè)標(biāo)簽DeclareInstanceVariables用來(lái)定義非局部變量。4.窗口屬性、控件、腳本設(shè)置完畢(也可以部分設(shè)置)后,點(diǎn)擊菜單【File|Save】,在Windows文本框輸入新建窗口的名稱(窗口名按規(guī)則用w_打頭),在Comments文本框輸入窗口的注釋,輸入完畢后點(diǎn)擊【OK】按鈕即可完成。6.2.2另存窗口

1.打開(kāi)原來(lái)窗口點(diǎn)擊菜單【File|Open】,選擇要打開(kāi)的窗口,點(diǎn)擊OK按鈕。即將原來(lái)窗口打開(kāi)。2.將窗口另存為選擇菜單【File|SaveAs】,將原窗口保存為新窗口,在新窗口中進(jìn)行當(dāng)修改之后,再保存。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.2.3繼承一個(gè)窗口1.點(diǎn)擊菜單【File|Inherit】。2.選擇祖先窗口所在的目標(biāo)文件(Target)、庫(kù)文件(Libraries)、對(duì)象類型(ObjectsofType)選擇Windows,并輸入或選擇窗口名稱之后點(diǎn)擊OK按鈕。3.對(duì)繼承的窗口根據(jù)需要進(jìn)行適當(dāng)?shù)男薷?,然后保存。使用繼承方法創(chuàng)建窗口有以下優(yōu)點(diǎn):·

當(dāng)修改祖先窗口后,該窗口的所有后代窗口都會(huì)隨之做相應(yīng)修改?!?/p>

在程序代碼和應(yīng)用窗口中獲得了一致性。注意:不能刪除繼承窗口中的原有控件,也不能修改和刪除原有的腳本程序,若不想使用某個(gè)控件,可以不選擇這個(gè)控件的Visible屬性,使這個(gè)控件不顯示。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3設(shè)置窗口屬性

窗口屬性不同,呈現(xiàn)給用戶的界面就有所區(qū)別,可以根據(jù)需要來(lái)設(shè)置窗口的屬性。

打開(kāi)要設(shè)置屬性的窗口,在窗口的任意空白處點(diǎn)擊右鍵,選擇Properties,或選擇菜單【View|Properties】,就打開(kāi)了窗口的屬性窗口。6.3.1設(shè)置General頁(yè):1.指定窗口類型:?jiǎn)螕鬢indowType下拉式列表框,從中選擇合適的窗口類型。

2.指定窗口菜單:在MenuName后面指定菜單名稱。3.選擇窗口圖標(biāo):點(diǎn)擊Icon屬性下拉列表框右邊按鈕,從中選擇一個(gè)系統(tǒng)預(yù)定義圖標(biāo),或點(diǎn)擊右邊的Browse按鈕指定一個(gè)圖標(biāo)文件即可。

4.設(shè)置窗口顏色:設(shè)置窗口的背景顏色:從BackColor下拉列表框中選擇顏色;設(shè)置MDI窗口工作區(qū)顏色:從MDIClientColor下拉列表框中選擇顏色。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3.1設(shè)置General頁(yè):5.指定其它基本特征(1)Title:窗口的標(biāo)題,默認(rèn)的標(biāo)題是Untitled,有的窗口類型可以輸入標(biāo)題,有的不能輸入標(biāo)題,這可根據(jù)該項(xiàng)是否是可輸入狀態(tài)而定。(2)Visible:選擇該項(xiàng),表示打開(kāi)的窗口處于可視狀態(tài),否則窗口雖然已經(jīng)打開(kāi)但不能顯示在屏幕上。在程序運(yùn)行時(shí)通過(guò)腳本控制,能根據(jù)需要決定是否顯示窗口。其語(yǔ)法格式為:窗口名稱.visible=true表示顯示窗口;窗口名稱.visible=false表示不顯示窗口。(3)Enabled:選擇該項(xiàng)表示窗口處于可使用狀態(tài),否則窗口及窗口中的控件不能使用。該項(xiàng)也可通過(guò)腳本來(lái)控制,使得程序在運(yùn)行時(shí)能根據(jù)需要決定窗口是否可用。其語(yǔ)法格式為:窗口名稱.enabled=true表示窗口可用;窗口名稱.enabled=false表示窗口不可用。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3.1設(shè)置General頁(yè):5.指定其它基本特征(4)ControlMenu:選擇該項(xiàng)表示在窗口的標(biāo)題欄上可以使用控制框,包括窗口左上角的控制菜單項(xiàng)、窗口右上角的關(guān)閉控制項(xiàng);不選擇該項(xiàng)表示不能使用窗口標(biāo)題欄上的所有控制框。(5)MaxBox:在選擇ControlMenu的同時(shí)再選擇該項(xiàng),則在窗口的右上角顯示最大化按鈕,點(diǎn)擊最大化按鈕,窗口變?yōu)樽畲蠡癄顟B(tài)同時(shí)最大化按鈕變?yōu)檫€原按鈕,點(diǎn)擊還原按鈕回到窗口的初始狀態(tài)。(6)MinBox:在選擇ControlMenu的同時(shí)再選擇該項(xiàng),則在窗口的右上角顯示最小化按鈕,點(diǎn)擊最小化按鈕,窗口在屏幕底部縮為一個(gè)圖標(biāo),點(diǎn)擊圖標(biāo)回到窗口的初始狀態(tài)。(7)Border:指定窗口周圍是否要加邊框,只有子窗口、彈出式窗口可以不加邊框,其它窗口系統(tǒng)自動(dòng)加上邊框,并且用戶不能將邊框去除。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3.1設(shè)置General頁(yè):5.指定其它基本特征(8)Resizable:指定在程序運(yùn)行過(guò)程中,用戶是否可以改變窗口的大小,系統(tǒng)指定響應(yīng)窗口不能改變其大小。(9)WindowState:指定窗口第一次顯示在屏幕上的方式,這里方式有三種:Normal表示按照窗口定義的大小和位置顯示在屏幕上,Maximized表示以最大化顯示窗口,Minimized表示以最小化顯示窗口。6.3.2設(shè)置Scroll頁(yè)該頁(yè)用于定義滾動(dòng)條參數(shù)。(1)HScrollBar:指定窗口中是否具有水平滾動(dòng)條。窗口顯示的大小不能無(wú)限增大,有時(shí)希望看到區(qū)域右邊內(nèi)容,可選擇該項(xiàng)。(2)VScrollBar:指定窗口中是否具有垂直滾動(dòng)條。當(dāng)窗口垂直方向內(nèi)容較多,希望能看到顯示區(qū)域以外內(nèi)容,可選擇該項(xiàng)。(3)UnitsPerLine:?jiǎn)螕舸怪睗L動(dòng)條上下箭頭時(shí),垂直滾動(dòng)條滑塊每次上下移動(dòng)的單位數(shù)。當(dāng)值為0時(shí),每次滾動(dòng)窗口高度的1/100。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3.2設(shè)置Scroll頁(yè)(4)UnitsPerColumn:?jiǎn)螕羲綕L動(dòng)條左右箭頭時(shí),水平滾動(dòng)條滑塊每次左右移動(dòng)的單位數(shù)。當(dāng)值為0時(shí),每次滾動(dòng)窗口寬度的1/100。(5)ColumnsPerPage:?jiǎn)螕羲綕L動(dòng)條上的任意位置,滑塊左右滾動(dòng)的列數(shù)。默認(rèn)情況下該值為0,滾動(dòng)10列。(6)LinesPerPage:?jiǎn)螕舸怪睗L動(dòng)條上的任意位置,滑塊上下滾動(dòng)的行數(shù)。默認(rèn)情況下該值為0,滾動(dòng)10行。6.3.3設(shè)置Toolbar頁(yè)

(1)ToolbarVisible:定義窗口是否顯示工具欄。(2)ToolbarAlignment:設(shè)置工具欄的位置,五個(gè)選項(xiàng):alignatbottom、alignatleft、alignatright、alignattop、floating分別表示工具欄位于底部、左邊、右邊、頂部、浮動(dòng)狀態(tài)。若工具欄顯示位置為floating,則應(yīng)填寫(xiě)工具欄左上角的x,y坐標(biāo)值,并指定工具欄的寬度和高度。ToolbarX、ToolbarY:表示工具欄左上角的X坐標(biāo)、Y坐標(biāo),該坐標(biāo)是相對(duì)于窗口的。ToolbarWide、ToolbarHeight:表示工具欄的左右長(zhǎng)度、上下高度,這是絕對(duì)的,不是相對(duì)窗口。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.3.4設(shè)置Other頁(yè)(1)X:窗口左上角距屏幕或其父窗口客戶區(qū)左邊界的距離。(2)Y:窗口左上角距屏幕或其父窗口客戶區(qū)上邊界的距離。(3)Width:窗口的左右寬度。(4)Height:窗口的上下高度。(5)Pointer:鼠標(biāo)移到該窗口區(qū)域內(nèi)時(shí)鼠標(biāo)的形狀,可以點(diǎn)擊下拉列表框,選擇系統(tǒng)預(yù)定義的形狀,或點(diǎn)擊右邊按鈕,選擇文件來(lái)定義鼠標(biāo)形狀。6.4預(yù)覽、運(yùn)行和打印窗口

6.4.1預(yù)覽、運(yùn)行窗口

打開(kāi)設(shè)計(jì)窗口后,選擇菜單【Design|Preview】,可預(yù)覽窗口。選擇Painterbar上的【Preview】按鈕,可預(yù)覽窗口。選擇Powerbar上的【Run/Preview】按鈕,在彈出的對(duì)話框中選擇要預(yù)覽的窗口,點(diǎn)擊【OK】按鈕,可預(yù)覽、運(yùn)行窗口。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.4.2打印窗口

窗口打開(kāi)后,選擇菜單【File|Print】,就可打印窗口。

6.5窗口中的控件

用戶在運(yùn)行應(yīng)用程序時(shí),主要通過(guò)放置在窗口中的控件完成各項(xiàng)工作。6.5.1控件概述

從使用的角度看,系統(tǒng)控件分為兩類:(1)能響應(yīng)用戶的控件,它具有事件(如:命令按鈕、編輯框)。(2)不能響應(yīng)用戶的控件,它沒(méi)有事件(如:繪圖控件)。無(wú)論哪種控件,只有將其放置在窗口中,與窗口融為一體時(shí)才能發(fā)揮作用。6.5.2窗口中的控件操作

1.添加控件

(1)添加控件:選擇菜單【Insert|Control】,或點(diǎn)擊PainterBar下拉控件按鈕上的相應(yīng)控件,在窗口上要添加控件的位置,點(diǎn)擊鼠標(biāo),再調(diào)整控件大小、位置、字體等屬性即可完成。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.5.2窗口中的控件操作(2)復(fù)制控件首先選擇窗口中已存在的同種類型的一個(gè)控件,選擇下列方式之一完成。·

按Ctrl+T鍵?!?/p>

選擇菜單【Edit|Duplicate】?!?/p>

單擊鼠標(biāo)右鍵,選擇彈出式菜單中的Duplication選項(xiàng)。2.選擇控件(1)選擇單個(gè)控件把鼠標(biāo)移到控件上,單擊鼠標(biāo)左鍵,則控件的四個(gè)角上出現(xiàn)四個(gè)實(shí)心小方塊,表示選擇了這個(gè)控件,同時(shí)在系統(tǒng)狀態(tài)欄上顯示了選擇的這個(gè)控件名稱。此處的四個(gè)實(shí)心小方塊稱為把柄。(2)選擇相鄰的多個(gè)控件相鄰控件是指包含在同一矩形區(qū)域中的一組控件,可按以下方法選中它們。·

在這些控件的左上角,按住鼠標(biāo)左鍵不放?!?/p>

在窗口中拖出一個(gè)矩形區(qū)域,保證所需控件都在矩形區(qū)域內(nèi)。·

放開(kāi)左鍵,此時(shí)所有控件都帶有把柄,表示這些控件都被選中。在多個(gè)控件被選中后,系統(tǒng)的狀態(tài)欄顯示GroupSelected。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.5.2窗口中的控件操作(3)選擇不相鄰的多個(gè)控件首先選中某個(gè)控件,按下Ctrl鍵不放,同時(shí)用鼠標(biāo)點(diǎn)擊其它控件,最終所有點(diǎn)擊到的控件被選中,若在按下Ctrl鍵的同時(shí),在被選中的控件上點(diǎn)擊鼠標(biāo)左鍵,則取消選中該控件。(4)選中所有控件按下Ctrl+A鍵,或選擇菜單【Edit|SelectAll】,窗口中的所有控件都將被選中。3.刪除控件首先選擇要?jiǎng)h除的一個(gè)或一組控件后,再選擇下列方法之一刪除選中的控件。(1)按下Del鍵。(2)選擇菜單【Edit|Delete】。(3)單擊鼠標(biāo)右鍵,選擇Delete菜單項(xiàng)。4.調(diào)整控件的位置和大小

(1)移動(dòng)控件選擇控件后,拖動(dòng)到新位置。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.5.2窗口中的控件操作4.調(diào)整控件的位置和大小

(2)改變控件大小選中控件后,移動(dòng)鼠標(biāo)經(jīng)過(guò)控件的邊界,使它變?yōu)殡p箭頭的線條形狀

,然后按住鼠標(biāo)左鍵不放并拖動(dòng)它。

(3)網(wǎng)格

系統(tǒng)提供了網(wǎng)格來(lái)幫助調(diào)整控件的大小和位置。選擇菜單【Design|Option】,打開(kāi)網(wǎng)格設(shè)置對(duì)話框。在AlignmentGrid中設(shè)置網(wǎng)格的寬度、長(zhǎng)度等。SnaptoGrid:選中該項(xiàng),當(dāng)放置和移動(dòng)控件時(shí),自動(dòng)滑落到網(wǎng)格點(diǎn)上。ShowGrid:選中該項(xiàng),在工作區(qū)中顯示網(wǎng)格。X:用象素表示的網(wǎng)格中,每個(gè)單元的寬度。

Y:用象素表示的網(wǎng)格中,每個(gè)單元的高度。

(4)對(duì)齊控件

要將一組控件對(duì)齊,首先要選擇基準(zhǔn)位置上的控件,如要使控件左對(duì)齊,先選擇左對(duì)齊基準(zhǔn)位置上的一個(gè)控件,再選擇其它控件,進(jìn)行左對(duì)齊;若要使一組控件之間的上下間距相等,則先選擇兩個(gè)控件,它們相距符合基準(zhǔn)間距要求,再選擇其它控件,進(jìn)行相應(yīng)的對(duì)齊設(shè)置。

結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.5.2窗口中的控件操作(4)對(duì)齊控件選擇菜單【Format|Align】或Space或Size,然后選擇對(duì)齊方式。對(duì)齊方式有六種:左對(duì)齊、右對(duì)齊、水平中心對(duì)齊、垂直中心對(duì)齊、頂部對(duì)齊、底部對(duì)齊。6.6設(shè)置控件屬性

控件屬性的設(shè)置決定了控件在運(yùn)行期間的行為與外觀??丶愋筒煌?,屬性也不盡相同,但不同類型的控件也有相同的屬性。6.6.1給控件命名

在窗口中添加一個(gè)控件后,系統(tǒng)自動(dòng)為這個(gè)控件生成一個(gè)唯一的名稱,該名稱由默認(rèn)的前綴和數(shù)字組成。為了使腳本更具可讀性,在命名控件時(shí),使用系統(tǒng)給定的前綴,而后半部分由用戶自定義,應(yīng)盡量使用能代表控件功能的單詞。給一個(gè)控件命名的基本步驟如下:(1)進(jìn)入該控件的Properties視窗。(2)選擇General標(biāo)簽頁(yè),在Name文本框中顯示了系統(tǒng)默認(rèn)的控件名稱。(3)留用前綴,刪除其它,然后輸入有意義的控件名稱后綴,后綴可以使用任何有效的標(biāo)識(shí)符,最多40個(gè)字符。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.6.2改變控件文本

(1)通過(guò)屬性設(shè)置控件Text文本框中的內(nèi)容代表顯示在控件上的文本,用系統(tǒng)提供的Stylebar工具欄來(lái)改變控件的文本,包括文本本身、字體、大小、對(duì)齊方式等,命令按鈕文本的對(duì)齊方式只能是居中。(2)通過(guò)腳本控制若控件在程序運(yùn)行的不同時(shí)刻,要求顯示不同的文本,要實(shí)現(xiàn)這一功能就要用腳本進(jìn)行控制。如:命令按鈕cb_1,在程序運(yùn)行時(shí)要顯示“退出”??删帉?xiě)腳本:cb_1.text=“退出”。字體大小使用textsize來(lái)描述。如cb_1.textsize=-20,即將字號(hào)設(shè)置為20。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.6.3定義加速鍵

為了快速訪問(wèn)一個(gè)控件,可以給它定義加速鍵,這樣用戶只要按下Alt+加速鍵就能把焦點(diǎn)切換到相應(yīng)的控件上。(1)為CommandButton、CheckBox、RadioButton控件定義加速鍵在控件Text屬性文本框中要作為加速鍵的字母前面加上&符號(hào)即可,控件以下劃線的方式顯示加速鍵。(2)為SingleLineEdit、MultiLineEdit、ListBox、DropDownListBox控件定義加速鍵進(jìn)入控件的Properties視窗,在General標(biāo)簽頁(yè)Accelerator文本框中輸入加速鍵字母。6.6.4定義Tab順序Tab順序是指當(dāng)窗口處于運(yùn)行狀態(tài)下通過(guò)按下Tab鍵訪問(wèn)控件的順序。(1)顯示Tab值打開(kāi)窗口畫(huà)板,選擇菜單Format|TabOrder,將顯示窗口中所有控件的Tab值;再次選擇菜單【Format|TabOrder】,則取消顯示Tab值。(2)修改Tab值用鼠標(biāo)點(diǎn)擊要修改對(duì)象的Tab值,輸入新值即可,值的范圍是0至9999。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.6.5控件的可訪問(wèn)性

控件有兩個(gè)屬性影響其可訪問(wèn)性,只有這兩個(gè)屬性都設(shè)置為真時(shí)才能訪問(wèn)控件。(1)Visible:該屬性被選中,則該控件顯示在窗口中;該屬性未被選中,則程序運(yùn)行時(shí)該控件不顯示,系統(tǒng)默認(rèn)情況下隱藏的控件不在畫(huà)板中顯示,要在畫(huà)板中顯示這些隱藏的控件,通過(guò)選擇菜單Design|ShowInvisibles來(lái)完成。有兩種方式改變控件的Visible屬性?!?/p>

屬性設(shè)置:選擇或取消控件的Visible屬性?!?/p>

腳本控制:控件名稱.visible=true表示顯示控件,控件名稱.visible=false表示隱藏控件。(2)Enabled:該屬性被選中,則該控件是活動(dòng)的;該屬性未被選中,則在程序運(yùn)行時(shí)該控件只能顯示但不能響應(yīng)鍵盤(pán)和鼠標(biāo)操作,呈灰色。有兩種方式改變控件的Enabled屬性?!?/p>

屬性設(shè)置:選擇或取消控件的Enabled屬性?!?/p>

腳本控制:控件名稱.Enabled=true表示激活控件,由此變得可以使用,控件名稱.Enabled=false表示控件由此變得不能使用,呈灰色。結(jié)束放映第一頁(yè)上一頁(yè)下一頁(yè)最后一頁(yè)6.6設(shè)置控件屬性給控件命名,改變控件文本,定義加速鍵,定義Tab順序,控件的可訪問(wèn)性(Visible、Enabled)。6.7控件簡(jiǎn)介(1)激活動(dòng)作的控件:用于激活某個(gè)事件,執(zhí)行一些功能性操作,如打開(kāi)一個(gè)文件等。這些控件包括CommandButton、PictureButton。(2)顯示數(shù)據(jù)的控件:用于輸入、修改、顯示數(shù)據(jù)等。如DataWindows、SingleLineEdit。(3)用作選擇項(xiàng)的控件:用于從若干信息中選擇信息。如Rad

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論