BCB的牛人请进!!!!

seaman117 2003-08-21 11:17:33
下面这几个函数不太懂那位大虾解释解释!特别是
TComponent *component = dynamic_cast<TComponent *>(Sender)


TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
Caption = Application->Title;
SetPage(0);
}
///////////////////////////////////////////////////////
void __fastcall TForm1::OBClick(TObject *Sender)
{
TComponent *component = dynamic_cast<TComponent *>(Sender);
if (component == 0) return;
SetPage(component->Tag);
}
///////////////////////////////////////////////////////
void __fastcall TForm1::SetPage(int page)
{
if (page < 0 || page > PageControl1->PageCount - 1) return;
PageControl1->ActivePageIndex = page;
//Panel2->Caption = PageControl1->ActivePage->Caption;
}
...全文
30 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Behard 2003-08-22
  • 打赏
  • 举报
回复
TComponent *component = dynamic_cast<TComponent *>(Sender)

将 TObject 指针 Sender 强制转换为 TComponent 类型的
TComponent 类型或者继承于 TComponent 的才有 Tag
woainihaha 2003-08-22
  • 打赏
  • 举报
回复
//新建一个组件指针,并将Sender强制转换后赋值给新的组件指针.
TComponent *component = dynamic_cast<TComponent *>(Sender)


TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
//将当前窗体的标题设置为程序标题
Caption = Application->Title;
//切换到0页
SetPage(0);
}
///////////////////////////////////////////////////////
void __fastcall TForm1::OBClick(TObject *Sender)
{
//新建一个组件指针,并将Sender强制转换后赋值给新的组件指针.
TComponent *component = dynamic_cast<TComponent *>(Sender);
//如果为无效组件,返回
if (component == 0) return;
//将页面切换到组件的标志符所设值处.这里Tag应该应该是先设置好的
SetPage(component->Tag);
}
///////////////////////////////////////////////////////
void __fastcall TForm1::SetPage(int page)
{
//页面越界
if (page < 0 || page > PageControl1->PageCount - 1) return;
//激活所设置的页面
PageControl1->ActivePageIndex = page;
//将Panel2的标题设置为活动页面的标题
//Panel2->Caption = PageControl1->ActivePage->Caption;
}

windlyzhang 2003-08-22
  • 打赏
  • 举报
回复


dynamic_cast<class T >(),
是用于有继承关系的变量的转换,
当转化成功,返回指向转换后的对象指针,
转换不成功,返回0。

myredsun 2003-08-22
  • 打赏
  • 举报
回复
dynamic_cast表明动态类型转换
pp616 2003-08-22
  • 打赏
  • 举报
回复
dynamic_cast<Class *>
是比较安装的转换。
如果确定没问题。没必要用
直接TComponent *component = (TComponent *)Sender;
就好了。
domustdo 2003-08-22
  • 打赏
  • 举报
回复
tag没有特定的含义,可以根据需要设定其值。
bluecyclone 2003-08-21
  • 打赏
  • 举报
回复
帮你顶!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧