不会绘制自定义FireMonkey组件

时间:2017-07-05 20:40:54

标签: user-interface paint c++builder firemonkey c++builder-10.2-tokyo

在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;
}

1 个答案:

答案 0 :(得分:1)

看起来TForm3D与标准FireMonkey组件不兼容,因为它专为渲染FireMonkey 3D组件而设计,并使用OnRender()而不是OnPaint()。我使用TForm3D作为其OpenGL上下文,但是已经切换到标准的TForm,现在正在绘制组件。