C++ Builder 初学问与答(二)

2016-02-19 19:13 18 1 收藏

下面是个简单易学的C++ Builder 初学问与答(二)教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

  上一篇: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++技术专题专题,或

来源:http://www.tulaoshi.com/n/20160219/1620346.html

延伸阅读
10.菜单组件 77)问:菜单是Windows常用的用户界面。对于一个能够实际应用的程序,菜单是必不可少的组成部分。C++Builder中是怎样实现菜单的? 答:C++Builder为我们提供了两种菜单组件:一种是主菜单组件MainMenu;另一种是弹出菜单PopMenu组件。 !-- frame contents -- !-- /frame contents -- 主菜单组件的作用是在窗...
3. 按钮类组件 21)问:在进行Windows程序界面设计中,经常会用到按钮,在C++Builder中,按钮一定是通过按钮组件来实现的吗? !-- frame contents -- !-- /frame contents -- 答:是的,并且C++Builder的按钮类组件十分丰富。BCB提供了两类按钮类组件:一类是执行类按钮,另一类是信息类按钮。所谓执行类按钮是指...
11.工具条组件 87)问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢? !-- frame contents -- !-- /frame contents -- 答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组都能够完成特定的工作。工具条上的按钮具有与位图按钮相似的特性——可以拥有多个位图,...
16.C/C++语言在CB中的一些特定用法 2)AnsiString是从Delphi中引进来的吗? !-- frame contents -- !-- /frame contents -- 答:CB的核心组件VCL是用Object Pascal语言写出的,所以CB的VCL组件的属性有很多都是使用long string,例如:Text、 Name、Caption等属性都是使用Object Pascal的long string。基于此关系,CB只...
第二部分:快速提高 !-- frame contents -- !-- /frame contents -- 好久以来有不少朋友问我,《C++ Builder问与答》为什么不继续写了?我也一直在思考还应该写下去不?CBX的推出,加之宝兰公布不在出新的CB版本,让我们这些一直喜爱CB的人不清楚下一个方向到底在何处?当然真的希望CB会继续,而不要倒下,但对于...

经验教程

91

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部