Hmm, ich komm grad nicht weiter, obwohl es wahrscheinlich nur eine Kleinigkeit ist...
Ziel ist ein Edit mit angehängtem Label (ich weiß, dass gibt es bereits, ich mach es trotzdem selbst).
Ich leite von TCustomEdit ab und erzeuge darin ein Label abgeleitet von TCustomLabel.
Delphi-Quellcode:
TbroseEdit = class(TCustomEdit)
private
fLabel: TbroseEditLabel;
function GetCaption:TCaption;
procedure SetCaption(Value: TCaption);
protected
procedure SetParent(AParent: TWinControl); override;
public
constructor Create(AOwner: TComponent); Override;
destructor Destroy; override;
published
property Caption: TCaption read GetCaption write SetCaption;
property EditLabel: TbroseEditLabel read fLabel write fLabel;
property OnChange;
property OnEnter;
property OnExit;
end;
constructor TbroseEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Height := 17;
BevelInner := bvRaised;
BevelKind := bkFlat;
BevelOuter := bvLowered;
BorderStyle := bsNone;
//Label erzeugen
fLabel := TbroseEditLabel.Create(self);
fLabel.SetBounds(Left - 100, Top, 100, 17);
//FDoAutocomplete := True;
//FIndex := -1;
end;
procedure TbroseEdit.SetParent(AParent: TWinControl);
begin
inherited SetParent(AParent);
if fLabel = nil then exit;
fLabel.Parent := AParent;
fLabel.Visible := True;
end;
Soweit so gut, nun soll das Label 100 Punkte VOR dem Edit liegen (siehe im Konstruktor), wenn ich das Editfeld auf dem Formular platziere dann haben anscheinend Left und Top des Edit den Wert 0, da das Label auf der Position -100,0 eingefügt wird. Blöderweise geht das weder zur Entwurfs- noch zur Laufzeit.