Delphi-PRAXiS
Seite 3 von 3     123   

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)

jottkaerr 24. Okt 2007 12:38

Re: TLabel + taRightJustify = katastrophe?
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  l := tLabel.Create(self);
  l.Left := 300;
  l.Alignment := taRightJustify;
  l.Parent := Self;
  l.Top := 3;

  Showmessage('Left: ' + IntToStr(l.Left) + ' Width: ' + IntToStr(l.Width));
  l.Caption := 'Hallo Welt';
  Showmessage('Left: ' + IntToStr(l.Left) + ' Width: ' + IntToStr(l.Width));
end;
die erste Ausgabe ergibt "Left: 300 Width: 65". "65" ist also die Default-Breite eines (leeren) Labels. Wenn Du jetzt l.Caption den neuen Text zuweist, erhältst Du "Left: 316 Width: 49". Der Text ist als kürzer als die bisherige Breite, und daher wird (bei rechtsbündiger Ausrichtung) der Anfang des Labels nach rechts verschoben.

jkr

xZise 24. Okt 2007 12:42

Re: TLabel + taRightJustify = katastrophe?
 
Zitat:

Zitat von mkinzler
Weil man im onCreate keine Eigenschaften von Objekten setzen sollte, welche auch in der Dfm stehen, da diese dann mit denen überschrieben werden.

Naja ;) Aber der unterschied zwischen der DFM und dynamischen ist, dass niemals beides gleichzeitig ist :)

Zitat:

Zitat von jottkaerr
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  l := tLabel.Create(self);
  l.Left := 300;
  l.Alignment := taRightJustify;
  l.Parent := Self;
  l.Top := 3;

  Showmessage('Left: ' + IntToStr(l.Left) + ' Width: ' + IntToStr(l.Width));
  l.Caption := 'Hallo Welt';
  Showmessage('Left: ' + IntToStr(l.Left) + ' Width: ' + IntToStr(l.Width));
end;
die erste Ausgabe ergibt "Left: 300 Width: 65". "65" ist also die Default-Breite eines (leeren) Labels. Wenn Du jetzt l.Caption den neuen Text zuweist, erhältst Du "Left: 316 Width: 49". Der Text ist als kürzer als die bisherige Breite, und daher wird (bei rechtsbündiger Ausrichtung) der Anfang des Labels nach rechts verschoben.

jkr

Hmmm :pale:
Ich hatte es schon mal mit .Width := 0 versucht, aber da hatte es auch nicht hingehauen, aber jetzt funzts :) Danke!

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
Seite 3 von 3     123   

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