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

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

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

2019-11-17 05:05:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  上一篇:C++ Builder 初學(xué)問與答(一)  2.文本輸入組件
11)問:假如要實(shí)現(xiàn)文本輸入,在C++Builder中應(yīng)該怎么辦?
  答:C++Builder常用文本輸入組件來(lái)實(shí)現(xiàn),常用的文本輸入組件有Edit、MaskEdit 、Memo和RichEdit。他們的主要不同在于Edit和MaskEdit用于輸入單行文本,而Memo和RichEdit可以輸入多行文本。此外Label組件也可用來(lái)進(jìn)行文本顯示。  Edit和MaskEdit是一個(gè)窗口控件,它可以獲得輸入焦點(diǎn)。當(dāng)用戶需要輸入單行文本時(shí),就應(yīng)該使用編輯框。它通常與標(biāo)簽組件一起使用。  12)問:編輯框(Edit)常用的屬性有哪幾個(gè)?  答:編輯框常用的幾個(gè)屬性如下:  Text屬性是一個(gè)String類型的數(shù)據(jù),它決定了在編輯框中出現(xiàn)的文本字符串。在編程中,我們經(jīng)常要通過text屬性獲取編輯框中的文本字符串  MaxLength是一個(gè)Integer類型的數(shù)據(jù),它指定編輯框所能容納的最大字符數(shù)。缺省情況下為0,表示長(zhǎng)度不限。   編輯框還可以用做口令輸入。具體方法是,把PassWordChar屬性設(shè)置為除#0之外的任何字符。這時(shí),無(wú)論你在編輯框中輸入什么字符,都只顯示PasswordChar包含的字符。我們經(jīng)常把PasswordChar設(shè)置為星號(hào)*,當(dāng)用戶輸入口令時(shí)只顯示星號(hào)。如輸入#0表示編輯框正常顯示。PasswordChar是一個(gè)字符類型的數(shù)據(jù)。  假如要限制用戶對(duì)編輯框?qū)懙臋?quán)利。可以使用屬性ReadOnly,當(dāng)ReadOnly的值為True時(shí)只讀。  13)問:標(biāo)簽控件(Label)起什么作用?  答:標(biāo)簽的常用屬性有Caption和FocusControl。  Caption屬性是字符串類型,用來(lái)指定標(biāo)簽的標(biāo)題,也就是標(biāo)簽的顯示內(nèi)容。  FocusControl屬性是窗口控件類,用來(lái)指定一個(gè)與標(biāo)簽相連的窗口控件。從而答應(yīng)這個(gè)控件使用快捷鍵來(lái)獲得輸入焦點(diǎn)。  標(biāo)簽是一個(gè)典型的非窗口控件,它不能獲得輸入焦點(diǎn),所以經(jīng)常被用來(lái)給一些沒有Caption屬性的組件做標(biāo)簽。標(biāo)簽還能同時(shí)給這些組件提供快捷鍵的功能,答應(yīng)用戶通過快捷鍵獲得輸入焦點(diǎn)。  14)問:那在Label中如何使用Caption與FocusControl呢?  答:下面舉個(gè)例子說吧(這個(gè)例子在第19問中會(huì)用到):  首先在輸入標(biāo)題時(shí)需要指定一個(gè)快捷鍵,這可以用在一個(gè)字母前面加上一個(gè)連字符&來(lái)實(shí)現(xiàn)。單擊caption屬性輸入欄,輸入&N姓名,這里字母N就被指定為快捷鍵,要注重的是中文是不能被指定為快捷鍵的,只有26個(gè)英文字母才可以。  然后,把標(biāo)簽的FocusControl屬性與編輯框Edit1相連,選擇FocusControl屬性,從屬性值字段列舉的窗體上所有的窗口控件中選取Edit1。這樣當(dāng)用戶按下Alt+N時(shí),輸入焦點(diǎn)就會(huì)轉(zhuǎn)移到編輯框Edit1。




更多文章 更多內(nèi)容請(qǐng)看C/C++技術(shù)專題專題,或   15)問:我碰到一些程序,當(dāng)在編輯中輸入完文本后,按一下回車鍵,程序就開始執(zhí)行了,C++Builder應(yīng)該怎樣實(shí)現(xiàn)?
  答:當(dāng)然可以。當(dāng)我們按下回車鍵時(shí),產(chǎn)生了OnKeyPRess事件。所以假如要在程序中處理這種事件,這就要編寫OnKeyPress事件處理程序。  還有三種事件是編輯框常用的事件:OnChange事件、OnEnter事件和OnExit事。每當(dāng)編輯框中的文本發(fā)生改變時(shí)都會(huì)觸發(fā)OnChange事件。當(dāng)編輯框獲得輸入焦點(diǎn)時(shí)會(huì)觸發(fā)OnEnter事件,而失去焦點(diǎn)時(shí)會(huì)產(chǎn)生OnExit事件。  16)問:簡(jiǎn)單說一下Memo組件的重要屬性?  答: Memo與Edit的屬性有很多相似的,下面只來(lái)說一下Memo組件的重要屬性。  Lines屬性是一個(gè)TStrings類的一個(gè)對(duì)象,它是由多個(gè)字符串組成的,每一個(gè)字符串就是Lines中的一個(gè) 元素。Memo組件的每一行文本都是Lines中的一個(gè)字符串。  在設(shè)計(jì)階段,假如要給Memo組件增加一些顯示內(nèi)容,可以在對(duì)象編輯器中選擇屬性Lines,單擊Value列上的省略號(hào)按鈕,這時(shí)會(huì)打開一個(gè)字符串編輯窗口。  在這個(gè)編輯器中輸入文本。編輯器中顯示的所有內(nèi)容都會(huì)出現(xiàn)在Memo組件中。  Memo組件屬性中:  Alignment

   用來(lái)確定Memo組件中顯示文本的對(duì)齊方式。
 
  WordWrap
   確定文本到達(dá)右邊界時(shí)是否自動(dòng)換行
 
  WantReturn
   確定用戶是否可以在文本中插入回車符。
 
  WantTabs
   確定用戶是否可以在文本中插入Tab字符。
 
  屬性ScrollBar是一個(gè)常見的屬性,它確定著滾動(dòng)組件滾動(dòng)條的行為。ScrollBar有四種可能的取值:  SsNone
   表示沒有滾動(dòng)條;
 
  ssHorizonal
   表示只有水平滾動(dòng)條;
 
  ssVertical
   表示只有垂直條;
 
  SsBoth
   表示既有水平滾動(dòng)條也有垂直滾動(dòng)條。



更多文章 更多內(nèi)容請(qǐng)看C/C++技術(shù)專題專題,或
  當(dāng)顯示的內(nèi)容比較多時(shí),應(yīng)該選擇ssBoth,這樣才能夠使用戶看到所有的內(nèi)容。  17)問:要在程序運(yùn)行期間修改Memo組件的顯示內(nèi)容,應(yīng)該怎么辦?  答:這就需要使用TStrings類的某些屬性和方法。例如要給Memo組件增加一句話“我來(lái)了”,那么可以使用方法Add來(lái)完成。
Lines->Add(“我來(lái)了”);  要尋找Memo中的某一行,可以使用Lines->Strings[n]的形式,不過要注重Lines的字符串是從0開始的,所以在與Memo中的實(shí)際行號(hào)對(duì)應(yīng)時(shí),行號(hào)需要減一。  18)問:假如我要實(shí)現(xiàn)文本的剪切、復(fù)制和粘貼,應(yīng)該怎么辦?  答:Memo組件提供了三個(gè)用來(lái)完成剪切、復(fù)制和粘貼的方法。CutToClipboard用來(lái)把Memo組件中被選中的文本剪切到剪切板。  CopyToClipboard用來(lái)把Memo組件中被選中的文本復(fù)制到剪切板。  PasteFromClipboard用來(lái)把剪切板的內(nèi)容粘貼到Memo組件中光標(biāo)所在的位置。  19)問:前面講了幾個(gè)控件,能把他們綜合起來(lái)編制一個(gè)程序嗎?  答:好的,就利用剛才已經(jīng)放好的組件來(lái)編寫一個(gè)用戶姓名錄入和顯示的程序。  這個(gè)程序?qū)?shí)現(xiàn)當(dāng)在編輯框中輸入文本并按下Enter鍵后,文本就被增加到Memo組件中。因此需要給編輯框組件增加事件處理過程。  當(dāng)用戶按下Enter鍵時(shí)產(chǎn)生了OnKeyPress事件,所以應(yīng)該編寫這個(gè)事件的處理過程。  選中組件Edit1,  在對(duì)象觀察器上選擇Events標(biāo)簽頁(yè),  雙擊Edit1的事件OnKeyPress,C++Builder將自動(dòng)生成這個(gè)事件處理程序的代碼模板。在里面編寫如下代碼:
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key){AnsiString Temp("用戶姓名:");if((Key==0xD) && !Edit1->Text.IsEmpty())      Memo1->Lines->Add(Temp+Edit1->Text);}



更多文章 更多內(nèi)容請(qǐng)看C/C++技術(shù)專題專題,或
  或者寫成如下的格式更好理解,它們是一樣的。
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key){       AnsiString Temp="用戶姓名:";       if((Key==VK_RETURN) && Edit1->Text!="")      Memo1->Lines->Add(Temp+Edit1->Text);}  當(dāng)用戶輸入文本并且按下回車鍵后,第三條語(yǔ)句將Temp和用戶輸入的字符串合并后加到Memo控件文本的末尾。  現(xiàn)在,點(diǎn)擊速度條上Run的按鈕,運(yùn)行這個(gè)程序,在編輯框中輸入一個(gè)用戶姓名,然后按回車鍵。用戶的姓名就被自動(dòng)加到了文本框的末尾。  用鼠標(biāo)在Memo控件中點(diǎn)擊一下,將焦點(diǎn)移動(dòng)到它里面,然后按下Alt+N加速鍵,可以看出,標(biāo)簽控件將焦點(diǎn)移動(dòng)到了編輯框中。C++ Builder 初學(xué)問與答(二)  20)問:BCB中有一個(gè)和寫字板差不多的組件RichEdit,學(xué)習(xí)她主要注重那幾個(gè)屬性的呢?
   答:只要能夠把設(shè)置缺省字符格式DefAttributes、設(shè)置選中字符格式SelAttributes與設(shè)置段落Paragraph三個(gè)屬性把握好就差不多了,因?yàn)樗钠渌鼘傩耘cMemo差不多。    缺省字符格式DefAttributes、設(shè)置選中字符格式SelAttributes是TtextAttributes對(duì)象,它是用來(lái)控制字符格式的,它的Color、Height、Name、Size、Style、Pitch等性性和字體Tfont對(duì)象差不多,當(dāng)然還有一些象CharSet、ConsistentAttributes、Protected等一些不太常用的屬性。    設(shè)置段落Paragraph是TparaAttributes對(duì)象,用來(lái)設(shè)置段落的對(duì)齊Alignment、首行縮進(jìn)FirstIndent、左縮進(jìn)LeftIndent、右縮進(jìn)RightIndent、編號(hào)方式Numbering、制表位Tab等屬性。    段落的對(duì)齊Alignment的取值是taLeftJustify左對(duì)齊、taCenter居中和taRightJustify右對(duì)齊。    編號(hào)方式Numbering,用來(lái)設(shè)置編號(hào)方式,取nsNone表示沒有編號(hào),取nsBulet表示采用懸掛縮進(jìn)方式編號(hào)。    制表位Tab用來(lái)設(shè)置某個(gè)制表位所在的位置。其聲明為:_property int Tab[Byte Index]。第一個(gè)制表位為Tab[0],依次類推。  注:本文的所有例程都在BCB6、WINXP下編譯通過。  [待續(xù)]




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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 九龙坡区| 天全县| 登封市| 荥经县| 拜城县| 马公市| 渭南市| 平顺县| 光泽县| 繁峙县| 富裕县| 北流市| 曲沃县| 资源县| 屯昌县| 德保县| 辽源市| 大庆市| 中西区| 正安县| 衢州市| 云南省| 乾安县| 淮阳县| 凤冈县| 海口市| 都兰县| 宁波市| 开化县| 双城市| 平和县| 突泉县| 密云县| 越西县| 蒙城县| 武定县| 尼勒克县| 湛江市| 琼结县| 垫江县| 永胜县|