社区
C++ Builder
帖子详情
dynamic_cast
详解
gfh_79_0
2003-04-01 01:14:08
dynamic_cast 关键字我看帮助没有看太懂,各位帮帮忙详细解释一下它的作用、用法。
具体程序中什么时候会用到。
...全文
106
8
打赏
收藏
dynamic_cast<TwinControl>详解
dynamic_cast 关键字我看帮助没有看太懂,各位帮帮忙详细解释一下它的作用、用法。 具体程序中什么时候会用到。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gfh_79_0
2003-04-01
打赏
举报
回复
谢谢各位,给分!平均分配。
fansses
2003-04-01
打赏
举报
回复
kbs kxq
啊哟,打了半天,掉了个;
class B:public A{};
fansses
2003-04-01
打赏
举报
回复
#include <iostream.h>
#include <typeinfo.h>
class A
{
virtual void wc(void){}
};
class B:public A
{
}
void main(void)
{
try
{
B a,*b;
A *c=&a;
if ((b=dynamic_cast<B *>(c))!=0)
{
cout<<typeid(b).name()<<endl;
}
else throw Bad_cast();
catch(Bad_cast)
{
cout<<"failed"<<endl;
}
}
TopCat
2003-04-01
打赏
举报
回复
dynamic_cast用于在继承体系中“向下转型”(就是将一个父类的指针转为一个派生类指针)。主要是在使用多型的时候,由于某种特殊的需要,要用到派生类的特殊接口,这时就需要用到这个关键字。
在BCB里,典型的用法是在事件处理中。在事件处理中,触发这个事件的控件自身,将会以一个TObject指针的形式传入函数中,比如一个按钮的点击事件:TForm1::Button1Click(TObject *Sender);那么我们需要用到“触发这个点击事件的那个按钮”的时候,我们就需要用到这个Sender参数。但是这个参数是一个Sender是一个TObect指针,我们没办法对他调用Button专有的函数。这时我们可以用TButton *btn = dynamic_cast<TButton *>(Sender);来转换,转换之后就可以使用TButton的方法了。
dynamic_cast转换只能在有继承体系的类别中转型。比如上例中,实际的Sender是一个TEdit,因为TEdit和TButton没有继承关系,这样的转换就会失败,这时,btn将是一个NULL值。这样就提高了转换的安全性。
更详细的请参考Effective C++里的相关讨论。
lifuming
2003-04-01
打赏
举报
回复
类似于JAVA中的类转换,给你一个例子看看:
for(int i=0;i<mainForm->MDIChildCount;i++)
{
if(dynamic_cast<TdesignForm*>(MDIChildren[i])->Caption==StatusBar->Panels->Items[2]->Text)
{
TBarCodeCtrl *bar=new TBarCodeCtrl(dynamic_cast<TdesignForm*>(MDIChildren[i]));
bar->Parent=dynamic_cast<TdesignForm*>(MDIChildren[i])->mainPanel;
bar->Visible=true;
bar->Top=10;
bar->Left=10;
};
};
fansses
2003-04-01
打赏
举报
回复
看到 版主 ,,,,,UP
fansses
2003-04-01
打赏
举报
回复
用于执行向下转换和在继承层次之间的转换,,,,
e.g. 类B继承于类A ,,那么 类B的指针可以转换为 类A的指针。
从一个基类到派生类的转换,基类必须包含至少一个 虚函数,,,(多态)
Wingsun
2003-04-01
打赏
举报
回复
就是进行数据类型转化的,只不过这是在运行时进行的,而且是属于安全类型的转化。也就是说在转换的过程中会检查是否可以正确的转换到你要的目的类型,对于指针类型如果不成功则会返回一个NULL的指针表示失败。对于引用类型如果不成功则会抛出一个bad_cast异常。
Delphi7.完美经典.part1
中文名称:Delphi 7完美经典
http://www.huachu.com.cn/photo/2003/BB04672130c.jpg
出版社 : 中国铁道出版社
作者 : 江义华/
出版日期: 2003年7月
综合评价:
国标编号:ISBN 7-113-05241-X/TP.931
条形码 :9787113052416
字数 :989千字
印张 :41.75
印数 :1-5000
页数 :654
开本 :787*1092 1/16
版别版次:2003年7月第一版第一次印刷
内容简介:
本书特色
层次清晰、语言通俗、语法简练、以实用性为第一位。
深入剖析了Object Pascal程序语言,包括指针、数据结构以及有关Override 和Overload函数的语法等。
对面向对象的观点详述了Delphi VCL组件的属性、方法及事件,且在数据库设计方面辅以应用的范例。
实例配有光盘,快速引导您踏入Delphi程序开发领域。
适合想要深入了解Delphi程序设计的专业设计师,对一开始就想打好Delphi程序设计基础的初学者也非常适用。
目录 :
第0章 认识Delphi
0-1 前言
0-2 Delphi简介
0-3 进入Delphi7
0-4 退出Delphi
第1章 常用的窗口工具
1-1 窗体(Form)
1-2 代码编辑器(Code Editor)
1-3 代码浏览器(Code Explorer)
1-4 组件面板(Componet Palette)
1-5 对象检视器(Object Inspector)
1-6 快捷工具栏(Speed Menu)
1-7 项目管理器(Project Manager)
1-8 桌面工具栏(Desktops Tollbar)
1-9 图像编辑器(Image Editor)
1-10 对象浏览器(Object TreeView)
1-11 关联选项卡(Digram Page)
第2章 常用的菜单
2-1 File菜单
2-2 Edit菜单
2-3 Search菜单
2-4 View菜单
2-5 Project菜单
2-6 Run菜单
2-7 Tools菜单
2-8
Win
dows菜单
第3章 集成开发环境的改变
3-1 Delphi集成开民环境介绍
3-2 操作菜单方面的改进
3-2-1 外面方面的改变
3-2-2 内容方面的改变
3-3 对象检视器方面的改进
3-4 组件面板的改进
3-5 代码编辑器的改进
3-6 设计陈列室的改进
3-7 编译信息的显示
3-8 调试器方面的改进
3-8-1 Watch List改进
3-8-2 Debugger选项的改进
3-8-3 Run Parameters对话框的改进
第4章 Delphi Object Pascal的初步印象
4-1 面向对象程序概论
4-1-1 类
4-1-2 对象
4-1-3 继承
4-1-4 封装
4-1-5 信息
4-2 Delphi项目结构及窗体的建立
4-2-1 GUI模式的项目
4-2-2 Console模式的项目
4-3 Object Pascal程序结构
4-3-1 项目程序(Program)的结构
4-3-2 单元程序(Unit)的结构
4-4 如何完成一个简单的窗体程序
第5章 简单的常用指令介绍
5-1 TLabel类对象
5-1-1 Caption属性
5-2 TButton类对象
5-2-1 Caption属笥
5-2-2 OnClick事件
5-3 TEdit类对象
5-4 TCanvas类对象
5-5 Showmessage函数
5-6 InputBox函数
5-7 MessageDlg函灵敏
第6章 Delphi与Object Pascal程序的基本概念
6-1 Object Pascal Program程序结构与Delphi项目结构的关系
6-1-1 标头(Heading)
6-1-2 Uses子句
6-1-3 编译指令(Compiler directive)
6-1-4 源代码区(begin end)
6-2 Unit程序结构与窗体的关系
6-2-1 Unit代码结构
6-2-2 语句(Statement)
6-2-3 Unit间Use的状况
6-3 数据类型与定义变量
6-3-1 数据类型概论
6-3-2 不需要使用type声明的数据类型
6-3-3 必须使用type声明的数据类型
6-3-4 定义变量
6-3-5 变量的作用域
6-3-6 定义常量
6-3-7 变量的类型转换(Type
cas
t)
6-4 Object Pascal的运算符(Operator)
6-4-1 设置运算符(assign Operator)
6-4-2 算数运算符(Arithmetic Operator)
6-4-3 关系运算符(Relational Operator)
6-4-4 布尔运算符
6-4-5 集合运算符
6-4-6 字符串运算符
6-4-7 位逻辑运算符
6-4-8 运算符优先级
6-5 流程控制
6-5-1 语句的基本概念
6-5-2 表达式语句(Expression-Statement)
6-5-3 流程控制语句
6-5-4 可视化程序与嵌套程序
6-6 数组与指针
6-6-1 数组类型
6-6-2 指针类型
6-6-3 浅谈指针与数据结构
6-7 程序与函数(Procedures and Functions)
6-7-1 函数的意义与优点
6-7-2 函数的分类与效用
6-7-3 自定义函数使用方法概述
6-7-4 函数的声明、定义及其实现
6-7-5 参数传递方式
6-7-6 声明修饰字
6-7-7 常用的内建函数
第7章 Object Pascal面向对象设计
7-1 类和对象
7-1-1 类(Class)与对象(Object)的基本概念
7-1-2 对象的构造与类的关系
7-2 类的声明与对象的定义
7-2-1 类的声明与对象的实现
7-2-2 对象的构造与析构
7-3 类成员的封装等级与可见度
7-3-1 封装的意义
7-3-2 Object Pascal类成员的封装等级
7-3-3 以实例说明类成员封装等级的可见度
7-3-4 开头不加保留字的类成员
7-3-5 成员封装等级的变更法则
7-4 类成员的定义与实现
7-4-1 字段(Field)与对象引用(Object Reference)的实现
7-4-2 方法(Method)
7-4-3 属性(Property)
7-5 类的继承
7-5-1 继承的意义与优点
7-5-2 子类成员的存在方式
7-6 成员函数的Override及 Overload
7-6-1 Override 适用的情况——Virtual与
Dynamic
的成员函数
7-6-2 Override成员函数的定义语法
7-6-3 Virtual成员函数与动态绑定(
Dynamic
Binding)
7-6-4 覆盖(Overriding)与隐藏(Hiding)的差别
7-6-5 Override与OVerload的差别
7-7 Abstract成员函数与多态(Polymorphic)
7-7-1 一般纯虚函数的多态实现概念
7-7-2 纯虚函数的定义语法及实现
7-8 Self、AS、is、Sender、Parent、owner、inerited
7-8-1 Self变量
7-8-2 AS运算符
7-8-3 is运算符
7-8-4 Sender
7-8-5 Parent
7-8-6 owner
7-8-7 inerited保留字
7-9 静态成员方法——Class Methods
第8章 异常处理
8-1 异常处理存在的目的
8-2 Object Pascal异常的种类
8-2-1 Delphi内建的异常类
8-2-2 自定义异常类
8-3 触发异常的方法
8-3-1 由程序系统自动触发
8-3-2 使用Raise指令触发
8-4 处理异常情况
8-4-1 try…finally…end语法说明
8-4-2 ty…except…end语法说明
第9章 Delphi用户接口设计详述
9-1 基本概念
9-2 TForm的属性
9-2-1 由TComponent继承而来的属性
9-2-2 由T
Control
继承而来的属性
9-2-3 由T
Win
Control
继承而来的属性
9-2-4 由TScrolling
Win
d
Control
继承而来的属性
9-2-5 由TCustomForm继承而来的属性
9-3 TForm的方法
9-3-1 由TObject继承而来的属性
9-3-2 由TPersistent继承而来的属性
9-3-3 由TComponent继承而来的属性
9-3-4 由T
Control
继承而来的属性
9-3-5 由
Win
Control
继承而来的属性
9-3-6 由TScrolling
Win
Control
继承而来的属性
9-3-7 由TCustomForm继承而来的属性
9-3-8 由TForm继承而来的属性
9-4 TForm的事件
9-4-1 由T
Control
继承而来的属性
9-4-2 由T
Win
Control
继承而来的属性
9-4-3 由TCustomForm继承而来的属性
9-5 TLabel的类成员
9-5-1 TLabel的属性
9-5-2 TLabel的方法
第10章 标准组件介绍及实作范例
10-1 Frames组件
10-2 MainMenu组件
10-3 PopuMenu组件
10-4 Label组件
10-5 Edit组件
10-6 Memo组件
10-7 Button组件
10-8 CheckBox组件
10-9 RadioButton组件
10-10 ListBox组件
10-11 ComboBox组件
10-12 ScrollBar组件
10-13 GroupBox组件
10-14 RadioGroup组件
10-15 Panel组件
10-16 ActionList组件
第11章 TApplication与TScreen类介绍及应用
11-1 TApplication类
11-1-1 TApplication类对象常用的属性
11-1-2 TApplication类对象常用的方法
11-2 TScreen类
第12章 高级组件介绍
12-1 Additional选项卡中的常用组件
12-1-1 TBitBtn组件
12-1-2 TMaskEdit组件
12-1-3 TImage组件
12-1-4 TShape组件
12-2
Win
32选项卡中的常用组件
12-2-1 TPage
Control
组件
12-2-2 TImageList组件
12-2-3 TRichEdit组件
12-2-4 TDateTimePicker组件
12-2-5 TStatusBar组件
12-3 System选项卡中的常用组件
12-3-1 TTimer组件
12-4 Dialogs选项卡中的常用组件
12-4-1 TOpenDialog组件
12-4-2 FTontDialog组件
12-4-3 TColorDialog组件
第13章 封装Delphi7开发的应用程序
13-1 安装Borland的InstallShiled程序
13-2 利用InstallShield封装 Delphi7开发的程序
13-2-1 InstallShield环境界面简介
13-2-2 封装一个简单的Delphi项目
第14章 数据库概念及SQL指令介绍
14-1 数据库基本概念
14-1-1 数据库结构
14-1-2 开放数据库连接协议(ODBC)
14-1-3 SQL Explorer
14-2 结构化查询语言SQL
14-2-1 CREATE语句
14-2-2 ALTER TABLE语句
14-2-3 DROP语句
14-2-4 SELECT语句
14-2-5 INSERT、UPDATE语句
14-2-6 DELETE语句
14-3 SQL指令高级使用
14-3-1 UNION运算
14-3-2 JOIN运算
14-3-3 特殊运算符
14-3-4 子查询(Sub Query)
第15章 Delphi数据库程序基础
15-1 Delphi各种数据库连接设置
15-1-1 建立dBase、Paradox连接
15-1-2 建立Access连接
15-1-3 建立MSSQL连接
15-1-4 建立MySQL连接
15-2 Delphi的Database Desktop使用方法
15-2-1 字段定义
15-2-2 输入数据
15-2-3 设置BDE数据库别名与连接数据库
第16章 Delphi数据库程序设计——使用BDE组件
16-1 TDataSet组件
16-1-1 TDataSet组件常用的属性
16-1-2 TDataSet组件常用的方法
16-1-3 TDataSet组件常用的事件
16-2 TTable组件
16-2-1 TTable组件常用的属性
16-2-2 TTable组件常用的方法
16-3 TQuery组件
16-3-1 TQuery组件常用的属性
16-3-2 TQuery组件常用的方法
16-4 TDataModule组件
16-5 TDatabase组件
16-5-1 TDatabase组件常用的属性
16-5-2 TDatabase组件常用的方法
16-5-3 TDatabase组件常用的事件
16-6 综合范例
16-6-1 员工管理系统——使用TTable组件
16-6-2 员工管理系统——使用TQuery组件
16-6-3 订单管理系统——使用TTable组件
16-6-4 订单系统——使用TQuery组件
第17章 数据程序设计——使用Delphi组件
17-1 TADOConnection组件
17-1-1 TADOConnection组件常用的属性
17-1-2 TADOConnection组件常用的方法
17-1-3 TADOConnection组件常用的事件
17-2 TADOCommand组件
17-2-1 TADOCommand组件常用的属性
17-2-2 TADOCommand组件常用的方法
17-3 TADODataSet组件
17-3-1 TADODataSet组件常用的属性
17-3-2 TADODataSet组件常用的方法
17-3-3 TADODataSet组件常用的事件
17-4 TADOTable组件
17-4-1 TADOTable组件常用的属性
17-4-2 TADOTable组件常用的方法
17-5 TADOQuery组件
17-6 综合范例
17-6-1 客户管理系统——使用TADODataSet组件
17-6-2 客户管理系统——使用TADOTable组件
17-6-3 客户管理系统——使用TADOQuery组件
17-6-4 订单管理系统——使用TADOTable组件
17-6-5 订单系统——使用TADOQuery组件
第18章 数据感知组件
18-1 TDBText组件
18-2 TDBEdit组件
18-3 TDBMemo组件
18-4 TDBImage组件
18-5 TDBListBox组件
18-6 TDBComboBox组件
18-7 TDBLookupListBox与TDBLookupComboBox组件
18-8 TDBNavigator组件
18-9 TDBGrid组件
第19章 设计Delphi数据库报表
19-1 设计报表的基本观念
19-1-1 报表的组成
19-1-2 报表的主体组件——TquickRep
19-1-3 建立第一个报表程序
19-2 QuickReport中可打印出组件
19-2-1 TQR系列组件介绍
19-2-2 TQRDB系列组件介绍
19-3 综合范例
19-3-1 一般表达报表范例
19-3-2 标签式报表范例
19-3-3 主/明细报表范例
19-3-4 一般表达式附图片报表范例
19-3-5 分组式报表范例——打印多色报表
19-3-6 报表输出及输出范例
附录 Kylix程序安装及转换
http://lib.verycd.com/2005/02/07/0000038314.html
Delphi7保存屏幕为图片
Delphi7保存屏幕为图片,以下是主程序: function TForm1.Get
Control
sImage(ACtrl: T
Win
Control
): TBitmap; var Ofs: Integer; begin Result := TBitmap.Create; try Result.Width := ACtrl.ClientWidth; Result.Height := ACtrl.ClientHeight; Result.Canvas.Brush := ACtrl.Brush; Result.Canvas.FillRect(ACtrl.ClientRect); Result.Canvas.Lock; try if Get
Win
dowLong(ACtrl.Handle, GWL_STYLE) and WS_BORDER 0 then Ofs := -1 // Don't draw form border else Ofs := 0; // There is no border ACtrl.PaintTo(Result.Canvas.Handle, Ofs, Ofs); finally Result.Canvas.Unlock; end; except Result.Free; raise; end; end;
Delphi6 变形组件123 6.0
名称:变形组件123 大小:
1,587,810字节(transmogrify.rar)
版本:6.0 使用环境:
Win
2000 + Delphi6 功能: 1.制作圆角边框的窗口 2.能够改变背景图和边框的滚动条、Button、Edit、ComboBox、Page
Control
... 3.改变delphi6中控件的外形,你可以找到多少图片,就能够把 T
Win
Control
变得多么不可思议 4.在delphi6设计状态下制作流程图 作者:金海龙(天主教) 性质:共享(666¥) 发布日期:2008年7月 Google搜索:变形组件123 6.0 国际Download:http://www.rayfile.com/files/633692cc-c9e2-11de-bd82-0014221b798a/
[Linker Error] Unresolved external 问题的解决方法
BCB里遇到过的问题 [Linker Error] Unresolved external 'mysql_init' referenced from C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR.LXSERVER\桌面\TESTINSERTMYSQL\UNIT1.OBJ 的解决方案
跨进程访问VCL的一个用例(Delphi6、TurboDelphi测试通过)
大概的步骤是: 1、创建一个hook,以便跨进程访问内存空间; 2、自定义Find
Control
方法,按目标窗体所在线程组装参数; 3、获得T
Win
Control
对象; 4、通过WM_COPYDATA消息返回查询内容。
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章