Hallo an alle DPler,
hab wieder mal eine Frage. Habe mir das Tutorial zu composite controls
hier angeschaut und versucht dieses nachzuvollziehen. Leider mache ich trotz, dass dort wirklich sehr viel Quellcode gezeigt wird und dieser auch gut kommentiert wird, Fehler, wo ich nicht weiß warum das so ist. Ich stelle euch mal hier einfach meine kurzen Testquellcodes zur Verfügung und hoffe jemand kann mir dort etwas weiter helfen. Mir ist bewusst, dass in dem Tutorial fertige Komponenten benutzt werden und ich diese erstmal nur versuche dynamisch zu erstellen (Vieleicht liegt hier auch der Fehler, weiß ich aber leider nicht).
Hier meine MainForm:
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
FTestContainer: TTestContainer;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FTestContainer := TTestContainer.Create;
end;
end.
und hier die Unit1, die in Uses eingebunden wurde:
Delphi-Quellcode:
unit Unit1;
interface
uses Classes, StdCtrls, Controls, Graphics;
Type TTestComponente =
class(TWinControl)
private
FTestLabel: TLabel;
public
constructor create(AOwner: TComponent);
end;
Type TTestContainer =
class(TPersistent)
private
FTestComponente: TTestComponente;
protected
public
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.
Kompilieren und ausführen lässt sich der Code bei mir ohne Probleme, nur das erwartete Ergebnis (am Anfang hab ich gehoft das Label mit dem Text "Hallo" zu sehen, als das fehl schlug, hab ich das Control einfach in der kommentierten Zeil komplett
schwarz gemacht) blieb aus.
Vielen Dank
BAMatze
Edit1: Habe den Hinweis von HDeddy berücksichtigt und hier schon in dem Quelltext verbessert. Danke dafür, leider keine Verbesserung des Ergebnisses.