Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.837 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

Lösung: Nochmal: Ermiteln ob Objekt freigegeben wurde

  Alt 16. Dez 2005, 08:36
Hallo,
ich habe eine einfache Lösung für mein Problem gefunden.

Man muß dem Objekt nur bekannt machen welche Variable es referenziert.
Diese kann man dann in onClose auf nil setzen.

Man muß nur darauf achten, das man sich keine Kopie der Instanzvariablen, sondern die Adresse selber merkt. (Pointer auf Form2 vom Typ ^TForm2)
Diesem Pointer weist man dann die Adresse zu := @Form2.

Das war's. Relativ einfach, oder?

ps: Vielen Dank an NicoDE, es war eigentlich seine Idee

Unit1 mit dem MainForm:
Delphi-Quellcode:
...
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not assigned(Form2) then
  begin
    Form2 := TForm2.Create(self);
    Form2.MyInstance := @Form2;
  end;
  form2.show;
end;
...
Und hier ist die Unit2 mit dem SubForm:
Delphi-Quellcode:
...
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    MyInstance: ^TForm2;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  MyInstance^ := nil;
end;

end.
...
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat