Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Sender.Free (https://www.delphipraxis.net/205630-sender-free.html)

relocate 30. Sep 2020 12:18

Sender.Free
 
Da ich ungern den alten Post ausgraben möchte, verlinke ich nur mal...

https://www.delphipraxis.net/35368-sender-free.html

Ich habe den selben Fall, dass ein Control eine Reihe von Dingen erledigen soll und wenn er damit fertig ist, sich selbst entfernen soll. Es ist ein zur Laufzeit erzeugtes Control.
Wahlweise kommt die Meldung Priviligierte Anweisung oder eine Exception.
Im Posting wird die Variante über Postmessage empfohlen, leider nur nicht wie das gemacht werden soll, weiß hierzu jemand Rat.

Gruß relocate

KodeZwerg 30. Sep 2020 12:30

AW: Sender.Free
 
Nur ganz grob angedeutet ohne auf Inhalt einzugehen...

Delphi-Quellcode:
const
  WM_MY_MESSAGE = WM_USER + 123;

type
  TForm1 = class(TForm)
  ...
  private
    procedure OnMyMessage(var Msg: TMessage); message WM_MY_MESSAGE;
  ...


procedure TForm1.OnMyMessage(var Msg: TMessage);
begin
// was soll hier passieren?
end;

//irgendwo wo's benötigt ist
procedure TForm1.Test(Sender: TObject);
begin
  PostMessage(Self.Handle, WM_MY_MESSAGE, 0, 0);
end;

relocate 30. Sep 2020 12:42

AW: Sender.Free
 
:thumb: Passt, danke!

himitsu 30. Sep 2020 13:45

AW: Sender.Free
 
Oder (das arbeitet intern auch über die Messages)
Delphi-Quellcode:
//irgendwo wo's benötigt ist
procedure TForm1.Test(Sender: TObject);
begin
  TThread.ForceQueue(nil, procedure
    begin
       // was soll hier passieren?
    end);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz