Habe jetzt eine relativ einfache Lösung selbst gefunden:
Könnte man beim SubLabel/EditLabel die Eigenschaft Top auf den gleichen Wert wie beim LabeledEdit setzen, so erschienen die Texte auf gleicher Höhe. Da die Komponente ja transparent sein (bzw. erscheinen = Hintergrundfarbe wie der Parent) soll, fiele es dann nicht auf, dass die Hintergründe beider Teilkomponenten nicht zentriert sind.
Das Problem ist nur, dass bei den Einstellungen, die ich benötige, das EditLabel standardmäßig zentriert zum LabeledEdit steht und dass die Eigenschaft Top direkt nicht geändert werden kann, weder im Objektinspektor noch wie folgt im Quellcode:
lbledt1.EditLabel.Top := lbledt1.Top; // geht nicht!
Beim Versuch, dies zu kompilieren, erscheint die Fehlermeldung:
[DCC Fehler] Unit1.pas(38): E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden
Wie ich herausgefunden habe, lässt sich aber die Position des EditLabels trotzdem via SetBounds
verändern
Hier die Musterlösung:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
// Eigenschaften, die auch im Objektinspektor verändert werden können
lbledt1.LabelPosition := lpLeft;
lbledt1.BorderStyle := bsNone;
lbledt1.Color := clBtnFace; // bzw. Hintergrundfarbe des Parents
lbledt1.EditLabel.Caption := 'Eingabe:';
lbledt1.Text := 'Beispieltext';
// Here comes the magic!
with lbledt1.EditLabel do
begin
SetBounds(Left, lbledt1.Top, Width, Height);
end;
end;
Vielleicht kann diese Lösung auch anderen nützlich sein.
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.