一直以來都想寫一點為BCB初學者快速入門的東西,前不久寫了幾篇《閒談BCB》想把自己學習BCB中如何來解決難點的方法說給大家,沒想到被罵得不成樣子。本想不寫了,但覺得這些東西留下來能做什麼呢?還是用另一種方法來重新演譯我的思維吧,最近有些忙,那幾篇沒有寫完的文章,我也會盡快寫完的,至於《深入QR》,我想我一定會用另一種手法來寫,讓你一看就會把QR這個嬌女的所有衣服都脫光,不整理到這個地步,我是不敢輕易再拿出來,還請朋友見諒!
本文分為《基礎入門》、《快速提高》與《成功編程者》三部分。
第一部分:基礎入門
1.窗體
1)問:Windows的編程就是在窗體的基礎上實現的, C++Builder是怎樣處理窗體的呢?
答:窗體的一部分功能通過窗體的屬性來實現,窗體的屬性非常多,這裡只對其中比較重要的屬性進行介紹。
此外還有一些運行時態屬性,這些屬性只有在程序運行的時候才能通過編程訪問。這種屬性主要有:
Active 屬性用來確定窗體是否獲得輸入焦點。
ActiveMDIChild 這個函數將返回當前活動的子窗體。
DropTarget 屬性用來指定窗體是否是拖放操作的對象。
Parent 屬性用來設定包含窗體的窗口控件,通常是另一個窗體。如果窗體沒有包含它的控件,那麼它的Parent屬性為nil。
2)問: Windows窗體有很多樣式,比如對話框,彈出窗口。如果我要控制窗體的邊界樣式,應該怎麼辦?
答:屬性BorderStyle可以指定窗體邊界的外觀和行為。它一共有六種可能的取值。
bsDialog 表示大小不可變的標准的對話框邊界。
bsSingle 表示大小不可變的單線邊界。
bsNone 表示大小不可變、沒有邊界。
bsSizeable 表示標准的可改變大小的窗體。
bsToolWindow 與bsSingle時類似,但是標題較小,用做工具框窗口。
bsSizeToolWin與bsSizeable時相似,但是標題較小,做工具框窗口。
要注意的是,對於MDI子窗體,bsDialog或bsNone將不起作用。
3)問:同樣是獲得焦點,ActiveControl與SetFocus()有什麼不同?
答: ActiveControl是把焦點交給組件,它是一個屬性。而SetFocus()是組件主動要焦點,是一個方法。書寫格式也不一樣。例如,我們想使同樣的一個Button1獲得焦點,可以下的兩種寫法:
ActiveControl=Button1或Button1=SetFocus()
二者作用是一樣的,不過一般都習慣用第一種方式。
4)問:屬性FormStyle有什麼作用?
答:屬性FormStyle可以確定窗體的類型,它一共有四種屬性值。
fsNormal 表示窗體既不是MDI父窗口也不是MDI子窗口,只可能是單文檔SDI窗口或者對話框。這個屬性值是缺省值。
fsMDIChild 表示這個窗體是一個MDI子窗口。
fsMDIForm 表示這個窗體是一個MDI父窗口。
fsStayOnTop 表示窗體始終保持在窗體所屬工程中其它窗體的上面,除非還有別的窗體的FormStyle屬性也被設置成了fsStayOnTop。
要特別注意的是,在程序運行期間不要修改窗體的FormStyle屬性。
5)問:屬性Position有什麼作用?
答:屬性Position可以確定程序運行時出現在屏幕上的窗體的大小和位置,它有五種可能的取值。