AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

Ein Thema von KodeZwerg · begonnen am 28. Jul 2020 · letzter Beitrag vom 1. Aug 2020
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 28. Jul 2020, 08:52
Guten Morgen, ich finde mit meinen Suchanfragen leider keine guten Treffer.

Ich würde gerne ein eigenes OnEvent erschaffen für eine selbsterstellte Komponente.
Kann mir jemand vielleicht mit einem minimal-Beispiel oder Link auf die Sprünge helfen? Das wäre echt nett!

Was ich vorhabe:
In meiner Komponente gibt es eine "Aborted" Eigenschaft (Boolean) die auch zielführend gesetzt wird, nun hätte ich gerne ein "OnAborted" Event um sowie als auch darauf reagieren zu können,
nur fehlt mir Wissen wie man so etwas macht.
Ich habe gestern in vielen Delphi Komponenten krampfhaft versucht herauszufinden wie die Entwickler das vollbringen, leider ohne ans Ziel zu kommen.

Für Hinweise "How-To" bin ich sehr dankbar!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.655 Beiträge
 
Delphi 12 Athens
 
#2

AW: Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 28. Jul 2020, 09:04
Delphi-Quellcode:
type
  TDeineKomponente = class(TComponent)
  private
    FOnAborted: TNotifyEvent;
    ...
  public
    procedure Abort;
    ...
  published
    property OnAborted: TNotifyEvent read FOnAborted write FOnAborted;
    ...
  end;

...

procedure TDeineKomponente.Abort;
begin
  // Abbrechen
  if Assigned(FOnAborted) then
    FOnAborted(self);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 28. Jul 2020, 09:14
Du bist mein


Vielen Dank!!!!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 28. Jul 2020, 22:36
Zusatz: Du kannst auch statt TNotifyEvent eine eigene Procedure verwenden mit

FOnAborted : procedure(var DoAbort : Boolean) of object Dann kannst im Eventhandler die Variable setzen und in deinem Code drauf reagieren

Delphi-Quellcode:
Procedure Komponente.Abort
var FAbort : Boolean;
Begin
 FAbort := True

 if Assigned(FOnAborted) then
 FOnAborted(FAbort);

// Hier kannst dann die Rückgabe von FAbort auswerten und reagieren
end;
Ist manchmal ganz praktisch. Habe auch ewig gebraucht um die Events zu kapieren, aber irgendwann hat es „Click“ gemacht.
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 29. Jul 2020, 08:36
Das werde ich beides am Wochenende mal durchtesten, mir fehlte halt absolut ein Anfang, die Delphi Komponenten sind so dermaßen verschachtelt das ich's nicht nachvollziehen konnte.

Vielen lieben Dank für den Zusatz!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
998 Beiträge
 
#6

AW: Eigene Komponente -> Wie ein eigenes OnEvent erstellen?

  Alt 29. Jul 2020, 09:53
Also ich mach das, gerade in eigenen Componenten, immer so:
Delphi-Quellcode:
Type
  TOnAbort=proceudre(Sender: TObject; Aborted: Boolean) of object;

  TMyComponent=class(TComponent)
  private
    FOnAbort: TObAbort;
    procedure DoAbort(Aborted: Boolean);
  published
    property OnAbort: TOnAbort read FOnAbort write FOnAbort;
  end;

.
.
.
  proceudre DoAbort(Aborted: Boolean);
  begin
    if Assigned(FOnAbort) then
      FOnAbort(self, Aborted);
  end;
.
.
.
  procedure Execute;
  begin
.
.
.
.
    DoAborted(True);
  end;
So habe ich auch mit self den Sender zur weiteren Verarbeitung und den Event im OI
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz