Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Textgrösse auf Fenstergrösse anpassen (https://www.delphipraxis.net/14560-textgroesse-auf-fenstergroesse-anpassen.html)

needatip 11. Jan 2004 14:44


Textgrösse auf Fenstergrösse anpassen
 
Hallo, wer kann mir helfen?

Ich möchte einen Monitor als Nummernanzeige verwenden. d.h. die Nummern, die aus einer Datenbank kommen, sollen so gross wie das jeweilige Fenster angezeigt werden. Die Nummern haben je nach dem 1-4 Stellen.
Die Textausgabe soll sich in Abhängigkeit der String-Länge an das aktuelle Fenster anpassen.
Bei einer Auflösung von 800x600 soll eine 1-stellige Nummer in der max. Größe gezeichnet werden. Wenn dann die Nummern 2-stellig werden halt eben etwas kleiner, damit sie ins Fenster passt. (usw. bei 3 u. 4 Stellen).

Wäre euch dankbar für einen Code-Schnipsel. Versuche seit Tagen weiterzukommen, muss aber passen.
:gruebel:

Giantics 11. Jan 2004 15:30

Re: Textgrösse auf Fenstergrösse anpassen
 
Mit den Funktionen TextWidth und TextHeight von TCanvas kannst du die Textbreite bzw. Höhe eines best. Textes mit eingestellter Schrift bekommen.
d.h. mach eine Schleife, in der du jedes mal die Schriftgröße kleiner machst, und sobald es passt, kannste es zeichen. :spin2:
Also quasi so ungefähr:
Delphi-Quellcode:
for i:=100 downto 1 do
begin
  Canvas.Font.Size:=i;
  if ((Canvas.TextHeight(TheText)<TheHeight) and (Canvas.TextWidth(TheText)<TheWidth)) then
  break;
end;

woki 11. Jan 2004 16:10

Re: Textgrösse auf Fenstergrösse anpassen
 
Hi,

vielleicht hilft Dir ja auch die Methode ScaleBy weiter.

Grüsse
Woki

needatip 11. Jan 2004 16:29

Re: Textgrösse auf Fenstergrösse anpassen
 
Vielen Dank, das ging ja schnell;
Leider bin ich zu blöd um das umzusetzen.
Hab zum Beispiel ein Formular mit einem Label darauf mit dem Text '1234'.

Wäre dankbar für weitere Hilfe.

Giantics 11. Jan 2004 16:45

Re: Textgrösse auf Fenstergrösse anpassen
 
Zitat:

Hab zum Beispiel ein Formular mit einem Label darauf mit dem Text '1234'.
:roll: Da musste gar nicht mehr so viel ändern:
Delphi-Quellcode:
for i:=100 downto 1 do
begin
  Canvas.Font.Size:=i;
  if ((Canvas.TextHeight('1234')<ClientHeight) and (Canvas.TextWidth('1234')<ClientWidth)) then
  break;
end;
Label1.Font.Size:=i;

needatip 11. Jan 2004 16:54

Re: Textgrösse auf Fenstergrösse anpassen
 
Super. Kannst Du mir noch beibringen wie man das ganze dann noch zentriert auf dem Screen ausgibt? - Danke im voraus.

Giantics 11. Jan 2004 17:01

Re: Textgrösse auf Fenstergrösse anpassen
 
Zitat:

Zitat von needatip
Super. Kannst Du mir noch beibringen wie man das ganze dann noch zentriert auf dem Screen ausgibt? - Danke im voraus.

Ich würde sagen so:
Delphi-Quellcode:
  Label1.Left:=(ClientWidth-Label1.Width) div 2;
  Label1.Top:=(ClientHeight-Label1.Height) div 2;

needatip 11. Jan 2004 17:19

Re: Textgrösse auf Fenstergrösse anpassen
 
Zitat:

Zitat von Giantics
Zitat:

Zitat von needatip
Super. Kannst Du mir noch beibringen wie man das ganze dann noch zentriert auf dem Screen ausgibt? - Danke im voraus.

Ich würde sagen so:
Delphi-Quellcode:
  Label1.Left:=(ClientWidth-Label1.Width) div 2;
  Label1.Top:=(ClientHeight-Label1.Height) div 2;

Verstehe das Prinzip, funzt aber noch nicht so ganz.
Habe es so versucht. Mein Fenster 800x600 und dann folgendes probiert.

procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
Label1.Left:=(Form1.ClientWidth-Label1.Width) div 2;
Label1.Top:=(Form1.ClientHeight-Label1.Height) div 2;
for i:=400 downto 1 do
begin
Canvas.Font.Size:=i;
if ((Canvas.TextHeight(Label1.Caption)<Form1.ClientHe ight) and (Canvas.TextWidth(Label1.Caption)<Form1.ClientWidt h)) then
break;
end;
Label1.Font.Size:=i;
end;
end.

Giantics 11. Jan 2004 18:10

Re: Textgrösse auf Fenstergrösse anpassen
 
Top und Left darfste natürlich erst anpassen, nachdem die Größe festgelegt wurde (sonst zentriert er es für die Ausgangsschriftgröße).
Die beiden Zeilen also erst nach "Label1.Font.Size:=i;" einfügen. :zwinker:
Dann sollte es funktionieren.

needatip 11. Jan 2004 19:04

Re: Textgrösse auf Fenstergrösse anpassen
 
Jetzt funktionierts. Hab aber jetzt noch eine Frage mit dem zugewiesenen Font.
Bei 'Font = Arial' schaut es gut aus, nur bei 'Font = Arial Black' schneidet es die Ziffern ab.
Vielleich kannst Du mir auch hier weiterhelfen.
Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz