Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Assign in OI (https://www.delphipraxis.net/78346-problem-mit-assign-oi.html)

BenjaminHelbig 3. Okt 2006 16:40


Problem mit Assign in OI
 
Hallo liebe DP'ler,

ich habe eine Komponente die mehrere Panels wrappen soll. Soweit so gut. Hier mal der HEader der Kompo:
Delphi-Quellcode:
unit PanelWrapper;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, PanelSplitter, Highlightning, PanelCollection;

type
  // The Panel Wrapper
  TPanelState = (psDefault, psUp, psDown);
  TPanelNumbers = (spnNone, spnCenter, spnLeft, spnRight);
  TPanelWrapper = class(TPanel)
  private
    { Private-Deklarationen }
    FPanelSplitter: TPanelSplitter;
    FPanelState: TPanelState;
    FPanelNumbers: TPanelNumbers;
    FHighlight: THighlightning;
    FpcPanels: TPanels;

    procedure SetPanels(const NewPanels: TPanels);
    procedure SetPanelSplitter(const NewPanelSplitter: TPanelSplitter);
    procedure SetPanelState(const NewPanelState: TPanelState);
    procedure SetPanelNumbers(const NewPanelNumbers: TPanelNumbers);
    procedure SetHighlight(const NewHighlight: THighlightning);
  protected
    { Protected-Deklarationen }
    procedure Paint; override;
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
    property AutoSize default true;
    property Panels: TPanels read FpcPanels write SetPanels;
    property PanelSplitter: TPanelSplitter read FPanelSplitter write SetPanelSplitter;
    property PanelState: TPanelState read FPanelState write SetPanelState Default psDefault;
    property ShowPanelNumbers: TPanelNumbers read FPanelNumbers write SetPanelNumbers Default spnNone;
    property Highlight: THighlightning read FHighlight write SetHighlight;
  end;

procedure Register;

implementation
Die Property Panels zeigt mir auch wunderbar eine Liste an in der ich neue CollectionITems des Typs TPanel erstellen kann. Wenn ich allerdings auf eines draufklicke zeigt mir der Objektinspektor nichts an. Eigentlich sollte er doch dann die Eigenschaften eines TPanel anzeigen.

Hier mal der Code der Collection:
Delphi-Quellcode:
unit PanelCollection;

interface

uses Classes, ExtCtrls, Graphics;

type
  TPanels = class;

    // enthält ein Panel mit gewünschten Eigenschaften
  TPanelCollectionItem = class(TCollectionItem)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    procedure Assign(Source: TPersistent); override;
  published
    { Published-Deklarationen }
  end;

  // Container mit variabler Anzahl von Panels
  TPanels = class(TOwnedCollection)
  private
    { Private-Deklarationen }
    function GetPanel(Index: Integer): TPanelCollectionItem;
  public
    { Public-Deklarationen }
    property Panel[Index: Integer]: TPanelCollectionItem read GetPanel; default;
  published
    { Published-Deklarationen }
  end;

implementation

{ TPanelCollectionItem }

// Assign muß überschrieben werden, daß die Komponente auch auf
// vererbten Formularen funktioniert.
procedure TPanelCollectionItem.Assign(Source: TPersistent);
begin
  inherited Assign(Source);
end;

{ END TPanelCollectionItem }



{ TPanels }

function TPanels.GetPanel(Index: Integer): TPanelCollectionItem;
begin
  Result := Items[Index] as TPanelCollectionItem;
end;

{ END TPanels }


end.
Wie ihr seht, überschreibe ich Assign mit dem Standardaufruf. DAmit sollte doch die Zuweisung der properties klappen. Oder? Wo liegt mein Fehler?

Grüße Ben


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 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