AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Vertikales Ausrichten eines Textes im LabeledEdit

Vertikales Ausrichten eines Textes im LabeledEdit

Ein Thema von Kalakmul · begonnen am 12. Jun 2011 · letzter Beitrag vom 14. Jun 2011
Antwort Antwort
Benutzerbild von Kalakmul
Kalakmul

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

Vertikales Ausrichten eines Textes im LabeledEdit

  Alt 12. Jun 2011, 15:21
Delphi-Version: 2010
Hallo!

Bei der Verwendung eines LabeledEdits habe ich folgendes Problem:

Um die Komponente auf einem papierartigen Hintergrund möglichst unsichtbar erscheinen zu lassen (es soll nur quasi den Rahmen für eine Eingabemöglichkeit bilden), habe ich die Eigenschaft "BorderStyle" auf "bsNone" gestellt.

Dabei verschiebt sich leider der Text innerhalb des Edits an den oberen Rand desselben, sodass er nicht mehr auf gleicher Höhe wie die Beschriftung des zugehörigen Labels steht.

Gibt es eine Möglichkeit den Text innerhalb des Edits des LabeledEdits vertikal zu zentrieren?

Für Buttons habe ich im Netz eine Lösung mit Hilfe von getWindowLong/setWindowLong und BS_VCENTER gefunden. Für ein LabeledEdit scheint es so etwas nicht zu geben, oder weiß jemand einen Rat?

Auf die Verwendung irgendeiner Nicht-Standardkomponente möchte ich nach Möglichkeit verzichten ebenso auf das Ausrichten eines Labes an einem gewöhnlichen Edit.
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.

Geändert von Kalakmul (12. Jun 2011 um 15:30 Uhr)
  Mit Zitat antworten Zitat
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
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.371 Beiträge
 
Delphi 12 Athens
 
#3

AW: Vertikales Ausrichten eines Textes im LabeledEdit

  Alt 14. Jun 2011, 16:57
Ein LabeledEdit besteht einfach nur aus einem TLabel und einem TEdit, kombiniert in einem Delphieigenem Control ... kein Wunder, daß man zu TLabeledEdit nicht viel findert.

Du bräuchtest also nur nach einer Lösung für TEdit zu suchen, bzw. für EDIT (MSDN-Library durchsuchenCreateWindow).
Es sollte eigentlich eine Möglichkeit geben, um den text zu positionieren.

Im Forum sollte es irgendwo alte Threads geben, wo man z.B. versuchte Text rechtsbündig ins Edit zu bekommen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

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

AW: Vertikales Ausrichten eines Textes im LabeledEdit

  Alt 14. Jun 2011, 17:14
Mit CreateWindow kenne ich mich nicht aus.

Ich kann nur vermuten, dass eine solche Lösung komplizierter wäre als die letztlich von mir gewählte.

Könntest Du denn eine elegante/kurze Umsetzung mit CreateWindow angeben? Das würde mich sehr interessieren.

Falls du diesen http://www.delphipraxis.net/87407-te...usrichten.html Thread meinst, so wird dort getWindowLong und setWindowLong verwendet. Es gibt aber leider kein "es_vcenter" analog zu "es_right".
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 17:24 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz