AGB  ·  Datenschutz  ·  Impressum  







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

Methode umbiegen

Ein Thema von scrat1979 · begonnen am 23. Okt 2016 · letzter Beitrag vom 26. Okt 2016
Antwort Antwort
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#1

Methode umbiegen

  Alt 23. Okt 2016, 15:22
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
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Methode umbiegen

  Alt 23. Okt 2016, 15:26
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.
$2B or not $2B
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Methode umbiegen

  Alt 23. Okt 2016, 15:28
sowas in der Art:DeinTimer.OnTimer := DeineOnTimerRoutine;
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Methode umbiegen

  Alt 23. Okt 2016, 21:29
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!
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: Methode umbiegen

  Alt 24. Okt 2016, 08:35
Ich hab da mal was vorbereitet (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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Methode umbiegen

  Alt 24. Okt 2016, 09:47
Ich hab da mal was vorbereitet (nur ein Formular mit einem Label drauf):
Und nicht vergessen das FormCreate Event zuzuweisen. Sonst fliegt dir da u.U. was um die Ohren.

EDIT: Ne, um die Ohren wir dir da nix fliegen, aber es passiert einfach nichts.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

AW: Methode umbiegen

  Alt 24. Okt 2016, 09:49
Was sollte einem da um die Ohren fliegen? Schlimmstenfalls tut sich nix.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Methode umbiegen

  Alt 24. Okt 2016, 09:52
Was sollte einem da um die Ohren fliegen? Schlimmstenfalls tut sich nix.
Siehe mein Edit.

Das habe ich dann wohl gemacht, als du deinen Beitrag geschrieben hast. Hatte anfangs nicht genau hingeschaut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

AW: Methode umbiegen

  Alt 24. Okt 2016, 10:01
Passiert gelegentlich
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Methode umbiegen

  Alt 26. Okt 2016, 17:29
Wow!!! Perfekt, ich werde es heute Abend versuchen so zu integrieren und gebe Euch dann Bescheid.

Hier ist man einfach immer perfekt aufgehoben. Danke
Michael Kübler
  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 07:49 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