AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi class(TPersistent) - Zugriff auf "höhere" Prozeduren
Thema durchsuchen
Ansicht
Themen-Optionen

class(TPersistent) - Zugriff auf "höhere" Prozeduren

Ein Thema von Merlin1988 · begonnen am 20. Aug 2005 · letzter Beitrag vom 20. Aug 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Merlin1988
Merlin1988

Registriert seit: 10. Aug 2005
33 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: class(TPersistent) - Zugriff auf "höhere" Proz

  Alt 20. Aug 2005, 17:59
1. DANKE an alle die mir geholfen haben
2. Ich hab es jetzt geschafft.

Delphi-Quellcode:
unit TestOwner;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
  TUnter = class(TPersistent)
  private
    FZahl : Integer;
    FOnChange : TNotifyEvent;
    procedure SetZahl(const Value: Integer);
  protected
    procedure Change; virtual;
  published
    property OnChange: TNotifyEvent read FOnChange write FOnChange;
    property Zahl : Integer read FZahl write SetZahl;
  end;

type
  TTestOwner = class(TPaintbox)
  private
    { Private declarations }
    FMain : TUnter;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Upgrade(Sender: TObject);

  published
    { Published declarations }
    property Main : TUnter read FMain write FMain;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('My Own', [TTestOwner]);
end;

{ TTestOwner }

constructor TTestOwner.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FMain := TUnter.Create;
  FMain.OnChange := Upgrade;
end;

destructor TTestOwner.Destroy;
begin
  FMain.Free;
  inherited Destroy;
end;

procedure TTestOwner.Upgrade(Sender: TObject);
begin
  Self.Canvas.TextOut(Self.FMain.FZahl,1,'Hallo');
end;

{ TUnter }

procedure TUnter.Change;
begin
  if Assigned(FOnChange) then
    FOnChange(Self);
end;

procedure TUnter.SetZahl(const Value: Integer);
begin
  FZahl := Value;
  Change;
end;

end.
Use the Source, Luke.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

Re: class(TPersistent) - Zugriff auf "höhere" Proz

  Alt 20. Aug 2005, 19:58
Wieso willst du denn einen "published" Event "OnChange" machen, wenn du ihn direkt wieder belegst. Folgende Zeilen sollten dein Problem auch lösen (nicht getestet). Wie gesagt, wenn du alles unter ein type schreibst, dann kannst du "TTestOwner" forward deklarieren.

Delphi-Quellcode:
unit TestOwner;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls;

type
  TTestOwner = class;

  TUnter = class(TPersistent)
  private
    FOwner: TTestOwner;
    FZahl : Integer;
    procedure SetZahl(const Value: Integer);
  protected
    procedure Change; virtual;
  public
    constructor Create(AOwner: TTestOwner);
    property Owner : TTestOwner read FOwner;
  published
    property Zahl : Integer read FZahl write SetZahl;
  end;

  TTestOwner = class(TPaintbox)
  private
    { Private declarations }
    FMain : TUnter;
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Upgrade(Sender: TObject);

  published
    { Published declarations }
    property Main : TUnter read FMain write FMain;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('My Own', [TTestOwner]);
end;

{ TTestOwner }

constructor TTestOwner.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FMain := TUnter.Create(Self);
end;

destructor TTestOwner.Destroy;
begin
  FMain.Free;
  inherited Destroy;
end;

procedure TTestOwner.Upgrade(Sender: TObject);
begin
  Self.Canvas.TextOut(Self.FMain.FZahl,1,'Hallo');
end;

{ TUnter }

constructor TUnter.Create(AOwner: TTestOwner);
begin
  inherited Create;
  FOwner := AOwner;
end;

procedure TUnter.Change;
begin
  FOwner.Upgrade;
end;

procedure TUnter.SetZahl(const Value: Integer);
begin
  if Value <> FZahl then
  begin
    FZahl := Value;
    Change;
  end;
end;

end.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:48 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