Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   ParentFont und für embedded Forms (https://www.delphipraxis.net/175521-parentfont-und-fuer-embedded-forms.html)

noisy_master 27. Jun 2013 21:25

ParentFont und für embedded Forms
 
Hallo ihr Wissenden,

ich habe mal wieder ein nettes kleines Problem: Ich habe mir ein "Framework", dass ein Panel beinhaltet auf dem in Abhängigkeit von ein paar Buttons verschiedene Forms angezeigt werden. Die verschiedenen Forms werden "ganz normal" erzeugt: Application.CreateForm(TFormAbc, FormAbs);
Im onCreate der Forms wird der Parent umgehängt auf das Panel meines "FrameWorks"(Das ganze mache ich, damit ich in den einzelnen Forms recht komplexe Operationen ausführen kann und die Forms sozusagen einfach in mein Framework als Plugin einhängen kann)(die Erklärung hier nur, damit keine Fragen aufkommen warum ich das mache).

Nun meine Frage: ich habe alle Komponenten, Forms, Panels etc auf ParentFont:= True gesetzt(natürlich bis auf das meiner "mainform" mit meinem MasterPanel(hat auch parentForm:=true).
Nach dem "umhängen" des Parents aller "PluginForms" auf mein masterpanel wird der Font aber nicht an den des MasterPanels angepasst.

Was mache ich falsch, bzw wie mache ich es richtig?

Danke für eure Antworten schon mal vorab!

Volker Z. 28. Jun 2013 00:58

AW: ParentFont und für embedded Forms
 
Hallo,

es nützt Dir u. U. nichts nur die Eigenschaft
Delphi-Quellcode:
ParentFont := True
der "PluginForms" zu setzen. Die OH sagt dazu:
Zitat:

Ist die Eigenschaft ParentFont eines Formulars True, wird die Standardschriftart verwendet.
Mit Standartschriftart ist allerdings nicht die Schriftart des übergeordneten Steuerelements (in Deinem Fall des Panels) gemeint, sondern
Delphi-Quellcode:
Application.DefaultFont
bzw.
Delphi-Quellcode:
DefFontData
aus der Unit Graphics bei älteren Delphi Versionen.

Du kannst es so versuchen (wenn Application.DefaultFont existiert):
Delphi-Quellcode:
// auf den PluginForms die Eigenschaft ParentFont := True setzen und Parent "umhängen" wie gehabt. In Deinem MainForm
procedure TMainForm.Create (Sender : TObject);
begin
  Application.DefaultFont := Font
end;
oder (wenn Du eine ältere Delphiverison hast)
Delphi-Quellcode:
// ParentFont kannst Du dann vergessen. Du musst schon den Font explizit zuweisen
// Du wirst eine ähnliche Konstruktion haben über den Du Dein Parent übergibst
procedure TPluginForm.FormCreate(Sender: TObject);
begin
  Parent := MainForm.Panel1;
  Font  := MainForm.Font // oder MainForm.Panel1.Font
end;
Gruß

noisy_master 28. Jun 2013 18:09

AW: ParentFont und für embedded Forms
 
Hallo Volker,

Danke für deine Antwort. Bei D2006 scheint es leider den Application.DefaultFont nicht zu geben. Daher bleibt mir wohl nichts anderes als die 2. Lösung über. Schade ist halt mehr Aufwand(und damit natürlich Fehleranfälliger).

Aber dennoch ganz herzlichen Dank!

Gruß
Dirk

noisy_master 2. Jul 2013 10:04

AW: ParentFont und für embedded Forms
 
Hallo Volker,

nach ein paar Tagen weiteren Forschens hat sich ergeben das das mit DefFontData auch unter D2006 funktioniert...

Danke nochmals für die Tips

Gruß
Dirk


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