AGB  ·  Datenschutz  ·  Impressum  







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

Runtime Objekt & Event

Ein Thema von theomega · begonnen am 20. Dez 2004 · letzter Beitrag vom 20. Dez 2004
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Runtime Objekt & Event

  Alt 20. Dez 2004, 20:30
Hallo Leute,
ich hab folgenden Code in einer zweiten Unit:
Delphi-Quellcode:
var WinAmpCtr1: TWinAmpCtr;

procedure TrackChange(Sender: TObject);
begin;

end;

procedure init;
begin;
WinAmpCtr1 := TWinAmpCtr.create(nil);
WinAmpCtr1.OnPlayChange:=TrackChange;


end;
init wird von der haupt-unit aus aufgerufen. Dummerweise wird die Unit nicht kompliert, weil er das mit der Zuweisung der Funktion zu dem Event nicht mag. Die Ausführung stimmt auf jeden Fall, was komisch ist, ist, dass OnPlayChange vom Typ TNotifyEvent ist, wie wandel ich eine Procedure darin um?

Danke für ein bischen Hilfe
TO
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 20:46
Delphi-Referenz durchsuchenTNotifyEvent ist doch als procedure(Sender: TObject) OF OBJECT deklariert, das bedeutet: Du musst deine Prozedur in eine Klasse einbauen, ansonsten ist es kein TNotifyEvent.

Beispiel:
Delphi-Quellcode:
type
  TProcContainer = class
  private
    fProc1: TNotifyEvent:
  published
    property TrackChange: TNotifyEvent read fProc1 write fProc1;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 20:50
danke erstmal, aber geht das nicht simpler?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 20:54
Wenn du sauberen Code produzieren willst leider nicht.
TNotifyEvent braucht eine Klasse, um funktionieren zu können.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 21:19
Zitat von theomega:
danke erstmal, aber geht das nicht simpler?
Doch geht es. Du könntest eine Klasse von TWinAmpCtr ableiten und auf dein gewünschtes Ereignis entsprechend reagieren.
Das wäre IMHO sauberer. Weil du dein Objekt ohnehin dynamisch erzeugst hast du damit 0 Mehraufwand.

Was dir allerdings an der Lösung ohne Klasse gut gefällt, versteh ich nicht.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#6

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 21:23
ich hab jetzt mal folgendes konstruiert:
Delphi-Quellcode:
type
  TProcContainer = class
  private
    fProc1: TNotifyEvent;
  published
    property TrackChange: TNotifyEvent read fProc1 write fProc1;
  end;


implementation

var WinAmpCtr1: TWinAmpCtr;

procedure fProc1;
begin;
showmessage('Test');
end;

procedure init;
begin;
WinAmpCtr1 := TWinAmpCtr.create(nil);
WinAmpCtr1.OnPlayChange:=TProcContainer.TrackChange;


end;
wieso geht das jetzt nicht? Compiler mault rum mit "Methodenbezeichner Erweartet");
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: Runtime Objekt & Event

  Alt 20. Dez 2004, 21:51
TrackChange ist ja auch keine Methode, sondern eine Property.
Außerdem erzeugst du keine Instanz von TProcContainer. Deswegen kannst der Property auch niemals einen Wert zuweisen,
ohne das es kracht.

Warum leitest du nicht einfach von TWinAmpCtr ab?
Daniel
Testen ist feige!
  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 05:50 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