AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Propertys von Objekten in TCollectionItem ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Propertys von Objekten in TCollectionItem ansprechen

Ein Thema von uwewo · begonnen am 8. Nov 2006 · letzter Beitrag vom 1. Dez 2006
 
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Propertys von Objekten in TCollectionItem ansprechen

  Alt 8. Nov 2006, 07:22
Moin uwewo,

um die property's des eingebetteten Objectes in deinen TDateItem published zu machen hast du zwei Möglichkeiten:

1. ein Wrapper-Object (TPersistance) schreiben, welches du im create von TDateItem instanziierst und als published-property deklarierst.

2. alle propertys des eingebetteten Objectes als published-propertys von TDateItem deklarieren und Änderungen mit Get und Set direkt an das eingebettete Object weiterreichen. Dann das eingebettete Object aber nicht published deklarieren (mach generell so wenig Sinn).

Den Code für einen Wrapper kennst du ja. Für die 2. Variante sieht das dann so aus:
Delphi-Quellcode:
//******************************************************************************

  TControlDateItem = class(TGraphicControl)
  private
   FBackColor : TColor;
  protected
    procedure Paint; override;
  public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   procedure SetBackColor(Value : TColor);
   property BackColor : TColor read FBackColor write SetBackColor;
end;

//******************************************************************************

  TDateItem = class(TCollectionItem)
  private
    FControlDateItem : TControlDateItem;
    FParent : TDateItems;
    function GetBackColor: TColor;
    procedure SetBackColor(const Value: TColor);
  protected
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
  published
    property ControlDateItem : TControlDateItem read FControlDateItem write FControlDateItem;
    property BackColor : TColor read GetBackColor write SetBackColor;
  end;


function TDateItem.GetBackColor: TColor;
begin
  IF Assigned(FControlDateItem) then Result := FControlDateItem.BackColor;
end;

procedure TDateItem.SetBackColor(const Value: TColor);
begin
  IF Assigned(FControlDateItem) then FControlDateItem.BackColor := Value;
end;
Da ich denke, dass es nie ein DateItem ohne Instanz eines ControlDateItem gibt hab ich mir das Merken der Eigenschaft in TDateItem gespaart. Wenn man es ganz sicher haben will legt man auch in TDateItem einen privaten Member TBackColor an und speichert dann dort zwischen. Das hat den Vorteil, dass auch wenn noch kein FControlDateItem existiert die eigenschaft zuweisen kann und bei einem späteren Create dies dann für FControlDateItem nach holt.


Bis die Tage

Gruß oki
  Mit Zitat antworten Zitat
 


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 13:19 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