C++Builder中集合的处理
首先看一看窗口的MouseDown事件的声明void __fastcall TForm1::FormMouseDown(TObject *Sender,TMouseButton Button,TShiftState Shift,int X,int Y)w%bp4\x;_
其中的Shift参数被说明为TShiftState类型::h$i4KX/l.h*Q
enum Classes_1{ssShift,ssAlt,ssCtrl,ssRight,ssMiddle,ssDouble};\+A,}"f8X
typedef SetTShiftSTate; @? J4Y6DW0_9?
TShiftSTate是一个集合(Set),也就是说,TShiftState是Sysdefs.h中Set模板类的
一个实例。如果想要知道某个元素是不是集合中的一个成员,可以使用Contains方法:&msz xdF!au
ShiftKey->Checked=Shift.Contains(ssShift);
ControlKey->Checked=Shift.Contains(ssCtrl);
LeftButton->Checked=Shift.Contains(ssLeft);
RightButton->Checked=Shift.Contains(ssRight);6Kk(D e n*H
这段代码询问元素ssRight是不是属于Shift集合。如果是的话,那么代码就设置为TCheckBox
组件的状态。
下面是在运行状态下说明一个集合的方法:
TShiftState LeftShift;(s+e4|?(X}x} @
LeftShift!_ ]O-?sSnc^
#pragma hdrstop.uL_ES&T
#include "Main.h"N*a:IO&s%N
#pragma resource "*.dfm"
TForm1 *Form1;7JnrUWu
7|]K5`#`,Ie&ehuu
__fastcall TForm1::TForm1(TComponent* Owner)]'{_[IR
: TForm(Owner)
{?Gf)C*q Xg
}3EZK {$e#AFI
void TForm1::CheckState(TShiftState Shift)4AhZV7G/ep
{