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/)
-   -   Delphi Eigene Komponente - "OnDaPassiertEtwas" (https://www.delphipraxis.net/133018-eigene-komponente-ondapassiertetwas.html)

napsterxx 23. Apr 2009 22:16


Eigene Komponente - "OnDaPassiertEtwas"
 
Also ich habe soetwas noch nie gemacht, und dazu eine Edit Komponente auseinander genommen - ohne Erfolg :(
Kurz zu meinem Vorhaben.

Ich habe hier eine kleine Komponente gebastelt, welche ein Message-Event abfängt, WM_COPYDATA. Nun wollte ich, dass der Anwender Folgendes einfaches machen kann:

Delphi-Quellcode:
MeineKomponent.OnRecive := MessageErhalten;
Hoffe ihr wisst was ich meine. Ich habe überhaupt keine Ahnung was ich da wohin schreiben muss, und vorallem wie. protected? published? OnRecive?^^

Satty67 23. Apr 2009 22:26

Re: Eigene Komponente - "OnDaPassiertEtwas"
 
Delphi-Quellcode:
TMeinEvent = procedure(Sender : TObject) of object;
// Könnte man, statt es zu definieren z.B. auch ein Standard Klick-Event nehmen
// also statt TMeinEvent einfach TNotifyEvent, wenn nicht mehr übermittelt wird.

TDeineComponente = class
private
  FOnDaPassiertWas : TMeinEvent;

public //oder published, wenn es im OI stehen soll
  property OnReceive : TMeinEvent Read FOnDaPassiertWas Write FOnDaPassiertWas;
end;

// innerhalb der Klasse das ereignis auslösen:
if Assigned(FOnDaPassiertWas) then FOnDaPassiertWas(self);

napsterxx 23. Apr 2009 23:02

Re: Eigene Komponente - "OnDaPassiertEtwas"
 
Ich habe es genau so übernommen, auch keine Übersetzungsfehler aber die OnRecive methode wird nicht aufgerufen. Ich dachte es liegt daran das die Nachricht nicht ankommt - dem ist nicht so, Nachricht kommt an.

Sunlight7 23. Apr 2009 23:02

Re: Eigene Komponente - "OnDaPassiertEtwas"
 
Zitat:

Zitat von Satty67
Delphi-Quellcode:
...// innerhalb der Klasse das ereignis auslösen:
if Assigned(FOnDaPassiertWas) then FOnDaPassiertWas(self);

Dabei sollte man drauf achten, das als letztes im Codeblock zu platzieren, oder nachfolgenden Code mit try finally zu schützen, da im OnPassiertWas eine Exception ausgelöst werden könnte.

napsterxx 23. Apr 2009 23:17

Re: Eigene Komponente - "OnDaPassiertEtwas"
 
Jetzt gehts. Danke ihr zwei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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