AGB  ·  Datenschutz  ·  Impressum  







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

Methodenaufruf über Adresse

Ein Thema von Klaus01 · begonnen am 29. Sep 2009 · letzter Beitrag vom 29. Sep 2009
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.779 Beiträge
 
Delphi 10.4 Sydney
 
#1

Re: Methodenaufruf über Adresse

  Alt 29. Sep 2009, 18:45
Hallo ihr zwei,

danke für Eure Antworten und Vorschläge.
Wie Dirk es im Post 2 gesagt hat, habe ich es mit der Übergabe
von den kompletten Instanzen versucht - und mittlerweile klappt es
auch.

Delphi-Quellcode:
unit UMVCPattern;

interface
uses
  Contnrs,classes;

type
  TDataUser = class;

  TDataContainer = class(TThread)
    protected
      FDataUsers : TObjectList;
    public
      constructor Create;
      destructor Destroy; override;
      procedure attachDataUser(dataUser: TDataUser);
      procedure detachDataUser(dataUser: TDataUser);
      procedure updateDataUsers;
  end;

  TDataUser = class(TObject)
    protected
      FDataContainer : TDataContainer;
    public
      procedure attachTo(dataContainer: TDataContainer);
      procedure detachFrom(dataContainer: TDataContainer);
      procedure update; virtual; abstract;
  end;

implementation

  constructor TDataContainer.Create;
  begin
    inherited create(false);
    FDataUsers := TObjectList.create(false);
  end;

  destructor TDataContainer.Destroy;
  begin
    FDataUsers.Free;
    inherited destroy;
  end;

  procedure TDataContainer.attachDataUser(dataUser: TDataUser);
  begin
    if FDataUsers.IndexOf(dataUser) = -1 then
      FDataUsers.Add(dataUser);
  end;

  procedure TDataContainer.detachDataUser(dataUser: TDataUser);
  begin
    FDataUsers.Remove(dataUser);
  end;

  procedure TDataContainer.updateDataUsers;
  var
    i: Byte;
  begin
    for i:=0 to FDataUsers.Count -1 do
      begin
        (FDataUsers.Items[i] as TDataUser).update;
      end;
  end;


  procedure TDataUser.attachTo(dataContainer: TDataContainer);
  begin
    FDataContainer := dataContainer;
    FDataContainer.attachDataUser(self);
  end;

  procedure TDataUser.detachFrom(dataContainer: TDataContainer);
  begin
    FDataContainer := dataContainer;
    FDataContainer.detachDataUser(self);
    FDataContainer := nil;
  end;

end.
Da ich in der Ableitung von TDataContainer auch noch TTHread
brauchte musste ich TDataContainer von TThread ableiten.

Grüße
Klaus
Klaus
  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 19:27 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