Hier ist mal ein Test, wie ich es mir vorstelle.
Aber der Code ist natürlich kompletter Unsinn - ich weiß nur leider nicht, wie das richtig gemacht wird, die Darstellung für die Komponente ist erst einmal nur ein Test.
Z.B. der Name der Labels - wie können die automatisch einen bekommen?
Lasse ich den Namen weg, gibt es die nicht.
Ich würde den Labels gerne selbst einen Namen geben, vielleicht direkt bei der Erstellung - oder erst danach?
Keine Ahnung, wie das funktioniert.
Delphi-Quellcode:
unit My_PanelLabel;
interface
uses
System.SysUtils, System.Classes,
Vcl.Controls,
Vcl.ExtCtrls,
Vcl.StdCtrls,
Vcl.Graphics;
type
TMy_PanelLabel =
class;
TMy_PanelLabel =
class(TPanel)
private
{ Private-Deklarationen }
protected
{ Protected-Deklarationen }
public
{ Public-Deklarationen }
function AddLabel(AOwner: TComponent): TLabel;
published
{ Published-Deklarationen }
end;
procedure Register;
implementation
function TMy_PanelLabel.AddLabel(AOwner: TComponent): TLabel;
begin
Result := TLabel.Create(AOwner);
Result.
Name := AOwner.
Name + '
_' + AOwner.ComponentCount.ToString;
Result.Parent := Self;
Result.Align := alLeft;
Result.AutoSize := True;
Result.AlignWithMargins := True;
Result.Alignment := taCenter;
Result.Layout := tlCenter;
Result.Transparent := False;
case (AOwner.ComponentCount
mod 2) = 0
of
True:
Result.Color := clLime;
False:
Result.Color := clYellow;
end;
end;
procedure Register;
begin
RegisterComponents('
Test', [TMy_PanelLabel]);
end;
end.