本文介紹的方法和技巧都是筆者在實踐中的一點積累,在此拿出來與大家一起分享。希望在閱讀本文后會對您有所幫助或啟發(fā)。文中如有任何不足之處還望同行們給予指教。在此,我先道聲謝。
一、實現(xiàn)運(yùn)行窗口居中
眾所周知,PowerBuilder 7.0在以前的版本中提供了圖形化的預(yù)覽工具,可以很方便的在設(shè)計階段實現(xiàn)窗口居中。但是,到了7.0似乎該項工具被取消了,也沒有什么屬性來設(shè)置,至少我沒有找到。每當(dāng)我們需要將窗口居中的時候只有一點一點地調(diào)整它的X,Y值,這一點十分讓人頭痛。出于無奈,只好通過編程實現(xiàn)。我們只在每個需要居中的窗口的Open事件中寫上這些代碼就會實現(xiàn)窗口的自動居中。
要實現(xiàn)窗口的自動居中,我們可以用函數(shù)Move()來實現(xiàn)。但是,由于我們開發(fā)出來的應(yīng)用程序往往會在不同的設(shè)置環(huán)境中運(yùn)行,雖然一般情況下是由我們?yōu)橛脩襞渲煤玫?,但我們總不能保證用戶顯示器的設(shè)置模式不會改變。所幸的是,PB為我們提供了環(huán)境對象Environment,該對象其實是一個系統(tǒng)結(jié)構(gòu),其中保存了PB應(yīng)用程序的運(yùn)行平臺信息,例如,代碼集,CPU類型等。其中當(dāng)然會有我們需要的屏幕寬和高。為了得到該結(jié)構(gòu)我們可以用函數(shù)GetEnvironment()。該函數(shù)的作用是得到關(guān)于操作系統(tǒng),處理器和屏幕的系統(tǒng)信息。具體用法如下:
Environment my_system
Integer li_ScreenWidth, li_ScreenHeight
GetEnvironment(my_system)// 得到屏幕的總寬度和長度
li_ScreenWidth = PixelsToUnits(my_system.ScreenWidth, XPixelsToUnits!)
li_ScreenHeight = PixelsToUnits(my_system.ScreenHeight, XPixelsToUnits!)
// 函數(shù)PixelsToUnits()的作用是將屏幕的像數(shù)轉(zhuǎn)換成PowerBuilder使用的單位,因為像數(shù)通常不用于方形中,具體用法請參見函數(shù)手冊。
然后就可以用Move()來實現(xiàn)窗口居中。
This.Move((li_ScreenWidth - this.Width)/2, &
(li_ScreenHeight - this.Height)/2 )
二、數(shù)據(jù)窗口中實現(xiàn)字段的組合
你有沒有碰到這樣的情況,我們輸入了客戶的詳細(xì)地址資料,包括省份,城市,地址,郵編。當(dāng)我們要給客戶們郵寄信函時需要將他們的省份,城市,地址,郵編連成在一起打印出來。然而,這些信息是分開存儲的,即存在不同的字段。這時我們就可以利用PowerBuiler提供的在數(shù)據(jù)窗口添加計算域(Compute Field)來實現(xiàn)字符字段的組合顯示。
一、實現(xiàn)運(yùn)行窗口居中
眾所周知,PowerBuilder 7.0在以前的版本中提供了圖形化的預(yù)覽工具,可以很方便的在設(shè)計階段實現(xiàn)窗口居中。但是,到了7.0似乎該項工具被取消了,也沒有什么屬性來設(shè)置,至少我沒有找到。每當(dāng)我們需要將窗口居中的時候只有一點一點地調(diào)整它的X,Y值,這一點十分讓人頭痛。出于無奈,只好通過編程實現(xiàn)。我們只在每個需要居中的窗口的Open事件中寫上這些代碼就會實現(xiàn)窗口的自動居中。
要實現(xiàn)窗口的自動居中,我們可以用函數(shù)Move()來實現(xiàn)。但是,由于我們開發(fā)出來的應(yīng)用程序往往會在不同的設(shè)置環(huán)境中運(yùn)行,雖然一般情況下是由我們?yōu)橛脩襞渲煤玫?,但我們總不能保證用戶顯示器的設(shè)置模式不會改變。所幸的是,PB為我們提供了環(huán)境對象Environment,該對象其實是一個系統(tǒng)結(jié)構(gòu),其中保存了PB應(yīng)用程序的運(yùn)行平臺信息,例如,代碼集,CPU類型等。其中當(dāng)然會有我們需要的屏幕寬和高。為了得到該結(jié)構(gòu)我們可以用函數(shù)GetEnvironment()。該函數(shù)的作用是得到關(guān)于操作系統(tǒng),處理器和屏幕的系統(tǒng)信息。具體用法如下:
Environment my_system
Integer li_ScreenWidth, li_ScreenHeight
GetEnvironment(my_system)// 得到屏幕的總寬度和長度
li_ScreenWidth = PixelsToUnits(my_system.ScreenWidth, XPixelsToUnits!)
li_ScreenHeight = PixelsToUnits(my_system.ScreenHeight, XPixelsToUnits!)
// 函數(shù)PixelsToUnits()的作用是將屏幕的像數(shù)轉(zhuǎn)換成PowerBuilder使用的單位,因為像數(shù)通常不用于方形中,具體用法請參見函數(shù)手冊。
然后就可以用Move()來實現(xiàn)窗口居中。
This.Move((li_ScreenWidth - this.Width)/2, &
(li_ScreenHeight - this.Height)/2 )
二、數(shù)據(jù)窗口中實現(xiàn)字段的組合
你有沒有碰到這樣的情況,我們輸入了客戶的詳細(xì)地址資料,包括省份,城市,地址,郵編。當(dāng)我們要給客戶們郵寄信函時需要將他們的省份,城市,地址,郵編連成在一起打印出來。然而,這些信息是分開存儲的,即存在不同的字段。這時我們就可以利用PowerBuiler提供的在數(shù)據(jù)窗口添加計算域(Compute Field)來實現(xiàn)字符字段的組合顯示。