Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: Prüfen ob ein Objekt freigegeben wurde (Assigned geht nicht)

  Alt 27. Jun 2017, 15:21
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;
...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat