Einzelnen Beitrag anzeigen

Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Vertikales Ausrichten eines Textes im LabeledEdit

  Alt 14. Jun 2011, 16:39
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.

Geändert von Kalakmul (14. Jun 2011 um 16:53 Uhr)
  Mit Zitat antworten Zitat