Jetzt verstehe ich was du willst.
Hier wie ich es machen würde:
Delphi-Quellcode:
unit1
TMyFrame = class(TFrame)
FOnDestroy : NotifyEvent;
property
OnDestroy : NotifyEvent read FOnDestroy write FOnDestroy;
end;
Delphi-Quellcode:
unit2
uses
unit1;
type
TShowFrame = class(TMyFrame)
destructor Destroy; override;
end;
destructor TShowFrame.Destroy;
begin
if Assigned(OnDestroy) then
OnDestroy(Self);
inherited;
end;
Delphi-Quellcode:
unit3
uses
unit1, unit2;
type
TShowForm = class(TForm)
procedure FrameDestroyed(Sender : TObject);
end;
procedure TShowForm.FrameErzeugen;
begin
// Frame vom Typ TShowFrame erstellen und
Frame.OnDestroy = FrameDestroyed;
end;
procedure TShowForm.FrameDestroyed(Sender : TObject);
begin
// neu zeichnen der anderen Frames
end;
In FrameDestroyed ist das sendende Frame allerdings noch da. Darauf muß man dann achten. wenn dem nicht so sein soll, dann muß man mit SendMessage arbeiten:
Delphi-Quellcode:
unit1
const
MY_MESSAGE = WM_USER + 1; // alles über WM_USER geht
Delphi-Quellcode:
unit2
uses
unit1;
type
TShowFrame = class(TMyFrame)
destructor Destroy; override;
end;
destructor TShowFrame.Destroy;
begin
SendMessage(Self.Handle, MY_MESSAGE, 0, 0);
inherited;
end;
Delphi-Quellcode:
unit3
uses
unit1, unit2;
type
TShowForm = class(TForm)
procedure FrameDestroyed(var msg: TMessage); message MY_MESSAGE;
end;
procedure TShowForm.FrameDestroyed(var msg: TMessage);
begin
// neu zeichnen der Frames
end;
Bei der Variante ist sicher, daß das Frame nicht mehr da ist.
P.S.: Es kann der eine oder andere kleine Fehler drin sein, ich wollte nur die Konzepte erläutern.
Gruß David
PPS.:
@Jumpy
not so
OT: Programmieren besteht zu über 50% aus Design und dann erst Entwicklung. Man muß sich im Großen wie im Kleinen über für ein Konzept entscheiden. Das hängt davon ab was man machen will, was der Kunde will, wie das Problem umgesetzt werden kann und viele andere Faktoren.
Es gibt da einen Spruch. Jede Minute die du am Konzept verlierst gewinnst du beim Entwickeln. Soll heißen wenn das Kontept vollständig ist (was es wohl nie sein wird) kann es beim eigentlichen Schreiben des Codes keine Überaschungen mehr geben.