Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Label in Bevel zentrieren (https://www.delphipraxis.net/11380-label-bevel-zentrieren.html)

devnull 5. Nov 2003 13:41


Label in Bevel zentrieren
 
Hi,

ich habe ein TextFeld variabler Länge welches ich in einem Bevel zentrieren möchte.
Das Problem ist, dass ich das Label nicht rechnerisch zentrieren kann, da jeder Zeichensatz eine andere Pixelbreite hat.

Gibts da nich irgenein Befehl ?

devnull

himitsu 5. Nov 2003 13:58

Re: Label in Bevel zentrieren
 
Hallo devnull,

setze AutoSize bei deinem Label auf FALSE und Alignment auf taCenter.

Jetzt brauchst du nur noch die linke und rechte Seite des Label zum Rand des Bevel zu ziehen.

http://www.FrankNStein.de/LBC.jpeg

devnull 5. Nov 2003 14:11

Re: Label in Bevel zentrieren
 
Das ist so, dass das Bevel während der Laufzeit erstellt wird:
Bevel1 ist HauptBevel !!

Delphi-Quellcode:
NewBevel := TBevel.Create(OkBottomDlg);
with NewBevel do begin
     Parent := OkBottomDlg;
     Left := 13;
     Top := 13;
     Height := 16;
     // Das hier soll das NewBevel 5 Pixel jeweils von links und rechts
     // bringen
     Width := Bevel1.Width - 10;
end;
Nun das TextFeld:
Delphi-Quellcode:
TextFeld := TLabel.Create(OkBottomDlg);
with TextFeld do begin
     Parent := OkBottomDlg;
     Caption := 'TEXTZEILE';
     Top := 14;
     // DAS SOLLTE DAS TEXTFELD IM BEVEL ZENTRIEREN
     Left := (Bevel1.Width - 10) div 2 - length('TEXTZEILE')*6 div 2;
     // Schlau wie ich bin, hab ich mal Courier genommen
     Font.Color := clWindowText;
     Font.Height := -11;
     Font.Name := 'Courier New';
     Font.Style := [];
end;

Das mit AutoSize geht jetzt doch nich mehr, weil erst während Laufzeit erstellt wird ?!??!


devnull

himitsu 5. Nov 2003 15:07

Re: Label in Bevel zentrieren
 
Die Werte im OI kann man doch auch zur Laufzeit noch zuweisen.

Delphi-Quellcode:
TextFeld := TLabel.Create(OkBottomDlg);
With TextFeld do Begin
     Parent := OkBottomDlg;
     AutoSize := False;          {}
     Alignment := taCenter;      {}
     Top := 14;                  {NewBevel.Top + 1}
     Left := 14;                 {NewBevel.Left + 1}
     Width := Bevel1.Width - 12; {NewBevel.Width - 2}
     Caption := 'TEXTZEILE';
     Font.Color := clWindowText;
     Font.Height := -11;
     Font.Name := 'Courier New';
     Font.Style := [];
End;

devnull 5. Nov 2003 15:16

Re: Label in Bevel zentrieren
 
Nein, das geht nicht.
Wenn ich nur AutoSize eingebe, dann weis Delphi ja net, auf was es zentrieren soll.

Das Problem ist, dass "Parent := OkBottomDlg;" ist und nicht
"Parent := OkBottomDlg.Bevel1;".
Das geht nicht !?

devnull

himitsu 5. Nov 2003 15:29

Re: Label in Bevel zentrieren
 
Es wird nicht das Label zentriert, sonder der Text im Label. :idea:

Wenn also das Label in das Bevel eingepasst wird und der Text im Label zentriert ist, ist er natürlich auch im Bevel zentriert.


:warn: in meinem Bildchen da oben ist der Text ja auch nicht im Bevel zentriert. Dort ist Label1.Parent nicht Bevel1 sondern Form1;

devnull 5. Nov 2003 15:59

Re: Label in Bevel zentrieren
 
:cheers: @Himitsu:
Danke, jetzt klappt es so, wie es gedacht war. Habs so gemacht, wie du in deinem Beispiel.

devnull

devnull 5. Nov 2003 15:59

Re: Label in Bevel zentrieren
 
:cheers: @Himitsu:
Danke, jetzt klappt es so, wie es gedacht war. Habs so gemacht, wie du in deinem Beispiel.

devnull


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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