![]() |
Methode umbiegen
Liebe Delphianer,
es ist mal wieder Zeit für ein kleines Projekt. Ich scheine aber vor lauter Bäumen den Wald nicht mehr zu sehen. Wie kann ich denn eine Methode eines Objektes, welche ich in meinem eigenen Objekt integriert habe, auf eine Procedure in meinem eigenen Objekt umbiegen. Klingt kompliziert oder ich kann mich nicht richtig ausdrücken, daher ein Beispiel: 1. Ich habe eine Klasse TMeineKlasse, in welcher ich einen Timer dynamisch im Constructor erstelle. Nun möchte ich in MEINER Klasse eine Procedure erstellen, welche im OnTimer-Ereignis ausgeführt wird. Später möchte ich in meiner Klasse ein OnTimer-Event integrieren - sollte aber klappen wenn ich mal die Methode umgebogen habe. 2. Auch wenn ich weiß "Eine Frage - Ein Thema", hängt ja irgendwie damit zusammen daher die Frage hier: Wie kann ich denn in MEINER Klasse eine Property Items (z.B. TStrings) erstellen über die ich dann wiederum auf die Items einer dynamisch erzeugten Klasse zugreifen kann (z.B. TStringList im OnCreate erstelle). Ist der richtige Ansatz ein Getter/Setter zu Schreiben und hier eben die Daten aus der "tieferen" TStringLIste auszulesen und weiterzureichen? Ich habe es nicht versucht da ich mir zunächst mal ein Trial&Error ersparen möchte. Sollte das von mir beschrieben Vorgehen korrekt sein reicht mir als Antwort auch ein "Jupp, so geht das" :-) Leider wurde ich in der Suche nicht fündig, auch wenn dieses Thema bestimmt schon öfters Gegenstand der Diskussion gewesen sein müsste. Vielleicht habe ich auch einfach die falchen Begriffe verwendet. Schönen Sonntag allen zusammen :-) |
AW: Methode umbiegen
Du hast eine Event-Methode in diner Klasse (genauso wie sie in der Form wäre, wenn der Timer auf der Form läge), weist beim Erstellen des Teimer deine Methode dem OnTimer-.Property zu und fertig.
Und wenn du selber ein Event haben willst, dann 'nen Feld und eine Publisched Property FOnTimer/OnTimer in deine Klasse, wo du in deinem Event diese gespeicherte Referenz aufrufst. Klingt einfacher, als es nicht ist. |
AW: Methode umbiegen
sowas in der Art:
Delphi-Quellcode:
DeinTimer.OnTimer := DeineOnTimerRoutine;
|
AW: Methode umbiegen
Vielen Dank,
Ich werde es in den nächsten Tagen versuchen aber ich denke, dass ich noch die eine oder andere Frage zum Event-Handling haben werde :) Grüße! |
AW: Methode umbiegen
Ich hab da mal was vorbereitet :mrgreen: (nur ein Formular mit einem Label drauf):
Delphi-Quellcode:
unit Unit5;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls; type TTest = class(TComponent) private FTimer: TTimer; function GetOnTimer: TNotifyEvent; procedure SetOnTimer(const Value: TNotifyEvent); function GetEnabled: Boolean; procedure SetEnabled(const Value: Boolean); public constructor Create(AOwner: TComponent); override; published property Enabled: Boolean read GetEnabled write SetEnabled; property OnTimer: TNotifyEvent read GetOnTimer write SetOnTimer; end; TfrmKomponentenTest = class(TForm) lblTimerFired: TLabel; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FTest: TTest; FZahl: integer; procedure DoOnTimer(Sender: TObject); public { Public-Deklarationen } end; var frmKomponentenTest: TfrmKomponentenTest; implementation {$R *.dfm} { TTest } constructor TTest.Create(AOwner: TComponent); begin inherited; FTimer := TTimer.Create(self); FTimer.Enabled := false; end; function TTest.GetEnabled: Boolean; begin Result := FTimer.Enabled; end; function TTest.GetOnTimer: TNotifyEvent; begin Result := FTimer.OnTimer; end; procedure TTest.SetEnabled(const Value: Boolean); begin FTimer.Enabled := Value; end; procedure TTest.SetOnTimer(const Value: TNotifyEvent); begin FTimer.OnTimer := Value; end; { TfrmKomponentenTest } procedure TfrmKomponentenTest.DoOnTimer(Sender: TObject); begin inc(FZahl); lblTimerFired.Caption := IntToStr(FZahl); end; procedure TfrmKomponentenTest.FormCreate(Sender: TObject); begin FTest := TTest.Create(self); FTest.OnTimer := DoOnTimer; FTest.Enabled := true; end; end. |
AW: Methode umbiegen
Zitat:
EDIT: Ne, um die Ohren wir dir da nix fliegen, aber es passiert einfach nichts. |
AW: Methode umbiegen
Was sollte einem da um die Ohren fliegen? Schlimmstenfalls tut sich nix.
|
AW: Methode umbiegen
Zitat:
Das habe ich dann wohl gemacht, als du deinen Beitrag geschrieben hast. Hatte anfangs nicht genau hingeschaut. :roll: |
AW: Methode umbiegen
Passiert gelegentlich ;)
|
AW: Methode umbiegen
Wow!!! Perfekt, ich werde es heute Abend versuchen so zu integrieren und gebe Euch dann Bescheid.
Hier ist man einfach immer perfekt aufgehoben. Danke :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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