![]() |
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: |
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. |
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: |
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) |
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; |
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. |
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.
|
AW: Schriftart ändern für alle Label und Edits in einem Form
Vielen Dank für eure wertvollen Tipps!
|
AW: Schriftart ändern für alle Label und Edits in einem Form
Da passt dieses vielleicht auch:
![]() ![]() |
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.
|
AW: Schriftart ändern für alle Label und Edits in einem Form
Zitat:
|
AW: Schriftart ändern für alle Label und Edits in einem Form
Zitat:
pflege gab's noch viele Fenster mit "MS Sans Serif". Erst kürzlich bin ich von 1920x1080 endlich auf 3K und 4K Monitore umgestiegen - und erst da sah ich, wie verpixelt MS Sans Serif Schrift auf solchen Monitoren aussieht. Da die DFMs von neueren Delphis in TXT vorliegen und ältere binäre DFMs mittels ObjectResourceToText in TXT übersetzt werden können, lässt sich der Font-Austausch mit ein paar wenigen Zeilen Code automatisieren. |
AW: Schriftart ändern für alle Label und Edits in einem Form
Zitat:
Die einkompilierte Ressource ist immernoch Binär. Die DFM wird aber seit ewig als Text gespeichert, aber das ging auch schon früher, wenn man die Einstellung änderte. (gut, D2 noch nicht, aber ab irgendwann bis D7) Wie mehrmals gesagt, haben wir auch hunderte Forms, aber mit sowas garkeine Probleme. Wir nutzen möglichst nur abgeleitete Komponenten und vererbte Forms (von Letzterem muß ich leider abrate, da der unfähige Support schwerwiegende Bugs nicht reparieren will, selbst wenn man ihm die Lösung fertig üergibt) und zur Laufzeit wird nochmal eine zentrale Methode für alle Forms aufgerufen. Es gibt also mehrere zentrale Stellen, wo sich für alle Komponenten, zur Laufzeit oder im Designer, solche Anpassungen mit wenig Code einfügen lassen. |
AW: Schriftart ändern für alle Label und Edits in einem Form
Zitat:
Du schreibst du hättest keine Probleme: Aber du musstest doch sicher auch die frühere Standardschrift MS Sans Serif ersetzen, wegen unschöner Pixelschrift auf 3K+ [KEIN Delphi Problem - liegt am Font]? (Microsoft Sans Serif [<> MS Sans Serif] ist natürlich voll OK). |
AW: Schriftart ändern für alle Label und Edits in einem Form
Ich habe alte Projekte Ultraedit über suchen und ersetzen in Dateien die Schriften in den Text DFM austauschen lassen. Das waren auch hunderte Stellen die geändert werden mussten. Das wollte ich nicht manuell machen. Das erst zur Laufzeit zu machen halte ich nicht für sinnvoll, da ich es in der IDE sehen möchte.
Gelegentlich tausche ich auf diese Weise die Komponenteklassen von Standard Klassen auf abgeleitete inder pas und dfm aus. |
AW: Schriftart ändern für alle Label und Edits in einem Form
Zitat:
Schon bei früheren Änderungen wurde dafür sogar eine globale Kontante eingefügt, welche in den Controls genutzt wird, also war hierfür nur noch EINE Änderung nötig. :angle: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 Uhr. |
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