![]() |
Schriftart,farbe usw. Projektweit festlegen
Guten abend besteht irgendwie die Möglichkeit, dass man die Font Eigenschaften nicht nur für eine Form, sondern für alle Forms des Projektes auf einmal festlegen kann?
|
Re: Schriftart,farbe usw. Projektweit festlegen
Na klar geht das : stelle alles auf einer Musterform ein. Schiebe die in die Objektablage und sage nicht neu -> Form, sondern fische sie bei andere -> ?? raus.
|
Re: Schriftart,farbe usw. Projektweit festlegen
Hallo,
das ist aber eigentlich nur die halbe Antwort. Wie mach ich das wenn schon "100" Forms existieren? Grüsse |
Re: Schriftart,farbe usw. Projektweit festlegen
Zur Laufzeit oder zur Designzeit?
Schau mal in die Hilfe unter ControlCount/Controls. Iteriere alle Formen der Anwendung und dort alle Controls durch, damit sollte es zur Laufzeit geht. Zur Designzeit: such Dir nen guten Texteditor, der in mehreren Dateien parallel suchen&ersetzen kann, öffne alle .dfms im Textformat und ersetze sie dort. |
Re: Schriftart,farbe usw. Projektweit festlegen
Zitat:
Alternativ: Eine Ableitung von TForm erstellen, die gewünschten Werte dort einstellen (evtl. gleich mittels Registry oder INI auch von aussen einstellbar machen) und in allen Projektdateien mittels Global Search & Replace TForm durch deine neue Klasse ersetzen. Neue Fenster dann über die Methode von Hansa. |
Re: Schriftart,farbe usw. Projektweit festlegen
Das lässt sich über eine Form-
![]() Anstatt das Formular wie üblich direkt zu erzeugen wird folgende Procedure aufgerufen:
Delphi-Quellcode:
Beispiel:
procedure GlobalCreateForm(InstanceClass: TComponentClass; var Reference);
var Instance: TComponent; begin Instance := TComponent(InstanceClass.NewInstance); TComponent(Reference) := Instance; try Instance.Create(Application); except TComponent(Reference) := nil; raise; end; if Instance is TForm then with Instance as TForm do begin // Font zentral ändern // man sollte die Einstellung natürlich nicht hart codieren // sondern beim Progstart laden (z.B. aus INI-Datei) Font.Size := 12; end; end;
Delphi-Quellcode:
var
frm : TMyForm; begin GlobalCreateForm(TMyForm, frm); // statt Application.CreateForm() frm.ShowModal; ... |
Re: Schriftart,farbe usw. Projektweit festlegen
@hsg: Hmmm... also der Fontname der Form selber ist bei mir immer drin (zumindest wo ich gerade reingeschaut habe) - der von Controls natürlich nicht, aber da kommt ja ParentFont zur Geltung, sprich da muss nicht zwingend etwas ersetzt werden?
(wobei deine Methode natürlich eleganter ist, das geb ich zu :) ) @shmia: oh je, an der .dpr rumpfuschen, das mag die IDE aber eigentlich gar nicht ;) |
Re: Schriftart,farbe usw. Projektweit festlegen
Zitat:
shmia will ja nicht unbedingt an der .dpr rumpfuschen, obwohl auch das geht. Man muss nur beachten, dass die Applikation am Schluss ein Hauptfenster hat, mit dem die VCL arbeiten kann (z.B. zum Bestimmen wie lange die MessagePump am Leben erhalten werden muss). Alle weiteren Fenster sollte man sowieso nicht über den normalen Automatismus öffnen lassen, sondern es explizit an den geeigneten Stellen im Source-Code selber erledigen (und dort kann man dann anfangen zu streiten, ob man
Delphi-Quellcode:
oder
Application.CreateForm(TMyForm,myFrm)
Delphi-Quellcode:
oder eben shmias Variante benutzt. Wobei diese Variante sich nur zur Laufzeit auswirkt. Braucht man das visuelle Feedback zur Designzeit (z.B. Anordnung von Controls bei Änderung der Schriftart und Größe) funktioniert die Form-Factory nicht.
myForm := TMyForm.Create(self);
Aber wie heisst es so schön: Alle Wege führen nach Rom (ich will aber nach Paris! :zwinker: ) |
Re: Schriftart,farbe usw. Projektweit festlegen
Zitat:
Alle DFMs durchsuchen, ersetzen usw., müsste zwar schon gehen, aber ob dann nicht unliebsame Quereffekte auftreten ? :gruebel: Die DFM sieht dann nicht so aus :
Delphi-Quellcode:
sondern die Objektablage produziert solche Forms :
object TForm1: TForm
Delphi-Quellcode:
Manche sagen deshalb auch "benutze die Form-Inheritance". Setzt die genaue Planung zu spät ein, dann dürften die meisten Vorteile verloren gehen. Zusätzlich müsste nämlich dann noch in allen abgeleiteten Forms in diesem Falle noch das wohl vorhandene Font = entfernt werden, usw. Wäre wohl sehr mühselig. Da bleibt wohl wirklich nur Laufzeit übrig. Oder alles neu und dieses mal richtig machen. :zwinker: Meine Formulare haben fast alle immer einen Vorfahren, weil immer irgendwas dazukommt und sei es nur eine Checkbox. Da die Bedienung aber einheitlich sein soll sind Tastatur- und Mausereignisse allerdings schon sehr früh in der Form-Hierarchie eingebaut. Eigentlich schade, dass solche mächtigen Sachen von kaum einem benutzt werden. Wäre bei mir irgendein Font projektweit umzustellen, das wäre eine Sache von 1 Min. !
inherited frm2: Tfrm
|
Re: Schriftart,farbe usw. Projektweit festlegen
Hansa, man kann sich aber einen kleinen blöden Translator schreiben, der einfach in der DFM die 1.Zeile ändert, sowie in den korrespondierenden PAS-Dateien in die USES-Klausel den Modulnamen der 'Vater-Form' sowie in die Deklaration der Form die Abhängigkeit von der Vaterform ablegen.
Ich hab das schon oft gemacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz