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

Propertys von Objekten in TCollectionItem ansprechen

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

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#1

Propertys von Objekten in TCollectionItem ansprechen

  Alt 8. Nov 2006, 06:46
Hallo DP'ler,

habe Dank oki es endlich geschafft, beim programmieren meiner ersten Komponente etwas weiter zu kommen.
Jetzt stehe ich aber vor dem nächsten Problem und hoffe das mir jemand einen Tipp geben kann.

Hier eine kurze Übersicht über die Komponente habe zur besseren Übersicht ca. 1300 Zeilen gelöscht.

Delphi-Quellcode:
Type
  // Forward
  TDateLine = class;
  TDateItems = class;

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

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

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

  TDateItem = class(TCollectionItem)
  private
    FControlDateItem : TControlDateItem;
    FParent : TDateItems;
  protected
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
  published
    property ControlDateItem : TControlDateItem read FControlDateItem write FControlDateItem;
  end;

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

TDateItems = class(TCollection)
  private
    FDateLine: TDateLine;
    function GetItem(Index: Integer): TDateItem;
    procedure SetItem(Index: Integer; Value: TDateItem);
  protected
    function GetOwner: TPersistent; override;
    procedure Update(Item: TDateItem); reintroduce;
  public
    constructor Create(DateLine: TDateLine);
    function Add : TDateItem;
    property Items[Index: Integer]: TDateItem read GetItem write SetItem; default;
  end;

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

TDateLine = class(TCustomGrid)
  private
    FDateItems : TDateItems;
    FItem : TDateItem;
    procedure SetDateItems(const Value: TDateItems);
  protected
    procedure Paint; override;//04.11.06 Oki hatte recht :-)
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure SetItem(const Value: TDateItem);
  published
    property Items: TDateItems read FDateItems write SetDateItems;
end;

implementation


//******************************************************************************
//***** ControlDateItem ********************************************************
//******************************************************************************

constructor TControlDateItem.Create(AOwner: TComponent);
begin
    inherited Create(AOwner); { immer den geerbten Konstruktor aufrufen }
    FBackColor := clWhite;
end;

//------------------------------------------------------------------------------

procedure TControlDateItem.SetBackColor(Value : TColor);
begin
    if Value <> FBackColor then
     begin
       FBackColor := Value;
       Invalidate;
     end;
end;

//------------------------------------------------------------------------------

destructor TControlDateItem.Destroy;
begin
    inherited Destroy;
end;

//******************************************************************************
//****** DateLine **************************************************************
//******************************************************************************

constructor TDateLine.Create(AOwner: TComponent);
begin
    inherited Create(AOwner); { geerbten Konstruktor aufrufen  }
    FDateItems := TDateItems.Create(self);
end;


//------------------------------------------------------------------------------

destructor TDateLine.Destroy;
begin
  FItem.Free;
  inherited;
end;

//******************************************************************************
//***** DateItems **************************************************************
//******************************************************************************

constructor TDateItems.Create(DateLine: TDateLine);
begin
  inherited Create(TDateItem);
  FDateLine := DateLine;
end;

//------------------------------------------------------------------------------

//******************************************************************************
//***** DateItem ***************************************************************
//******************************************************************************

constructor TDateItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FParent := TDateItems(Collection);
  FControlDateItem := TControlDateItem.Create((Collection as TDateItems).FDateLine);
  // ohne Parent keine anzeige (Owner in create alleine reicht nicht)
  FControlDateItem.Parent := (Collection as TDateItems).FDateLine;

end;
//------------------------------------------------------------------------------

destructor TDateItem.Destroy; //05.11.06
begin
  FControlDateItem.Free;
  inherited Destroy;
end;

end.
Leider werden die propertys von TControlDateItem nicht im OI angezeigt, bzw. zur Entwurfszeit nicht im Formular mit abgespeichert. Deshalb wollte ich jetz die Propertys von TControlDateItem nach TDateItem verschieben. Allerdings weiß ich nicht, wie ich dann auf die Propertys von TDateItem in TControlDateItem zugreifen kann bzw. auf die Propertys von TDateLine.

Hoffe es gibt jemanden der mir bei diesem Problem weiterhelfen kann.
Genial wäre es natürlich, wenn es einen Weg geben würde, TControlDateItem so beizubehalten das man gegebenenfalls TControlDateItem durch ein anderes Objekt austauschen könnte. Ist allerdings nur so eine Idee.

Hier noch ein ScreenShot damit Ihr wisst um was es geht.
Angehängte Grafiken
Dateityp: jpg screenshot_608.jpg (113,9 KB, 25x aufgerufen)
Uwe
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:03 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