c++ Builder 初学问与答(十七)

原创 2004年07月17日 22:22:00
 

(版权要求:本文仅授权CSDN使用,其他个人与网站不得转载、摘录,若有特别需求可与作者联系)

7)Set类如何用?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

答:严格来说,CB的集合(Set)并不是一个类,而是一个类模板(Class Template)。它用来实现集合这个抽象数据类型。

使用它可以定义一个实际的集合类型,它的一般声明模式是这样的:

typedef Set<type,minval,maxval>ClassName;

其中type用来指定集合元素的类型;minval指定集合元素的最小值;maxval指定集合元素的最大值。

举个例子来说,若是我们定义一个以TupperSet为名的集合类,这个集合类的可能元素为26个大写字母,我们可以这样定义:

typedef Set<char,’A’,’Z’>TupperSet;

应用时我们可以使用这个集合类声明一个具体的集合对象,如:

TupperSet UpperSet;

 

8)能不能告诉我一下Set类有哪些常见的使用方法或操作符?

答:当然可以了,以下是它的一些常见操作符和方法:

Clear方法:清除集合对象内的所有元素,使集合成为空集;

Contains方法:查询集合中是否包含指定的元素,其声明为:

bool _fastcall Contains(const T el)const;

operator-:两个集合进行求差运算,结果集合包含两个集合中不相同的元素;

operator*:求两个集合的交集;

operator+:求两个集合的并集;

operator<<:添加一个元素到指定集合;

operator>>:从集合中删除一个指定元素。

其实Set类的应该比较广泛,比如判断我们是否按下鼠标左键,可以用如下的语句:

if(Shift.Contains(ssLeft))

 

9)听说在CB中有一个可以定时触发的组件,能否介绍一下它的属性和事件吗?

答:你说的是Timer组件,它位于组件栏的System组件页中。使用它并不难,因为他的属性、事件特别少:

Enabled属性:布尔类型。缺省时为true,这时定时器将经过一段时间就触发OnTimer事件。在这个属性从false变为true时,时钟将重新开始计时。

Interval属性:这个属性用来设置每隔多长时间就触发一次OnTimer事件,以毫秒为单位。缺省为1000毫秒。

OnTimer事件:这个事件在Enabled属性设置为true时,每隔Interval属性指定的时间触发一次。

 

10)原来Timer组件如此简单,但我还有些不懂为什么说它是一个可找替循环语句,能否举一个例子说明下OnTimer事件?

答:它不能取替循环语句的,当然在特定条件下,他比循环语句更有效,尤其是在涉及到按时循环时。在我编写的春辉网络电视里有一段OnTimer事件代码,可供大家参考:

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

        String s1="春辉(CH)软件   作者:董维春  王岩   CH工作室";

        if(i<=54)

        {

          Label1->Caption=s1.SubString(i,18);

          i+=2;

        }

        else

        {

        i=1;

        }

}

(未完待续)

 

C++ Builder初学问与答

一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另...
  • wozengcong
  • wozengcong
  • 2014年01月04日 16:44
  • 1539

C++ Builder初学问与答1

一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另...
  • cyp0207
  • cyp0207
  • 2007年11月28日 11:45
  • 309

C++ Builder 初学问与答 (十一)

11.工具条组件  87)问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢? 答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:53
  • 824

C++ Builder初学问与答(十三)

 第二部分:快速提高  好久以来有不少朋友问我,《C++  Builder问与答》为什么不继续写了?我也一直在思考还应该写下去不?CBX的推出,加之宝兰宣布不在出新的CB版本,让我们这些一直喜爱CB的...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:54
  • 662

C++ Builder初学问与答11

11.工具条组件 87) 问:工具条是Windows编程经常要用的, C++Builder能不能实现这个功能呢? 答:当然可以,工具条是由许多具有图形的按钮组成的,这些按钮被分隔符分隔成许多组,每个组...
  • cyp0207
  • cyp0207
  • 2007年11月28日 11:52
  • 357

C++ Builder 初学问与答(十五)

(7)在C++Builder集成开发环境中,还有Component菜单。在组件菜单下的菜单命令是有关建立、安装、重建组件的菜单项。其中: “New Component”菜单项打开组件向导建立新组件。...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:55
  • 813

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

 6.图形列表组件TreeView  45)问:有时侯,我希望实现类似资源管理器对文件夹管理的显示方式,和对文件的管理显示方式,在C++Builder中应该怎么办? 答:在C++Builder中可以直...
  • chinahuyong
  • chinahuyong
  • 2009年04月03日 12:51
  • 646

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

38)问:事件OnChange和OnScorll都可以描述滚动条的滚动事件,他们有什么区别吗?答:事件OnChange和OnScorll是有区别的。只要属性Position的值发生改变,那么无论这个值...
  • ch_builder
  • ch_builder
  • 2003年07月17日 07:51
  • 1524

C++ Builder初学问与答4

4.列表类组件 31) 问:当我需要使用多个选项的时候,使用单选按钮或复选框来进行选择不是很恰当,因为在窗体上放置大量的按钮既不利于布局的美观,又会消耗大量的系统资源,C++Builder有什么解决办...
  • cyp0207
  • cyp0207
  • 2007年11月28日 11:47
  • 307

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

10.菜单组件77)问:菜单是Windows常用的用户界面。对于一个能够实际应用的程序,菜单是必不可少的组成部分。C++Builder中是怎样实现菜单的? 答:C++Builder为我们提供了两种菜单...
  • ch_builder
  • ch_builder
  • 2003年08月25日 09:12
  • 1471
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ Builder 初学问与答(十七)
举报原因:
原因补充:

(最多只允许输入30个字)