Halo Zusammen,
ich habe eine Komponente aus TPanel abgeleitet und erweitert mit ein
TJvAngleLabel(ist ein TLabel aus JVC).
Problem1: Der Objektinspektor zeigt mir die Eigenschaft zwar an, jedoch mit ein DropDown Button.
Ich hätte erwartet das es wie eine Baumstruktur angezeigt wird, da es ja ein Objekt ist.
Problem2: Das Label wird nur zur Laufzeit angezeigt.
Problem3: Wie kann ich bitte die Eigenschaft Panel.Caption entfernen da ich sich nicht benötige.
Hier mein code:
Der Sinn der Komponente ist, wenn das Panel schmäler ist wie die Länge des Label,
soll das Label um 90Grad gedreht und zentriert werden.
Hat jemand eine Idee?
Delphi-Quellcode:
unit LabelPanel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, JvLabel, JvAngleLabel;
type
TLabelPanel =
class(TPanel)
private
{ Private-Deklarationen }
FAngleLabel : TJvAngleLabel;
protected
{ Protected-Deklarationen }
procedure WMSize(
var Message: TWMSize );
message WM_SIZE;
public
{ Public-Deklarationen }
constructor Create(AOwner:TComponent);
override;
published
{ Published-Deklarationen }
property AngleLabel : TJvAngleLabel
read FAngleLabel
write FAngleLabel;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
Kostas Std', [TLabelPanel]);
end;
procedure TLabelPanel.WMSize(
var Message: TWMSize);
begin
if Assigned(FAngleLabel)
then
begin
if (FAngleLabel.Width > Width)
then FAngleLabel.Angle := 90
else FAngleLabel.Angle := 0;
FAngleLabel.Left := Trunc( (width / 2) - (FAngleLabel.Height / 2) );
FAngleLabel.Top := Trunc( (Height / 2) - (FAngleLabel.Width / 2) );
end;
{if}
if Assigned(OnResize)
then OnResize(Self);
end;
Constructor TLabelPanel.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
self.Caption := '
';
FAngleLabel := TJvAngleLabel.Create(self);
FAngleLabel.Parent := self;
FAngleLabel.caption := '
Das isze ein langer Text';
end;
end.