0

在 C++Builder 10.2 Tokyo 中工作,我试图TForm在运行时以编程方式将自定义组件添加到 FireMonkey。

自定义组件没有作为包安装并在 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;
}
4

1 回答 1

1

看起来 TForm3D 不适用于标准 FireMonkey 组件,因为它是为渲染 FireMonkey 3D 组件而设计的,并且使用 OnRender() 而不是 OnPaint()。我将 TForm3D 用于其 OpenGL 上下文,但切换到标准 TForm 后,现在正在绘制组件。

于 2017-07-06T13:51:18.173 回答