C++ 如何用C++;建筑商XE10(西雅图)和叮当声
在我的应用程序中,我需要捕获TDBGrid组件的OnDrawCell事件(默认情况下不可用/可见)。 因此,我创建了一个新组件(名为TDBGridHack)作为TDBGrid的后代 头文件:C++ 如何用C++;建筑商XE10(西雅图)和叮当声,c++,clang,c++builder,vcl,C++,Clang,C++builder,Vcl,在我的应用程序中,我需要捕获TDBGrid组件的OnDrawCell事件(默认情况下不可用/可见)。 因此,我创建了一个新组件(名为TDBGridHack)作为TDBGrid的后代 头文件: #ifndef DBGridHackH #define DBGridHackH #include <System.SysUtils.hpp> #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #inclu
#ifndef DBGridHackH
#define DBGridHackH
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.DBGrids.hpp>
#include <Vcl.Grids.hpp>
class PACKAGE TDBGridHack : public TDBGrid
{
private:
Vcl::Grids::TDrawCellEvent FOnDrawCell;
public:
__fastcall TDBGridHack(TComponent* Owner);
__published:
__property Vcl::Grids::TDrawCellEvent OnDrawCell = {read=FOnDrawCell, write=FOnDrawCell};
virtual void __fastcall DrawCell(int ACol, int ARow, const TRect& ARect, TGridDrawState AState);
};
#endif
到目前为止-还不错,但是:
我计划使用该组件的真正的最终应用程序是使用clang编译器构建的
将测试应用程序的编译器更改为CLANG(32位)会引发链接器错误:“未解析的外部\uu InitExceptBlockLDTC”
因此,我将BPL的编译器设置也更改为CLANG(32位)。
-安装组件成功了,但组件本身从调色板中显示出来
然后我添加了“-tP”选项,如下所述:
结果:
- 组件返回到调色板
- 也可以将网格放在TestApplications表单上
void __fastcall TForm1::DBGridHack1DrawCell(Variant , int , int , Variant &, Variant )
{
}
现在我有点困了。
创建用于CLANG编译器的VCL组件的正确方法是什么
致意
赫尔维格
<我的设置是:在MS Windows 10上的AppCad Eng+C++ Builder XE10西雅图(没有更新订阅包)。在代码< >代码> tdGrase.OnDRAPENCINCELL 和
\uuu InitExceptBlockLDTC
错误,当启用运行时包时,clang编译器会出现问题,因此您通常必须将其关闭,当您创建自己的包希望与调用应用程序共享RTL包时,这不是一件好事。在编写自定义包时,您可能必须坚持使用经典的32位编译器,甚至切换到Delphi。我需要在标题行中进行修改(例如绘制图标)。恐怕这不能由OnDrawDataCell完成。如果我有德尔菲个性,我会这样做,但我只有C++ Builder。我得到的上一个Delphi许可版本是XE2…RTL/VCL是用Delphi编写的,所以C++Builder包括一个Delphi编译器,即使您没有Delphi的个性。你可以在C++项目中使用<代码> .pas<代码>文件。或者使用命令行Delphi编译器。东京C++ +2.2.1仍然存在同样的问题,因此我们不能使用Clang,因为它不支持自定义包。
void __fastcall TForm1::DBGridHack1DrawCell(TObject *Sender, int ACol, int ARow,
const TRect &Rect, TGridDrawState State)
{
// do something here....
}
void __fastcall TForm1::DBGridHack1DrawCell(Variant , int , int , Variant &, Variant )
{
}