Когда мы закрываем фрейм, он не освобождается, он все еще остается в памяти и по-прежнему назначается.Как освободить TFrame после закрытия
Как отслеживать событие OnClose TFrame, чтобы иметь возможность освободить фрейм?
Когда мы закрываем фрейм, он не освобождается, он все еще остается в памяти и по-прежнему назначается.Как освободить TFrame после закрытия
Как отслеживать событие OnClose TFrame, чтобы иметь возможность освободить фрейм?
TFrame
не имеет OnClose
события. Вы должны реализовать и отслеживать это вручную. Однако, когда вы готовы освободить объект Frame, вы можете сделать то, что делает TForm.Release()
- отправить собственное сообщение себе, а затем освободить объект в обработчике сообщений. Например:
type
TMyFrame = class(TFrame)
private
procedure CMRelease(var Message: TMessage); message CM_RELEASE;
public
procedure Release;
end;
procedure TMyFrame.CMRelease(var Message: TMessage);
begin
Free;
end;
procedure TMyFrame.Release;
begin
PostMessage(Handle, CM_RELEASE, 0, 0);
end;
Просто позвоните Release()
, когда вам нужно освободить раму, и он будет освобождаться в ближайшее удобное.
Почему бы вам просто не называть 'Free'? –
Спасибо Дэвиду Хеффернану, где я позвонил бесплатно, потому что при закрытии фрейма не произошло событие. Пожалуйста, скажите мне. – Vikas
Call Free, если вы хотите закрыть кадр перед формой хоста. В противном случае вам не нужно ничего делать. Какова ваша фактическая проблема? Расскажите об этом. –