Einzelnen Beitrag anzeigen

Benutzerbild von CWBudde
CWBudde

Registriert seit: 21. Apr 2006
Ort: Hannover
12 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Eigene Komponenten innerhalb einer anderen anzeigen lass

  Alt 30. Okt 2008, 17:28
Hallo nochmal,

ich glaube ich bin hier falsch verstanden worden. Ich will nicht wissen, warum das Tabsheet in dem Pagecontrol erscheint, sondern warum es in der Strukturübersicht erscheint. Das bekomme ich zwar selbst mit der schönsten "Parent-Zuweisung" nicht hin.

Hier nochmal ein Codeschnipsel, das den Kern verdeutlicht:

Delphi-Quellcode:
unit TestUnit;

interface

uses
  Windows, Mssages, SysUtils, Classes;

type
  TTestSubComponent = class(TComponent)
  private
    FSomeProperty: string;
    procedure SetSomeProperty(const Value: string);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property SomeProperty: string read FSomeProperty write SetSomeProperty;
  end;

  TTestComponent = class(TComponent)
  private
    FTestSubComponent : TTestSubComponent;
    FAnotherProperty : string;
    procedure SetAnotherProperty(const Value: string);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property AnotherProperty: string read FAnotherProperty write SetAnotherProperty;
  end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Test', [TTestSubComponent, TTestComponent]);
end;

{ TTestSubComponent }

constructor TTestSubComponent.Create(AOwner: TComponent);
begin
// SetSubComponent(True);
 inherited;
end;

procedure TTestSubComponent.SetSomeProperty(const Value: string);
begin
  FSomeProperty := Value;
end;

{ TTestComponent }

constructor TTestComponent.Create(AOwner: TComponent);
begin
 inherited;
 FTestSubComponent := TTestSubComponent.Create(Self);
// InsertComponent(FTestSubComponent);
end;

destructor TTestComponent.Destroy;
begin
 FreeAndNil(FTestSubComponent);
 inherited;
end;

procedure TTestComponent.SetAnotherProperty(const Value: string);
begin
 FAnotherProperty := Value;
end;

end.
Wenn ich nun ein Objekt des Typs TTestComponent in einer kleinen Testanwendung reinclicke, dann wir diese als kleines ja als kleines Icon in der Form angezeigt (ist ja eine nicht grafische Komponente). In der Strukturübersich erscheint die auch.

Soweit so gut!

Gleichzeitig wird im Konstruktor aber auch noch ein Objekt des Typs TTestSubComponent angelegt. Das möchte ich nun auch bitte schön in der Strukturübersicht angezeigt bekommen, aber wie?

Ich hab' mir da schon echt die Zähne dran ausgebissen, aber vielleicht fällt einem von euch ja hier etwas ein.

Gruß,

Christian

PS: anbei übrigens nochmal das der Screenshot von oben. Falls noch Zweifel bestehen, wo die TTestSubComponent auftauchen soll, es ist an der Stelle, die ich mit gelb im Screenshot markiert habe.
Miniaturansicht angehängter Grafiken
subcomonents_209.png  
Christian
  Mit Zitat antworten Zitat