Что ж, запоздалое добавление к списку возможных ответов, компоненты содержат набор состояний, в котором хранится информация о текущем состоянии компонентов (барабанов).Когда форма освобождается, набор состояний включает в себя состояние csDestroying
.Таким образом, в ваше событие изменения размера вы можете включить проверку для этого.
void __fastcall TForm3::FormResize(TObject *Sender)
{
if (!ComponentState.Contains(csDestroying)) {
Image1->Picture->Graphic->Width = Image1->Width;
Image1->Picture->Graphic->Height = Image1->Height;
}
}
Это будет гарантировать, что ваш код изменения размера происходит только тогда, когда форма не освобождается.Является ли этот подход более подходящим, чем предложенный Робинджамом, решать вам.Однако мне больше нравится этот подход, так как он больше похож на «правильный» способ сделать это.Что произойдет, если в будущей версии библиотеки VCL для параметра visible
еще не установлено значение false
.
Но это зависит от вас, я добавил его, чтобы в любом случае предоставить другую альтернативу.