delphi中可以用is来判断某种类的类型,VC++ MFC中可以用IsKindof来判断,C++ Builder的语法是什么呢?

mailtocc 2005-07-05 01:07:05
RT
...全文
181 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maconel 2005-07-05
  • 打赏
  • 举报
回复
翻译成bcb的应该大概就是这么个样子吧。
void TForm1::frReport1BeforePrint(TStringList* Memo, TfrView* TfrView)
{
TfrRichView* RichView = dynamic_cast<TfrRichView*>(View));
if (RichView != NULL)
{
RichView->RichEdit->ReadOnly = true;
...
}
}

至于bcb里还有没有和楼主代码更相象的,就不知道了。
mailtocc 2005-07-05
  • 打赏
  • 举报
回复
之所以碰到这种情况是因为用fastreport的时候
其中有一个函数是这么些的
procedure TForm1.frReport1BeforePrint(Memo: TStringList; View: TfrView);
begin
if (View is TfrRichView) then
begin
(View as TfrRichView).RichEdit.ReadOnly := true;
.....
end;
end;

这个(View as TfrRichView)可以用c++的(TfrRichView*)View这样的强制转化实现。
楼上提到的classname事实上delphi也都有这样的语法,BCB中当然是可以这样写的。
不过View is TfrRichView这个就想不到了,之所以求助是因为我想这个毕竟都是borland的一套东西,
也许会有什么特定的语法,并不用使用ClassName或者dynamic_cast这样的方法。
Maconel 2005-07-05
  • 打赏
  • 举报
回复
bcb提供了一个ClassName,可以得到一个类的类名。比如
TButton* btn = new TButton(this);
if (AnsiString(btn->ClassName()) == "TButton")
{
ShowMessage("这是一个TButton");
}
当然,这只有属于vcl的类才有这个方法。

c++本身也提供了相应的功能:
TButton* btn = new TButton(this);
if (dynamic_cast<TButton*>(btn) != NULL)
{
ShowMessage("这是一个TButton");
}
delete btn;
btn = NULL;

dynamic_cast类似强制转换,可以将一个指针转换为你需要的指针类型,如果不能转换,则返回NULL。vc里也可以用这种方法。
ThinkX 2005-07-05
  • 打赏
  • 举报
回复
template <class DT, class BT>
bool _is(BT const * b)
{ return dynamic_cast<DT const *>(b) != NULL; }
FengSC 2005-07-05
  • 打赏
  • 举报
回复
delphi和VC不怎么懂,CB中的__classid是否符合你的要求?
软件功能: 可用于对VC++C++ BuilderDelphi、VB、C/C++、ASM、Java、C#、SQL 等程序源码进行详细的统计,可以准确的分析出程序代码行、注释行和空白行的行数。程序会自动根据你选择的文件选择相应的统计方式,并将所有文件的分析结果进行汇总,便于方便直观的对软件项目的代码量进行全面的评估。本软件是绿色软件,不需要安装,展开到任意目录,直接运行即可。 1、 支持VC++、VC.Net项目文件的统计方式。 2、 支持C++ Builder项目文件的统计方式。 3、 支持C/C++文件 .cpp 和 .h 的文件统计。 4、 支持同时多个文件的统计方式。 5、 支持同时多种文件的统计方式。 6、 支持VB项目文件和 .frm 和 .bas 文件的统计。 7、 支持汇编文件 .asm 和 .inc 的统计。 8、 支持Delphi项目文件 .dpr 和 .pas、.dfm 文件的统计。 9、 支持C#项目文件 .csproj 的直接统计及 .cs 文件的统计。 10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件的自动分析统计。 13、支持自定义一次选择多个目录的统计方式。 14、支持用户自定义文件统计及统计方法。 15、支持htm,excel,csv,txt等多种存盘文件。 16、支持统计结果的直接打印输出。 17、支持命令行方式的文件及目录统计方式。 18、支持资源管理器右键关联的文件及目录快捷统计方式。 19、支持GUI和命令行方式下使用自定义配置文件进行统计的方式。

13,873

社区成员

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

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