Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: TFrame zerstören bei userinteraktion :( access-violation

  Alt 10. Jun 2007, 17:42
hab hier mal nen Button genommen, ist aber vom Prinzip her gleich:

jetzt definieren wir erstmal eine eigene Message:
Delphi-Quellcode:
const
  WM_DestroyFrame=WM_USER+10;
nun fügen wir eine Behandlungsroutine in das Form ein

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure WMDestroyFrame(var msg:TMessage); message WM_DestroyFrame;
  public
    { Public-Deklarationen }
  end;

...
procedure TForm1.WMDestroyFrame(var msg:TMessage);
begin
  if msg.lParam>0 then
    TButton(msg.LParam).free; //hab hier mal in LParam den pointer auf die TButton-Instanz geschrieben
end;
und im Buttonclick schicken wir die Nachricht...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  postmessage(self.handle,WM_DestroyFrame,0,integer(Button1)); //Pointer auf TButton-Instanz als LParam weitergeben
end;
musst das eigentlich nur noch an deine Klasse anpassen

Gruß Frank
  Mit Zitat antworten Zitat