3

从 C++Builder 10.2 Tokyo(可能更早)开始,该FMX.Types.TFmxObject.Release()方法已被弃用。

我在一些TForm对象上使用这种方法来延迟销毁。我所能找到的(参见这些文档)是delete应该使用(在 C++ 中),但我不认为这标志着延迟销毁的形式。

Release()在这种情况下应该使用那个替代品吗?

4

3 回答 3

2

我不知道为什么 Embarcadero 已弃用Release()或他们打算将其替换为什么,但您可以尝试使用TThread::ForceQueue()delete对象TForm,例如:

void __fastcall TMyForm::ReleaseMe()
{
    // Release()
    TThread::ForceQueue(NULL, &DeleteMe);
}

void __fastcall TMyForm::DeleteMe()
{
    delete this;
}

或者,如果您使用的是基于 Clang 的编译器,则可以改用 C++11 lambda:

void __fastcall TMyForm::ReleaseMe()
{
    // Release()
    TThread::ForceQueue(nullptr, [this](){ delete this; });
}
于 2017-12-22T01:19:12.630 回答
1

在德尔福你可以使用

ReleaseForm;

我会假设它也适用于 C++ Builder。

于 2020-08-18T16:23:14.273 回答
0

在 Delphi 10.4 中,OnCloseTForm. 我假设他们希望您将其设置为caFree而不是调用Release.

于 2020-06-03T15:59:27.887 回答