В контроле TPopup
есть ошибка.Сообщается как RSP-21438
TPopup
, внутренне создает новый TCustomPopupForm
при каждом открытии всплывающего окна.Однако эта форма не освобождается, когда всплывающее окно закрывается (как и должно быть), а только тогда, когда сам всплывающий элемент управления разрушен.
Существует несколько обходных путей
1.Создать новый элемент управления TPopup при открытии и освободить его при закрытии
2.Исправьте FMX.Controls
и FMX.Forms
Ошибка может быть исправлена в разделе реализации вышеуказанных модулей.Это означает, что вы можете скопировать FMX.Controls
и FMX.Forms
в папку вашего проекта, и Delphi будет использовать эти фиксированные единицы вместо единиц по умолчанию.
Исправить следующий код:
FMX.Controls - изменить параметр конструктора с False
на True
- это означает, что всплывающая форма будет автоматически освобождена при закрытии.
function TPopup.CreatePopupForm: TFmxObject;
...
NewForm := TCustomPopupForm.Create(Self, NewStyle, PlacementTarget, True);
FMX. Формы - назначить AutoFree
параметр в поле.
constructor TCustomPopupForm.Create(AOwner: TComponent; AStyleBook: TStyleBook = nil; APlacementTarget: TControl = nil;
AutoFree: Boolean = True);
var
NewStyleBook: TStyleBook;
begin
FAutoFree := AutoFree;
....