@Hawkeye219
Hast du dafür mal vieleicht ein kleines Bsp? Ich weiß nämlich nicht, auf welche TComponent man diese Composite Control erzeugen soll. Ich weiß das wird im Video auch nicht gezeigt, da es sich um eine fertige Komponente handelt. Vieleicht weiß dies ja jemand.
Hab den Code mit dem Hinweis von Hawkeye 219 wie folgt abgewandelt (die TPersistent-Klasse ist rausgeflogen)
Delphi-Quellcode:
unit Unit1;
interface
uses Classes, StdCtrls, Controls, Graphics;
Type TTestComponente =
class(TWinControl)
private
FTestLabel: TLabel;
public
constructor create(AOwner: TComponent);
override;
end;
implementation
constructor TTestComponente.create(AOwner: TComponent);
begin
inherited create(AOwner);
Controlstyle := Controlstyle - [csAcceptsControls];
// Der Componente wird nicht erlaubt
// andere Componenten aufzunehmen,
// als die, die durch den Programmierer
// hier einprogrammiert werden.
Visible := true;
width := 300;
height := 200;
Color := clBlack;
// <-- diese Zeile wurde eingeschoben, um zu sehen, ob das
// Composite Controll wirklich auf der Form erzeugt wird.
// Da sich kein Teil von der Form schwarz färbt, kann ich
// wohl davon ausgehen, dass dies nicht der Fall ist.
// WARUM?
// TestLabel initialisieren
FTestLabel := TLabel.create(Self);
with FTestLabel
do
begin
Parent := Self;
Visible := true;
Caption := '
Hallo';
Left := 10;
Top := 10;
end;
end;
end.
Delphi-Quellcode:
unit TestFensterUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit1;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
FTestComponente: TTestComponente;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FTestComponente := TTestComponente.Create();
// <-- hier fehlt noch die TComponent
end;
end.
Leider wird immer noch nichts angezeigt, deswegen hab ich die TComponent im Create für die Form rausgelassen. Folgende hab ich schon probiert:
NIL
SELF
Form1