程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ Builder 初學問與答(二)

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

編輯:C++入門知識
  上一篇:C++ Builder 初學問與答(一)  2.文本輸入組件
  
11)問:假如要實現文本輸入,在C++Builder中應該怎麼辦? <!-- frame contents --> <!-- /frame contents -->   答:C++Builder常用文本輸入組件來實現,常用的文本輸入組件有Edit、MaskEdit 、Memo和RichEdit。他們的主要不同在於Edit和MaskEdit用於輸入單行文本,而Memo和RichEdit可以輸入多行文本。此外Label組件也可用來進行文本顯示。  Edit和MaskEdit是一個窗口控件,它可以獲得輸入焦點。當用戶需要輸入單行文本時,就應該使用編輯框。它通常與標簽組件一起使用。  12)問:編輯框(Edit)常用的屬性有哪幾個?  答:編輯框常用的幾個屬性如下:  Text屬性是一個String類型的數據,它決定了在編輯框中出現的文本字符串。在編程中,我們經常要通過text屬性獲取編輯框中的文本字符串  MaxLength是一個Integer類型的數據,它指定編輯框所能容納的最大字符數。缺省情況下為0,表示長度不限。   編輯框還可以用做口令輸入。具體方法是,把PassWordChar屬性設置為除#0之外的任何字符。這時,無論你在編輯框中輸入什麼字符,都只顯示PasswordChar包含的字符。我們經常把PasswordChar設置為星號*,當用戶輸入口令時只顯示星號。如輸入#0表示編輯框正常顯示。PasswordChar是一個字符類型的數據。  假如要限制用戶對編輯框寫的權利。可以使用屬性ReadOnly,當ReadOnly的值為True時只讀。  13)問:標簽控件(Label)起什麼作用?  答:標簽的常用屬性有Caption和FocusControl。  Caption屬性是字符串類型,用來指定標簽的標題,也就是標簽的顯示內容。  FocusControl屬性是窗口控件類,用來指定一個與標簽相連的窗口控件。從而答應這個控件使用快捷鍵來獲得輸入焦點。  標簽是一個典型的非窗口控件,它不能獲得輸入焦點,所以經常被用來給一些沒有Caption屬性的組件做標簽。標簽還能同時給這些組件提供快捷鍵的功能,答應用戶通過快捷鍵獲得輸入焦點。  14)問:那在Label中如何使用Caption與FocusControl呢?  答:下面舉個例子說吧(這個例子在第19問中會用到):  首先在輸入標題時需要指定一個快捷鍵,這可以用在一個字母前面加上一個連字符&來實現。單擊caption屬性輸入欄,輸入&N姓名,這裡字母N就被指定為快捷鍵,要注重的是中文是不能被指定為快捷鍵的,只有26個英文字母才可以。  然後,把標簽的FocusControl屬性與編輯框Edit1相連,選擇FocusControl屬性,從屬性值字段列舉的窗體上所有的窗口控件中選取Edit1。這樣當用戶按下Alt+N時,輸入焦點就會轉移到編輯框Edit1。
  
  
  

   更多內容請看C/C++技術專題專題,或   15)問:我碰到一些程序,當在編輯中輸入完文本後,按一下回車鍵,程序就開始執行了,C++Builder應該怎樣實現? <!-- frame contents --> <!-- /frame contents -->   答:當然可以。當我們按下回車鍵時,產生了OnKeyPress事件。所以假如要在程序中處理這種事件,這就要編寫OnKeyPress事件處理程序。  還有三種事件是編輯框常用的事件:OnChange事件、OnEnter事件和OnExit事。每當編輯框中的文本發生改變時都會觸發OnChange事件。當編輯框獲得輸入焦點時會觸發OnEnter事件,而失去焦點時會產生OnExit事件。  16)問:簡單說一下Memo組件的重要屬性?  答: Memo與Edit的屬性有很多相似的,下面只來說一下Memo組件的重要屬性。  Lines屬性是一個TStrings類的一個對象,它是由多個字符串組成的,每一個字符串就是Lines中的一個 元素。Memo組件的每一行文本都是Lines中的一個字符串。  在設計階段,假如要給Memo組件增加一些顯示內容,可以在對象編輯器中選擇屬性Lines,單擊Value列上的省略號按鈕,這時會打開一個字符串編輯窗口。  在這個編輯器中輸入文本。編輯器中顯示的所有內容都會出現在Memo組件中。  Memo組件屬性中:  Alignment
  
      用來確定Memo組件中顯示文本的對齊方式。
   
    WordWrap
     確定文本到達右邊界時是否自動換行
   
    WantReturn
     確定用戶是否可以在文本中插入回車符。
   
    WantTabs
     確定用戶是否可以在文本中插入Tab字符。
   
    屬性ScrollBar是一個常見的屬性,它確定著滾動組件滾動條的行為。ScrollBar有四種可能的取值:  SsNone
     表示沒有滾動條;
   
    ssHorizonal
     表示只有水平滾動條;
   
    ssVertical
     表示只有垂直條;
   
    SsBoth
     表示既有水平滾動條也有垂直滾動條。
  
  

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

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

   更多內容請看C/C++技術專題專題,或
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved