As of C++Builder 10.2 Tokyo (and perhaps earlier), the FMX.Types.TFmxObject.Release()
method is deprecated.
I use this method on some TForm
objects for delayed destruction. All I can find (see these docs) is that (in C++) delete
should be used instead, but I don't believe this marks a form for delayed destruction.
Is there a replacement for Release()
that one ought to use in this case?
I don't know why Embarcadero has deprecated Release()
or what they intend it to be replaced with, but you could try using TThread::ForceQueue()
to delete
the TForm
object, eg:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(NULL, &DeleteMe);
}
void __fastcall TMyForm::DeleteMe()
{
delete this;
}
Or, if you are using a Clang-based compiler, you can use a C++11 lambda instead:
void __fastcall TMyForm::ReleaseMe()
{
// Release()
TThread::ForceQueue(nullptr, [this](){ delete this; });
}