![]() |
Runtime Objekt & Event
Hallo Leute,
ich hab folgenden Code in einer zweiten Unit:
Delphi-Quellcode:
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?
var WinAmpCtr1: TWinAmpCtr;
procedure TrackChange(Sender: TObject); begin; end; procedure init; begin; WinAmpCtr1 := TWinAmpCtr.create(nil); WinAmpCtr1.OnPlayChange:=TrackChange; end; Danke für ein bischen Hilfe TO |
Re: Runtime Objekt & Event
![]()
Delphi-Quellcode:
deklariert, das bedeutet: Du musst deine Prozedur in eine Klasse einbauen, ansonsten ist es kein TNotifyEvent.
procedure(Sender: TObject) OF OBJECT
Beispiel:
Delphi-Quellcode:
type
TProcContainer = class private fProc1: TNotifyEvent: published property TrackChange: TNotifyEvent read fProc1 write fProc1; end; |
Re: Runtime Objekt & Event
danke erstmal, aber geht das nicht simpler?
|
Re: Runtime Objekt & Event
Wenn du sauberen Code produzieren willst leider nicht.
TNotifyEvent braucht eine Klasse, um funktionieren zu können. |
Re: Runtime Objekt & Event
Zitat:
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 |
Re: Runtime Objekt & Event
ich hab jetzt mal folgendes konstruiert:
Delphi-Quellcode:
wieso geht das jetzt nicht? Compiler mault rum mit "Methodenbezeichner Erweartet");
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; |
Re: Runtime Objekt & Event
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? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 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