Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TLabel + taRightJustify = katastrophe? (https://www.delphipraxis.net/102157-tlabel-tarightjustify-%3D-katastrophe.html)

xZise 24. Okt 2007 11:18


TLabel + taRightJustify = katastrophe?
 
Hi DP,
Ich habe folgenden simplen Code:
Delphi-Quellcode:
lCaptionDesc := TLabel.Create(self);
with lCaptionDesc do
begin
  Left := 300;
  Top := 3;
  Alignment := taRightJustify;
  Parent := tsFilter;
  Caption := 'Ein bischen Text... Bla bla blub';
end;
Soweit, würdet ihr sagen, dass macht Probleme? Nein, keine Fehler/Warunungen, aber die Anzeige spielt verrückt. Und zwar ist er nicht beim 300. Pixel zu ende, sondern irgendwo bei 350 - 360.
Und egal welchen Text, Left + Width ergibt immer das gleiche.
Erst, wenn Alignment normal ist, funktioniert Left wieder.
Warum das denn bitte schön :)

MfG
xZise

[edit]Bevor jemand meint, dass Left nach dem eingeben des Textes dann auf Left = 300 steht: Nein, dem ist nicht so![/edit]

mkinzler 24. Okt 2007 11:21

Re: TLabel + taRightJustify = katastrophe?
 
Auf was steht .AutoSize?

Luckie 24. Okt 2007 11:23

Re: TLabel + taRightJustify = katastrophe?
 
Warum sollte es bei 300 Pixeln zu ende sein? Da fängt es doch an.

DeddyH 24. Okt 2007 11:24

Re: TLabel + taRightJustify = katastrophe?
 
Delphi-Quellcode:
with lCaptionDesc do
begin
  Left := 0;
  AutoSize := false;
  Width := 300;
  Top := 3;
  Alignment := taRightJustify;
  Parent := tsFilter;
  Caption := 'Ein bischen Text... Bla bla blub';
end;
[edit] :? [/edit]

xZise 24. Okt 2007 11:26

Re: TLabel + taRightJustify = katastrophe?
 
Zitat:

Zitat von Luckie
Warum sollte es bei 300 Pixeln zu ende sein? Da fängt es doch an.

Warum? Weil .Alignment auf taRightJustify steht. Und d.h. Rechtsbündig ;)

Zitat:

Zitat von mkinzler
Auf was steht .AutoSize?

True (Weil das wird automatisch vergrößert :) Ohne .Width Angabe)

Und .Left wird nirgends geändert :)

MfG
xZise

PS: Ich habe das mal isoliert mit ein paar Sachen, gleiches Problem ^^

[edit]WO BLEIBT MEINE REDBOX ^^
Zitat:

Zitat von DeddyH
Delphi-Quellcode:
with lCaptionDesc do
begin
  Left := 0;
  AutoSize := false;
  Width := 300;
  Top := 3;
  Alignment := taRightJustify;
  Parent := tsFilter;
  Caption := 'Ein bischen Text... Bla bla blub';
end;
[edit] :? [/edit]

o.O
Aber warum so umständlich?
[/edit]

DeddyH 24. Okt 2007 11:26

Re: TLabel + taRightJustify = katastrophe?
 
Setz mal Color auf z.B. clRed, dann wirst Du es sehen ;)

xZise 24. Okt 2007 11:29

Re: TLabel + taRightJustify = katastrophe?
 
Hmm, richtiges Ergebnis, aber unlogisches Ergebnis.
Weil, wenn man das von oben im Komponentendesginer macht, funktioniert alles wunderbar ?!

DeddyH 24. Okt 2007 11:33

Re: TLabel + taRightJustify = katastrophe?
 
Ich finde das Ergebnis nicht unlogisch. Durch die Property AutoSize wird die Größe (und damit auch die Breite) an den Text angepasst. Und wenn Du Left auf 300 stellst, ist die linke Begrenzung eben 300. D.h. ergo, dass es nichts bringt, Alignment einzustellen, wenn AutoSize auf true steht.

Luckie 24. Okt 2007 11:34

Re: TLabel + taRightJustify = katastrophe?
 
Zitat:

Zitat von xZise
Zitat:

Zitat von Luckie
Warum sollte es bei 300 Pixeln zu ende sein? Da fängt es doch an.

Warum? Weil .Alignment auf taRightJustify steht. Und d.h. Rechtsbündig ;)

Das spielt doch keine Rolle. Du sagst mit der Angabe left := 300;, dass es bei Pixel 300 vom linken Rand anfangen soll. Das hat doch mit der Ausrichtung des Textes innerhalb des Labels nichts zu tun.

xZise 24. Okt 2007 11:50

Re: TLabel + taRightJustify = katastrophe?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luckie
Zitat:

Zitat von xZise
Zitat:

Zitat von Luckie
Warum sollte es bei 300 Pixeln zu ende sein? Da fängt es doch an.

Warum? Weil .Alignment auf taRightJustify steht. Und d.h. Rechtsbündig ;)

Das spielt doch keine Rolle. Du sagst mit der Angabe left := 300;, dass es bei Pixel 300 vom linken Rand anfangen soll. Das hat doch mit der Ausrichtung des Textes innerhalb des Labels nichts zu tun.

Zitat:

Zitat von DeddyH
Ich finde das Ergebnis nicht unlogisch. Durch die Property AutoSize wird die Größe (und damit auch die Breite) an den Text angepasst. Und wenn Du Left auf 300 stellst, ist die linke Begrenzung eben 300. D.h. ergo, dass es nichts bringt, Alignment einzustellen, wenn AutoSize auf true steht.

Okay :) Dann öffnet bei eure Delphi IDE und setzt ein Label auf die Form, mit Alignment taRightJustify.
Und dann tippt Text ein, und oh wunder. Left hat sich verändert (je nachdem, ob er Text hinzugefügt oder entfernt habt).
:mrgreen:

Und ich finde es unlogisch, dass er sich nach rechts schiebt, wenn er eigentlich nach links größer wird.

MfG
xZise

PS: Testet es einfach mal selber aus, bevor ihr wieder meint es sei unlogisch :zwinker:

[edit]Ich habe sogar noch etwas entdeckt.
Wenn ihr den obigen Code nehmt (von mir), und während der Laufzeit, z.B. durch Buttonklick, Text hinzufügt, dann bewegt er sich auch nach links, und nicht nach rechts.
Abgesehen davon, dass das LINKE Ende nicht 300 beträgt, sondern, je nach länge mehr/weniger sein kann.

Ach ihr müsst noch nicht mal selber coden ^^ ich hänge mal die Exe an.
Das Panel ist Links auf 300. Pixel ;) Der Text müsste als dort enden.
Mit dem Button fügt ihr ein Zeichen hinzu.
Das Label unten ist während der Desgintime erstellt worden ;)[/edit]

[edit] Mist Anhang ^^[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Seite 1 von 3  1 23      

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