国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C++ Builder 初學(xué)問與答(一)

2019-11-17 05:05:52
字體:
供稿:網(wǎng)友
  一直以來都想寫一點(diǎn)為BCB初學(xué)者快速入門的東西,前不久寫了幾篇《閑談BCB》想把自己學(xué)習(xí)BCB中如何來解決難點(diǎn)的方法說給大家,沒想到被罵得不成樣子。
本想不寫了,但覺得這些東西留下來能做什么呢?還是用另一種方法來重新演譯我的思維吧,最近有些忙,那幾篇沒有寫完的文章,我也會盡快寫完的,至于《深入QR》,我想我一定會用另一種手法來寫,讓你一看就會把QR這個(gè)嬌女的所有衣服都脫光,不整理到這個(gè)地步,我是不敢輕易再拿出來,還請朋友見諒!  本文分為《基礎(chǔ)入門》、《快速提高》與《成功編程者》三部分。  第一部分:基礎(chǔ)入門  1.窗體

  1)問:Windows的編程就是在窗體的基礎(chǔ)上實(shí)現(xiàn)的, C++Builder是怎樣處理窗體的呢?  答:窗體的一部分功能通過窗體的屬性來實(shí)現(xiàn),窗體的屬性非常多,這里只對其中比較重要的屬性進(jìn)行介紹。  1.ActiveControl指定窗體上的某個(gè)組件為輸入焦點(diǎn)。如下面的語句將窗體上的Label1組件成為輸入焦點(diǎn):ActiveControl=Label1。在同一時(shí)時(shí)刻,應(yīng)用程序只能有一個(gè)輸入焦點(diǎn)。  2.BorderIcons用來設(shè)定標(biāo)題欄上出現(xiàn)哪些系統(tǒng)圖標(biāo)。它是一個(gè)集合,可以設(shè)成以下幾個(gè)類型:最大化按鈕(biMaximize)、最小化按鈕(biMinimize)、幫助按鈕(biHelp)和系統(tǒng)菜單(biSystemMenu)。  3.Icon屬性用來指定當(dāng)窗體最小化時(shí)顯示的圖標(biāo)。  4.KeyPReview屬性為true時(shí),表示擊鍵事件發(fā)生時(shí)先傳給窗體,然后再傳給有輸入焦點(diǎn)的組件上,相當(dāng)于窗體截獲了原本屬于組件的事件。缺省值為false,表示擊鍵事件只送到當(dāng)前有輸入焦點(diǎn)的組件上。  5. Menu屬性用來指定窗體的主菜單。  6.Visible屬性用來確定窗體是否可見。  此外還有一些運(yùn)行時(shí)態(tài)屬性,這些屬性只有在程序運(yùn)行的時(shí)候才能通過編程訪問。這種屬性主要有:  Active
  屬性用來確定窗體是否獲得輸入焦點(diǎn)。
  
  ActiveMDIChild
  這個(gè)函數(shù)將返回當(dāng)前活動的子窗體。
  
  DropTarget
  屬性用來指定窗體是否是拖放操作的對象。
  
  Parent
  屬性用來設(shè)定包含窗體的窗口控件,通常是另一個(gè)窗體。假如窗體沒有包含它的控件,那么它的Parent屬性為nil。
  



更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或
  2)問: Windows窗體有很多樣式,比如對話框,彈出窗口。假如我要控制窗體的邊界樣式,應(yīng)該怎么辦?  答:屬性BorderStyle可以指定窗體邊界的外觀和行為。它一共有六種可能的取值。
  bsDialog
  表示大小不可變的標(biāo)準(zhǔn)的對話框邊界。
  
  bsSingle
  表示大小不可變的單線邊界。
  
  bsNone
  表示大小不可變、沒有邊界。
  
  bsSizeable
  表示標(biāo)準(zhǔn)的可改變大小的窗體。
  
  bsToolWindow
  與bsSingle時(shí)類似,但是標(biāo)題較小,用做工具框窗口。
  
  bsSizeToolWin
  與bsSizeable時(shí)相似,但是標(biāo)題較小,做工具框窗口。  要注重的是,對于MDI子窗體,bsDialog或bsNone將不起作用。  3)問:同樣是獲得焦點(diǎn),ActiveControl與SetFocus()有什么不同?   答: ActiveControl是把焦點(diǎn)交給組件,它是一個(gè)屬性。而SetFocus()是組件主動要焦點(diǎn),是一個(gè)方法。書寫格式也不一樣。例如,我們想使同樣的一個(gè)Button1獲得焦點(diǎn),可以下的兩種寫法:  ActiveControl=Button1或Button1=SetFocus()  二者作用是一樣的,不過一般都習(xí)慣用第一種方式。  4)問:屬性FormStyle有什么作用?  答:屬性FormStyle可以確定窗體的類型,它一共有四種屬性值。  fsNormal

  表示窗體既不是MDI父窗口也不是MDI子窗口,只可能是單文檔SDI窗口或者對話框。這個(gè)屬性值是缺省值。
  
  fsMDIChild
  表示這個(gè)窗體是一個(gè)MDI子窗口。
  
  fsMDIForm
  表示這個(gè)窗體是一個(gè)MDI父窗口。




更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或
  
  fsStayOnTop
  表示窗體始終保持在窗體所屬工程中其它窗體的上面,除非還有別的窗體的FormStyle屬性也被設(shè)置成了fsStayOnTop。  要非凡注重的是,在程序運(yùn)行期間不要修改窗體的FormStyle屬性。
  5)問:屬性Position有什么作用?  答:屬性Position可以確定程序運(yùn)行時(shí)出現(xiàn)在屏幕上的窗體的大小和位置,它有五種可能的取值。  1.poDesigned表示使用設(shè)計(jì)時(shí)指定的尺寸和位置屬性時(shí)顯示窗體。尺寸屬性是指Height和Width,位置屬性是指Left和Top。這個(gè)屬性值是缺省值。  2.poDefault表示窗體在屏幕上顯示的位置和大小由Windows決定。每次運(yùn)行應(yīng)用程序時(shí),窗體都會稍微向下向右移動。  3.poDefaultPosOnly表示窗體以設(shè)計(jì)時(shí)的窗體尺寸顯示窗體,但是在屏幕上顯示的位置由Windows確定。每次運(yùn)行應(yīng)用程序時(shí),窗體都會稍微向下向右移動。當(dāng)無法再向下移動時(shí),就又會從屏幕的左上角開始顯示。  4.poDefaultSizeOnly表示窗體的位置由設(shè)計(jì)時(shí)指定的值確定,而尺寸由Windows確定。  5.poScreenCenter表示使用設(shè)計(jì)時(shí)指定的尺寸和位置屬性,在屏幕的中心顯示窗體。  6)問:如何最大化或最小化窗體?  答:屬性WindowState與窗體的顯示有關(guān),它有三種可能的取值。  wsNormal
  窗體既不是最大化顯示也不是最小化顯示。這個(gè)值是缺省值。
  
  wsMinimized
  窗體最小化顯示。
  
  wsMaximized
  窗體最大化顯示。  7)問:屬性ClientHeight和ClientWidth有什么作用?  答:這兩個(gè)屬性用來定義窗體用戶區(qū)域的高和寬。所謂用戶區(qū)域窗體的實(shí)際工作區(qū)域,就是除了窗體的標(biāo)題欄、菜單條、工具條和狀態(tài)條以及邊框之外的窗體區(qū)域。所以對于新創(chuàng)建的窗體,它的用戶區(qū)域比窗體的大小要稍微小一些,相對而言,窗體的大小是由屬性Height和Width確定的。  8)問:如何動態(tài)創(chuàng)建一個(gè)窗體呢?  答:我們先創(chuàng)建一個(gè)主窗體MainForm,把她的Caption改為“主窗體”,把FormStyle屬性改為fsMDIForm。再創(chuàng)建一個(gè)子窗體windows1,把Caption改為“子窗體”,把FormStyle屬性改為fsMDIChild。




更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或
  選擇“ProjectOptions…”菜單項(xiàng),將會彈出一個(gè)如圖所示的對話框。  在這里我們可以通過下拉框選擇主窗體(Main form),在左側(cè)的Auto-create forms里列出了所有的窗口,這里面的窗口通常是動態(tài)創(chuàng)建,你可以把需要動態(tài)創(chuàng)建的窗口(Available forms)通過中間的那四個(gè)按鈕調(diào)到右側(cè),然后OK就可以了。  動態(tài)的創(chuàng)建的方法如下:
void _fastcall TForm1::Button1Click(TObject *Sender){   Tform2 *Forms;   try   {Form2=new TForm2(application);//動態(tài)創(chuàng)建Form2Form2->ShowModal();delete Form2;//把Form2釋放   }   catch(Exception &exception)   {delete Form2;Application->ShowException(&exception);}}
 




更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或
  要注重一般你可能不喜歡用上面的那種形式,而寫成如下格式:
void _fastcall TForm1::Button1Click(TObject *Sender){   Tform2 *Forms;Form2=new TForm2(Application);//動態(tài)創(chuàng)建Form2……}   你要記住,無論你的子窗體創(chuàng)建是否完成,你都必須運(yùn)行delete來釋放你剛才創(chuàng)建的子窗體,當(dāng)然你也可以把釋放的過程寫在OnClose事件函數(shù)內(nèi),這個(gè)函數(shù)有一個(gè)參數(shù)為Action,它有四個(gè)取值:caNone為不關(guān)閉窗體,什么也不操作;caHide為不關(guān)閉窗體,但把它隱藏起來;caFree為關(guān)閉窗體,同時(shí)釋放內(nèi)存;caMinimize為最小化窗體,不關(guān)閉。所以我們也可以象下面這樣來釋放子窗體。

void _fastcall TForm2::FormClose(Tobject *Sender,TcloseAction &Action){  Action=caFree;}   9)問:為什么我們用Close()不能關(guān)閉我當(dāng)前活動的子窗體?  答:關(guān)閉當(dāng)前活動窗體,很多人會用如下的方法:
void _fastcall TForm1::Button2Click(Tobjcet *Sender){  ActiveMDIChild->Close();//注重這是在主窗體(或者說在其它窗體)中來關(guān)閉當(dāng)前活動的子窗體,這樣做不好,一般的關(guān)閉應(yīng)該象10)問中那樣來做}




更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或
  此時(shí)窗體并沒有關(guān)閉,而是最小化了,因此要在子窗體的OnClose事件中用如下代碼來關(guān)閉。
void _fastcall TForm2::FormClose(Tobject *Sender,TCloseAction &Action){  Action=caFree;}   這段程序不用多說了,上面都說過了。  這里有一點(diǎn)要說明一下,就是在調(diào)用Close()時(shí),會自動觸發(fā)OnClose事件,而由上我們知道窗體沒有關(guān)閉,而是最小化,說明在OnClose中Action的此時(shí)的值為caMinimize。所以我們要寫上面的方法來關(guān)閉。  10)問:Show()與ShowModal()有什么不同?  答:我們的程序中不可能就只有一個(gè)Form,比如,有Form1和Form2兩個(gè)窗口,我們在Form1中調(diào)用Form2應(yīng)該先在Unit1.cpp的開頭部分加入:
#include “Unit2.h”   在要調(diào)用的地方加入:
Form2->Show();//或是Form2->ShowModal();   兩者的區(qū)別在于若使用了ShowModal()則必須關(guān)閉Form2,才能處理其它窗口的內(nèi)容,而Show()則不用。當(dāng)然你可以直接在Form2直接創(chuàng)建一個(gè)Button1來關(guān)閉她,程序內(nèi)容如下:
void _fastcall TForm2::Button1Click(Tobject *Sender){ Close();}   在Close前,不需要加上Form2,因?yàn)檫@行程序就是在Form2上運(yùn)行的,所以默認(rèn)的父組件就是Form2。





更多文章 更多內(nèi)容請看C/C++技術(shù)專題專題,或

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 望城县| 鱼台县| 县级市| 广平县| 贵阳市| 南阳市| 城步| 焉耆| 共和县| 清远市| 芦山县| 东乌珠穆沁旗| 长汀县| 玉林市| 汤原县| 奉化市| 新巴尔虎右旗| 靖宇县| 巴彦县| 盐边县| 博野县| 无极县| 马山县| 灯塔市| 建水县| 汝城县| 昭苏县| 巢湖市| 开封市| 东山县| 南溪县| 宣汉县| 舟山市| 潢川县| 台山市| 兴隆县| 惠安县| 五华县| 搜索| 双江| 涟水县|