Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Schriftart ändern für alle Label und Edits in einem Form (https://www.delphipraxis.net/211972-schriftart-aendern-fuer-alle-label-und-edits-einem-form.html)

enigma 28. Nov 2022 08:31

Schriftart ändern für alle Label und Edits in einem Form
 
Hallo,

ich habe eine kurze Frage:
Zu einem Form (TfrmMain = class(TForm)) möchte ich die Schriftart für alle enthaltenen Labels und Edits ändern.
Gibt es eine andere Möglichkeit, als dies im Quellcode für alle Labels extra einzufügen,
z.B. lblProjektName.Font.Name := 'Calibri'; (ist bisher 'Arial')
oder im Objektinspektor die einzelnen Labels anzupassen?

In TfrmMain.FormCreate Font.Name := 'Calibri'; einzufügen, bringt leider nichts.

Ich freue mich über jeden Tipp :wink:

BerndS 28. Nov 2022 08:39

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Wenn die Labels und Edits ParentFont = True gesetzt habe, sollte das Ändern im Form automatisch auf die Labels und Edits übertragen werden.
Du kannst aber auch die DFM als Text anzeigen und hier per Suchen und Ersetzen alles auf eine andere Schriftart umstellen.

enigma 28. Nov 2022 16:31

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Hallo Bernd,

danke für deine Antwort.
Allerdings klappt ParentFont nicht, da die Labels in Groupboxen liegen, die Font.Style Bold haben.

Die Anzeige als Text bringt leider auch nichts, da dort keine Wertzuweisung Font.Name := 'Arial' erfolgt, sondern
der Standard MS Sans Serif vorliegt.

Fällt euch noch etwas anderes ein?
Würde mich freuen :wink:

himitsu 28. Nov 2022 16:48

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Im FormDesigner ändern, nicht erst im OnCreate.
Danach kannst dann auch noch alles aus der DFM werfen, was falsch ist.


Zur Runtime:
Bleibt dir also nichts Anderes übrig, als rekursiv über alle Controls und UnterControls der Form zu laufen und es überall zu setzen, wo ParentFont=False.


Ja, es ist blöd, dass ParentFort immer alles nimmt und kein ENUM ist, welcher angibt, was vom Font nicht vererbt werden soll. (Name, Size und Style)

Frickler 28. Nov 2022 16:52

AW: Schriftart ändern für alle Label und Edits in einem Form
 
So mache ich das zur Laufzeit:

Code:
type
  TControlTrick = class(TControl) public property Font; end;

[...]

for i:=0 to frm.ComponentCount-1 do begin
  if frm.Components[i] is TControl then begin
    if TControlTrick(frm.Components[i]).Font.Name = OldFont then
      TControlTrick(frm.Components[i]).Font.Name := NewFont;
  end;
end;

himitsu 28. Nov 2022 16:58

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Delphi-Quellcode:
  TControlTrick = class(TControl) end;

oder
Delphi-Quellcode:
  TControlTrick = class(TControl);

reicht, da du so bereits Zugriff auf Alles bekommst. (auch protected, da Deklaration in selber/aktueller Unit)

Aber ist auch unötig, da man sich für Font auch einfach irgendwas nehmen kann, wo es bereits Public gemacht wurde, wie z.B. TLabel oder TEdit, anstatt TControlTrick.

zeras 28. Nov 2022 20:00

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Du markierst die Objekte und im Objektinspektor bleiben die Eigenschaften übrig, die die Objekte gemeinsam haben. Dann einfach die Schriftart ändern.

enigma 2. Dez 2022 12:52

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Vielen Dank für eure wertvollen Tipps!

TigerLilly 3. Dez 2022 11:08

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Da passt dieses vielleicht auch:
http://www.danieleteti.it/post/duck-typing-in-delphi/
http://arcana.squarespace.com/duckduckdelphi

Rolf Frei 3. Dez 2022 16:34

AW: Schriftart ändern für alle Label und Edits in einem Form
 
Geht es um die Fonts zur Runtime, also vom Kunden selber angegebene Fonts oder geht es um einmal in der IDE z.B. MS SansSerif auf Segoe UI zu ändern. Wenn du deine Form in der IDE umstellen willst, ist es am einfachsten die Form zu öffnen und dann Alt-F12 zu drücken. Im Sourcecode der DFM kannst du nun einfach nach dem alten Fontnamen suchen und diesen mit dem neuen ersetzen. Danach einfach wieder Alt-F12 und alles ist erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.
Seite 1 von 2  1 2      

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