Da es sich sowohl bei
messageBoxToast
und
aCenterForm
um Nachfahren von
TComponent
handelt, kannst du dich über die Freigabe dieser Instanzen mittels
FreeNotification
benachrichtigen lassen.
Delphi-Quellcode:
procedure TFormToast.Notification(AComponent: TComponent; Operation: TOperation);
begin
if Operation = opRemove then
begin
if AComponent = messageBoxToast then
begin
messageBoxToast := nil;
end;
if AComponent = aCenterForm then
begin
aCenterForm := nil;
end;
end;
end;
procedure TFormToast.showMessage(sMitteilung: String; aForm: TForm);
begin
if Assigned(messageBoxToast) and (aCenterForm <> aForm) then
begin
messageBoxToast.HideAll;
aCenterForm.RemoveFreeNotification(Self);
messageBoxToast.RemoveFreeNotification(Self);
FreeAndNil(messageBoxToast);
end;
if not Assigned(messageBoxToast) then
begin
messageBoxToast := TAdvSmartMessageBox.Create(aForm);
aCenterForm := aForm; //aCenterForm ist Klassenvariable
messageBoxToast.DisplayLocation := dlbottomCenter;
messageBoxToast.DisplayRelative := drForm;
aCenterForm.FreeNotification(Self);
messageBoxToast.FreeNotification(Self);
end;
...