![]() |
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:
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.
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 Hier mal der Code der Collection:
Delphi-Quellcode:
Wie ihr seht, überschreibe ich Assign mit dem Standardaufruf. DAmit sollte doch die Zuweisung der properties klappen. Oder? Wo liegt mein Fehler?
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. Grüße Ben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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 by Thomas Breitkreuz