AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Event von Sub-Objekt als Property anzeigen

Ein Thema von BlueStarHH · begonnen am 5. Apr 2019 · letzter Beitrag vom 8. Apr 2019
Antwort Antwort
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
864 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Event von Sub-Objekt als Property anzeigen

  Alt 8. Apr 2019, 10:37
Außerdem muss auch dein TMyObject von TComponent abgeleitet werden und ebenfalls im Package registriert werden.
Danke! Aber was mache ich, wenn ich mein TMyObject nicht von TComponent ableiten kann, weil TMyObject eine fertige Klasse von Dritten ist. Z.B. eine TObjectList<T>
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
716 Beiträge
 
Delphi 12 Athens
 
#2

AW: Event von Sub-Objekt als Property anzeigen

  Alt 8. Apr 2019, 10:43
Außerdem muss auch dein TMyObject von TComponent abgeleitet werden und ebenfalls im Package registriert werden.
Danke! Aber was mache ich, wenn ich mein TMyObject nicht von TComponent ableiten kann, weil TMyObject eine fertige Klasse von Dritten ist. Z.B. eine TObjectList<T>
Solche Objekte lassen sich leider nicht als published properties einer TComponent verwenden, die IDE erfordert, dass solche Objekte mindestens von TPersistent abgeleitet sind. Du mußt also in deinem Fall eine Wrapper-Klasse erzeugen, die von TPersistent abgeleitet ist und intern halt eine Instanz deiner eigentlichen Klasse verwendet und deren properties und events quasi nach aussen (published) sichtbar macht.
Peter Below
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
864 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Event von Sub-Objekt als Property anzeigen

  Alt 8. Apr 2019, 10:49
Außerdem muss auch dein TMyObject von TComponent abgeleitet werden und ebenfalls im Package registriert werden.
Danke! Aber was mache ich, wenn ich mein TMyObject nicht von TComponent ableiten kann, weil TMyObject eine fertige Klasse von Dritten ist. Z.B. eine TObjectList<T>
Solche Objekte lassen sich leider nicht als published properties einer TComponent verwenden, die IDE erfordert, dass solche Objekte mindestens von TPersistent abgeleitet sind. Du mußt also in deinem Fall eine Wrapper-Klasse erzeugen, die von TPersistent abgeleitet ist und intern halt eine Instanz deiner eigentlichen Klasse verwendet und deren properties und events quasi nach aussen (published) sichtbar macht.
Wie kann ich dann das Event nach außen hin sichtbar machen? Wie verweise ich also bei einem Event in der Wrapper-Klasse auf das Event von der gewrappten Instanz?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Event von Sub-Objekt als Property anzeigen

  Alt 8. Apr 2019, 11:32
Wenn es nur darum geht, dem "inneren" Objekt einen Ereignishandler zuzuweisen, kann man den doch einfach durchreichen, oder habe ich das Problem nicht verstanden?
Delphi-Quellcode:
TMyObject = class(TObject)
private
  FOnMyEvent: TNotifyEvent;
published
  property OnMyEvent: TNotifyEvent read FOnMyEvent write FOnMyEvent;
end;

TMyComponent = class(TComponent)
private
  FMyObject: TMyObject;
  function GetMyEvent: TNotifyEvent;
  procedure SetMyEvent(const Value: TNotifyEvent);
published
  property OnMyEvent: TNotifyEvent read GetMyEvent write SetMyEvent;
end;

...

function TMyComponent.GetMyEvent: TNotifyEvent;
begin
  Result := FMyObject.OnMyEvent;
end;

procedure TMyComponent.SetMyEvent(const Value: TNotifyEvent);
begin
  FMyObject.OnMyEvent := Value;
end;
Aus dem Kopf, daher ungetestet.
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
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.905 Beiträge
 
Delphi 12 Athens
 
#5

AW: Event von Sub-Objekt als Property anzeigen

  Alt 8. Apr 2019, 10:48
was mache ich, wenn ich mein TMyObject nicht von TComponent ableiten kann, weil TMyObject eine fertige Klasse von Dritten ist.
Ich fürchte, dann wirst du eine Wrapperklasse erstellen müssen, die die gewünschten Eigernschaften entsprechend durchreicht.
Oder aber du implementierst einen eigenen PropertyEditor. Ist halt die Frage, ob der Aufwand sich lohnt.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:24 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-2025 by Thomas Breitkreuz