【PB】PB中object,control,custom class,custom visual,custom external等概念的區別

灰色軌跡發表於2012-07-21

pb的5種類:

custom class :不可見使用者自定義類 ,如實現函式的多型
standard class :標準不可見控制元件 擴充套件類
custom visual :使用者自定義 可見類
External Visual: 外部可視類,如ocx引入
Standard Visual: PB標準可視控制元件擴充套件 

“Control”和“Object”的區別:

在PB裡,“Control”和“Object”都是類,只不過前者是可視類,後者是不可視類,叫法不同罷了。無論使用哪種方式建立的,對於PB庫畫板來說,都是UserObject,通過Insert-Object-UserObject或Insert-Control-UserObject都可以把它插入到Window裡,當然,這個物件應該是可視的。另外的插入辦法是通過PB的IDE左側的物件樹,直接用滑鼠Drag就可以了,這種方法不僅可以插入可視的UserObject,還可以插入不可視的類(可以通過View-Non Visual object llist看到它)  


對於拷貝來的程式碼,可以用一下方式判讀是從哪裡繼承來的:


雙擊該物件,觀察樣式
1:如果僅僅是一個DataWindow或其它控制元件,說明該物件是從Standsrt Visual 繼承的;
2:如果是多個控制元件的複合體,說明它是從Custom Visual繼承的
3:如果是一個PB中不存在的控制元件,說明它可能是從External Visual 繼承的
4:如果它沒有Layout檢視,說明它是從Custom Class 中繼承的
5:如果它LayOut檢視,但沒有什麼控制元件,說明它是從Standard Class中繼承的

還有一個辦法是右擊該物件,選擇Edit source,看看它的宣告,Global type XXX from YYY,YYY就是祖先的型別 

總的來說,從橫向和縱向來看:

橫向--standard,custom

縱向--visual,nonvisual


既然是標準,就有pb基本控制元件的事件,屬性等,反之custom則得自定義很多事件和屬性  

投機的檢查程式碼:

選擇Edit source,看看它的宣告,Global type XXX from YYY,YYY就是祖先的型別

如果是external visual就可以看到以下程式碼:

global type b from userobject
integer width = 288
integer height = 168
userobjects objecttype = externalvisual!
   
external:一般帶libray,更好認了  

相關文章