未绘制自定义 FireMonkey 组件
Custom FireMonkey component does not get drawn
在 C++Builder 10.2 Tokyo 中工作,我试图在 运行 时间以编程方式将自定义组件添加到 FireMonkey TForm
。
自定义组件未作为包安装并在 IDE 中注册(因为这最终使项目过于复杂),而只是 TPanel
的子类。
但是,当我 运行 应用程序时,组件及其子组件不会被绘制。我已经在 Windows 和 Android 上对此进行了测试,并尝试了多项修改,例如明确设置宽度和高度。
我该如何解决这个问题?
下面是我的代码的相关部分:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm3D(Owner)
{
mkView = new MKView(this);
mkView->Align = TAlignLayout::Client;
mkView->Enabled = true;
mkView->Visible = true;
mkView->Parent = this;
}
__fastcall MKView::MKView(TComponent *Owner)
: TPanel(Owner)
{
this->OnMouseDown = MKView_OnMouseDown;
TLabel1 = new TLabel(this);
TLabel1->Text = "Here I am!";
TLabel1->Enabled = true;
TLabel1->Visible = true;
TLabel1->Parent = this;
TLabel1->OnMouseDown = MKView_OnMouseDown;
}
看起来 TForm3D 不能很好地与标准的 FireMonkey 组件一起工作,因为它是为渲染 FireMonkey 3D 组件而设计的,并且使用 OnRender() 而不是 OnPaint()。我在其 OpenGL 上下文中使用 TForm3D,但在切换到标准 TForm 后,现在正在绘制组件。
在 C++Builder 10.2 Tokyo 中工作,我试图在 运行 时间以编程方式将自定义组件添加到 FireMonkey TForm
。
自定义组件未作为包安装并在 IDE 中注册(因为这最终使项目过于复杂),而只是 TPanel
的子类。
但是,当我 运行 应用程序时,组件及其子组件不会被绘制。我已经在 Windows 和 Android 上对此进行了测试,并尝试了多项修改,例如明确设置宽度和高度。
我该如何解决这个问题?
下面是我的代码的相关部分:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm3D(Owner)
{
mkView = new MKView(this);
mkView->Align = TAlignLayout::Client;
mkView->Enabled = true;
mkView->Visible = true;
mkView->Parent = this;
}
__fastcall MKView::MKView(TComponent *Owner)
: TPanel(Owner)
{
this->OnMouseDown = MKView_OnMouseDown;
TLabel1 = new TLabel(this);
TLabel1->Text = "Here I am!";
TLabel1->Enabled = true;
TLabel1->Visible = true;
TLabel1->Parent = this;
TLabel1->OnMouseDown = MKView_OnMouseDown;
}
看起来 TForm3D 不能很好地与标准的 FireMonkey 组件一起工作,因为它是为渲染 FireMonkey 3D 组件而设计的,并且使用 OnRender() 而不是 OnPaint()。我在其 OpenGL 上下文中使用 TForm3D,但在切换到标准 TForm 后,现在正在绘制组件。