Label Länge in Create falsch

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Label Länge in Create falsch

Beitrag von Mathias »

Beim Create des Forms, ist Label.Width 65, obwohl Width viel kürzer ist.
Beim späteren Klicken auf den Button, ist die Länge korrekt.
Wieso ?

Code: Alles auswählen

var
  l: TLabel;

procedure TForm1.FormCreate(Sender: TObject);
begin
  l := TLabel.Create(Self);
  l.Parent := Self;
  l.Caption := '1';             // Sehr kleines Label
  Caption := l.Width.ToString;  // Width = 65
end; 

procedure TForm1.Button1Click(Sender: TObject);
begin
  l.Caption := l.Caption + 'abcabc';
  Caption := l.Width.ToString;  // Länge ist korrekt
end; 
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

wennerer
Beiträge: 524
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Label Länge in Create falsch

Beitrag von wennerer »

Hallo Mathias,
ist zwar nicht die Antwort auf deine Frage aber wenn du es in die Show Methode packst gehts.
Vielleicht muss Create komplett durchlaufen sein damit es passt?

Code: Alles auswählen

procedure TForm1.FormShow(Sender: TObject);
begin
 Caption := l.Width.ToString;  // Länge ist korrekt
end;  
Viele Grüße
Bernd

Antworten