AGB  ·  Datenschutz  ·  Impressum  







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

Objektereignisse bearbeiten

Ein Thema von engel · begonnen am 27. Feb 2005 · letzter Beitrag vom 22. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
engel

Registriert seit: 13. Nov 2004
Ort: Lüneburg
25 Beiträge
 
Delphi 3 Professional
 
#1

Objektereignisse bearbeiten

  Alt 27. Feb 2005, 16:09
Männer! (Oder gibt's hier auch Frauen?)

Wahrscheinlich eine Anfängerfrage:

Ich habe ein grafisches Objekt gebaut, mit dem ich vom Hauptprogramm aus kommunizieren kann (wie üblich über properties mittels read und write-Methoden).
Wenn mein Objekt jetzt aber darüberhinaus ein Ereignis auslöst, weil es z.B. einen Button hat, auf den geklickt werden kann, wie kann mein Hauptprogramm davon sofort erfahren?:

Das Objekt könnte einfach das Ereignis behandeln, indem es eine Prozedur des Hauptprogramms aufruft - das widerspricht aber dem objektorientierten Prinzip, denn der Zugriff auf's Objekt sollte ja ausschließlich über properties erfolgen, oder?

Wie macht man's richtig?

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 16:14
Ereignisse (Events) sind Propertys (Eigenschaften) selbst.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
engel

Registriert seit: 13. Nov 2004
Ort: Lüneburg
25 Beiträge
 
Delphi 3 Professional
 
#3

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 17:21
Du meinst, sowohl Eigenschaften als auch Ereignisse können properties sein? Schon klar, aber ein kleines Beispiel würde mir helfen:
Wie sieht 1. die Deklaration der Ereignisbehandlungsroutine im Objekt aus, und wie 2. die Deklaration der Ereignisbehandlungsroutine im Hauptprogramm, die auf das Ereignis reagiert, welches vom Objekt ausgelöst + ans Hauptprogramm weitergeleitet wurde?
Oder stelle ich mir den Ablauf falsch vor?

Matthias
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 17:26
Ich glaube schon. eigendlich alles, was du schreibst, ist in ereignisbehandlungsroutinen (events) z.B. von dem Formulr.

In deinem Objekt kannst du nun ein´gene events definieren, indem du einen zeiger auf eine procedure erstellst, und dann eine property von diesem typ erstellst. dann ist das automatisch ein event.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 17:40
moin,

Delphi-Quellcode:
tMyClass = class
private
  FOnIrgendwas: tNotifyEvent;
  procedure IrgendeineMethode;
public
  property OnIrgendwas: tNotifyEvent read FOnIrgendwas write OnIrgendwas;
end;

implementation

procedure tMyClass.IrgendeineMethode;
begin
  {...}
  If Assigned(FOnIregndwas) then
    FOnIrgendwas(self)
  {...}
end;
Ich hoffe das hilft.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
engel

Registriert seit: 13. Nov 2004
Ort: Lüneburg
25 Beiträge
 
Delphi 3 Professional
 
#6

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 20:39
...ich ahne jetzt zumindest, wie's geht, danke!
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Objektereignisse bearbeiten

  Alt 27. Feb 2005, 20:43
Delphi-Quellcode:
procedure tMyClass.IrgendeineMethode;
begin
  {...}
  If Assigned(FOnIregndwas) then
    [b]OnIrgendwas(self)[/b]
     // eher FOnIregndwas(Self);
  {...}
end;
Oder ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Objektereignisse bearbeiten

  Alt 28. Feb 2005, 14:06
korrekt, war ein Tipfehler, sorry ist geändert
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
engel

Registriert seit: 13. Nov 2004
Ort: Lüneburg
25 Beiträge
 
Delphi 3 Professional
 
#9

Re: Objektereignisse bearbeiten

  Alt 2. Mär 2005, 12:25
...na dann aber auch:

If Assigned(FOnIrgendwas) then ...

oder? (wohl auch Tippfehler)

Was ich nicht verstehe: ich habe Beispiele gefunden, wo beide Parameter gleich sind, also z.B.

read OnIrgendwas write OnIrgendwas

Was steckt dahinter? Eigentlich brauche ich doch nur read, wenn das Ereignis im Objekt stattfindet + Richtung Hauptprogramm geschickt wird, oder??
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Objektereignisse bearbeiten

  Alt 2. Mär 2005, 13:02
Hi

ich hoffe mal ich schreib jetzt nix falsches:
du brauchst auch ein write um der Property eine Methode zuzuweisen die aufgerufen werden soll...
würde zB der Mensch der TButton(ich will jetzt nix höhren von TButton is abgeleitet von...) geschrieben hat beim OnClick nur Read und nich Write implementiert haben, so könntest du mit dem Button relativ wenig anfangen weil du ihm nich sagen kannst (write) was zu tun ist wenn der Button gedrückt wird...


Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:25 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