AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Assign in OI

Ein Thema von BenjaminHelbig · begonnen am 3. Okt 2006
Antwort Antwort
BenjaminHelbig

Registriert seit: 23. Okt 2003
Ort: Mannheim
80 Beiträge
 
Delphi 5 Professional
 
#1

Problem mit Assign in OI

  Alt 3. Okt 2006, 17:40
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
--------
Es ist schon über so viele Dinge Gras gewachsen, dass ich keinem Rasen mehr traue.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:41 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