Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   C# Eigene Ereignisse implementieren für Delphi .NET und C# (https://www.delphipraxis.net/47445-eigene-ereignisse-implementieren-fuer-delphi-net-und-c.html)

JayK 11. Jun 2005 09:43


Eigene Ereignisse implementieren für Delphi .NET und C#
 
Hallo,

mein Problem ist folgendes:
Ich möchte neue Ereignisse in .NET Kompos haben, zum Bleistift OnVisibleChange oder so.
Wie krieg ich das mit .NET (keine Windows-Messages) hin, dass dieses Ereignis auch immer ausgelöst wird, wenn die property Visible geändert wird? Und wenn irgendwer dann noch Zeit hat, würde ich gerne noch wissen, wie das unter C# geht.

Jaaaaaaaaaa, ich habe die Suche benutzt, aber nich so richtig was gefunden, was mir weiterhilft... (meistens immer nur für Win32) :twisted:

Schonmal Danke im voraus,
JayK

[edit=alcaeus]Personality gesetzt. Mfg, alcaeus[/edit]

Phoenix 11. Jun 2005 09:50

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Das Stichwort sind Delegates.
Hier hats eine kleine Erklärung dazu.
Auch Robert_G hat in diesem Thread ein Beispiel dafür gebracht.

kiar 11. Jun 2005 10:11

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
oder hier:

http://search.microsoft.com/search/r...de-de&qu=Event

raik

Edit: wobei Roberts wirrer Code :mrgreen: übersichtlicher ist

Robert_G 11. Jun 2005 10:14

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Control hat doch bereits einen Event names VisibleChanged...
und so wie es sich für Events in .Net gehört gibt es eine virtual protected method OnVisibleChanged, die kannst du überschreiben um darauf zu reagieren...

JayK 11. Jun 2005 11:51

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Zitat:

Zitat von Robert_G
Control hat doch bereits einen Event names VisibleChanged...
und so wie es sich für Events in .Net gehört gibt es eine virtual protected method OnVisibleChanged, die kannst du überschreiben um darauf zu reagieren...

War ja nur ein Beispiel...

Geht das für Delphi .NET (ich meine damit die .NET VCL) nicht auch:
Delphi-Quellcode:
TMeineKomponente = class(TBasisKomponente)
private
  fVisible: Boolean;
  procedure SetVisible(AValue: Boolean);
published
  property Visible: Boolean read fVisible write SetVisible;
  property OnVisibleChange: TNotifyEvent;
end;

implementation

procedure TMeineKomponente.SetVisble(AValue: Boolean);
begin
  inherited;
  OnVisibleChange // weiß jetzt nicht, sowas wie execute oder so... ?
  fVisible := AValue;
end;

Robert_G 11. Jun 2005 11:57

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Zitat:

Zitat von JayK
Geht das für Delphi .NET (ich meine damit die .NET VCL) nicht auch

Falls du damit mich meintest, sorry. Dazu musst du einen anderen fragen...

Edit: Bin ich mal nicht so, auch wenn du D.Net benutzt... :zwinker:
Einen Setter einer property sollte man nur dann private deklarieren, wenn man es für inkonsistent hält, dass ichn ein Nachfahre überschreiben kann.
Genau das gleiche gilt für die Methoden, mit denen du den Event feuerst.
Ansonsten müsste man im Nachfahren mit dem Event hantieren anstatt die betreffende Methode überschreiben zu können.
laso mach einfach eine virtual protected Emthode draus. ;)

JayK 12. Jun 2005 10:12

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Zitat:

Zitat von Robert_G
Zitat:

Zitat von JayK
Geht das für Delphi .NET (ich meine damit die .NET VCL) nicht auch

Falls du damit mich meintest, sorry. Dazu musst du einen anderen fragen...

Edit: Bin ich mal nicht so, auch wenn du D.Net benutzt... :zwinker:
Einen Setter einer property sollte man nur dann private deklarieren, wenn man es für inkonsistent hält, dass ichn ein Nachfahre überschreiben kann.
Genau das gleiche gilt für die Methoden, mit denen du den Event feuerst.
Ansonsten müsste man im Nachfahren mit dem Event hantieren anstatt die betreffende Methode überschreiben zu können.
laso mach einfach eine virtual protected Emthode draus. ;)

Um ehrlich zu sein: :wiejetzt:
Ich soll die Setter-Prozedur als protected und virtual deklarieren? Und das Event wohl auch... (das auf jeden Fall wenn ich nachdenke) Oder wie jetzt? Mal ganz nebenbei: Was heißt feuern? Aufrufen?
(So viele fragen auf einmal :roteyes: )

Robert_G 12. Jun 2005 10:17

Re: Eigene Ereignisse implementieren für Delphi .NET und C#
 
Deine Benneungen und Verwendungen sind NICHT .Net-Like.
Dein Event sollte VisibleChanged heißen.
Du solltest eine virtual protected Methode haben, die OnVisibleChanged heißt. Diese feuert den Event und führst du im Setter aus.

DP-Maintenance 12. Jun 2005 10:58

DP-Maintenance
 
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ich schiebs mal in die Delphi-Language-Sparte. Irgendwie gehoert C# auch dazu.


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