TComponent::Tag - C++ Builder

C++ Builder 参考手册 ➙ TComponent ➙ Tag


头文件:#include
命名空间:System::Classes
类:TComponent
访问权限:__published:
属性定义:

__property NativeInt Tag = { read = FTag, write = FTag, default = 0 };

System::Classes::TComponent::Tag 是 System::Classes::TComponent 的属性,储存一个 NativeInt 类型的数据,组件不会对这个数据做任何处理。

  • Tag 为 NativeInt 类型,即与指针位数相同的整数类型,可以用强制类型转换的方式储存指针;
  • Tag 可以随意储存 NativeInt 范围内的数据,组件不会对这个数据做任何处理。

例子:多个控件共用一个事件函数

  • 控件的事件一般都有一个参数是 TObject *Sender,这个指针指向产生事件的控件,可以通过这个指针来区分不同的控件。
  • 除了可以通过控件的 Name 属性区分不同的控件之外,还可以使用控件的 Tag 属性来区分,这个属性是整数,可以随意指定不同的整数值来区分不同的控件,整数可以方便的使用 switch 语句。

这个例子把 Button1、Button2、Button3 的 Tag 属性分别设为 101、102、103。

控件的 Tag 属性设置编号
三个按钮共用一个 OnClick 事件函数
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo1->Lines->Add(Sender->ClassName());

    TButton *lpButton = dynamic_cast(Sender);
    if(lpButton)
    {
        Memo1->Lines->Add(lpButton->Name);
        Memo1->Lines->Add(lpButton->Tag);

        switch(lpButton->Tag)
        {
            case 101: break; // Tag 编号为 101 的按钮
            case 102: break; // Tag 编号为 102 的按钮
            case 103: break; // Tag 编号为 103 的按钮
        }
    }
}

运行结果:点击按钮 Button2,可以得到控件的类名 "TButton",名称 "Button2" 和 Tag 编号 102。

点击按钮 Button2 的运行结果

参考:

  • System::Classes::TComponent::Name
  • System::Classes::TComponent
  • System::Classes::TPersistent
  • System::TObject
  • C++ Builder 整型变量和整型常量
  • VCL 类继承关系

C++ Builder 参考手册 ➙ TComponent ➙ Tag

你可能感兴趣的:(TComponent::Tag - C++ Builder)