PB9 0動態生成控制項

2021-06-20 17:03:47 字數 2183 閱讀 2671

在做畢業設計的時候,遇到了用核取方塊來顯示資料庫中的資訊,但是數量不能確定。因此,需要減低程式顯示時和資料庫的耦合度,讓程式自己可以根據資料庫的記錄的資訊數量變化自動適應。基於該需求用到了動態生成控制項。還是和之前一樣,知識內容都是一樣的,只是在使用的細節上的區別。

根據資料視窗中符合要求的資料庫記錄數和內容動態的建立核取方塊控制項,放置於

tab control

控制項上。這樣就可以很靈活的應對資料的變更。

動態建立控制項的方法

語法:w

indowname.openuserobject

(userobjectvar

)引數:

windowname

:要在其上顯示使用者物件的視窗的名稱

userobjectvar

:要顯示的使用者物件的變數,用於儲存建立的控制項x、y

:用於確定控制項相對窗體的位置,可選預設為0

像之前使用過的配置好資料視窗後,拖放的窗體上。在窗體的

open

事件裡寫下如下**:

dw_1.settransobject(sqlca)

dw_1.retrieve()

。出現這個問題的原因是因為我把

dw_1

放在了tab

控制項上了。而如上的寫法預設的

parent

是窗體,也就是這麼寫

dw_1

和tab

控制項是同級的。因此提示未定義的變數。所以其正確的寫法應該改為:

tab_set.tabpage_replace.dw_1.settransobject(sqlca)

tab_set.tabpage_replace.dw_1.retrieve()

pb9.0

只有窗體本身才有建立控制項的方法而

tab控制項是無法建立的。因此,我們只能是通過窗體建立,然後移植到

tab控制項上。但是,

pb9.0

中並沒有提供設定

parent

的方法。所以這裡涉及到了乙個

api函式:

setparent

。api

使用前需要宣告,在

declare

中的localexternl functions

中。此函式的定義在中了。

因為,關於控制項最後輸出的矩陣是幾行幾列的需要通過演算法來確定,但是呢還沒有弄好。暫時就先看看動態建立的實現吧。

//根據資料視窗的課程資訊動態建立核取方塊 

checkbox cbx_course; //定義checkbox型別的控制項陣列

int j

int i

for i=0 to 3

for j = 1 totab_set.tabpage_replace.dw_1.rowcount()/4

//建立控制項,通過i、j控制輸出位置

w_set.openuserobject(cbx_course[4*i+j],"checkbox",(j*800)-700,300*i+100)

//根據課程名改變控制項的text

cbx_course[4*i+j].text=tab_set.tabpage_replace.dw_1.getitemstring(4*i+j,"coursename")

cbx_course[4*i+j].visible=true

cbx_course[4*i+j].height=120 //預設時這兩個都為0

cbx_course[4*i+j].width=800

//通過api將控制項移動到tab控制項上

setparent(handle(cbx_course[4*i+j]),handle(tab_set.tabpage_course.r_course))

cbx_course[4*i+j].backcolor=tab_set.tabpage_replace.backcolor

next

next

動態建立控制項就是這個樣子了,但是關於如何確定i、

j還沒有寫完,另外沒有資料時的錯誤處理之類的也沒有做。等我做好了再來更改這部分的**吧。

PB9 0呼叫Webservice步驟以及相關問題

1,pb安裝路徑下找到pbsoapclient90.pbd,加到程式中 2,pb file new webservice proxy wizard 輸入webservice wsdl url 一般為 url?wsdl 3,生成 物件 4,按例子呼叫 soapconnection conn defin...

PB動態建立控制項

第一種,直接建立 其實就是根據系統的類名建立 commandbutton lbtn new lbtn new create commandbutton lbtn new.width 300 lbtn new.height 100 lbtn new.visible true lbtn new.text...

android動態生成控制項

方法 呼叫布局容器的addview,addview需傳入的引數就是你想放置的view 這裡給出乙個例子 final linearlayout layout new linearlayout this layout.setorientation linearlayout.vertical setcon...