![]() |
Properties von Forms und Komponenten mit vorgegebenen Werten
Ursprünglich hatte ich ein Kommetar im Thread
![]() Noch mal zum Verlauf meiner Frage: Zitat:
Zitat:
So jetzt geht's weiter: Die Objektablage kenne und ist mir wieder in Erinnerung gerufen. Die Objektablage kann aber nur Forms als Vorlage speichern. Ich hätte das gerne auch für Komponenten wie TPanel. Hier wollte ich nun Abschicken. Habe mir aber gedacht, daß ich die Suche benutze und siehe da. Ich habe folgendes gefunden. ![]() Einge richtig schöne Sache. Nun bin ich glücklich. Kosmetisch gesehen, wünsche ich mir diesen Punkt auf ein popup-Menü, wenn ich eine Komponente rechts anklicke. |
Re: Properties von Forms und Komponenten mit vorgegebenen We
Hallo Gerd,
du könntest auch einen Blick auf die ![]() ![]() Gruß Hawkeye |
Re: Properties von Forms und Komponenten mit vorgegebenen We
Es gibt auch noch eine sehr interessante Möglichkeit diese Properties vorzubelegen: mit einer
![]() Üblichweise wird ein Formular ja so erzeugt:
Delphi-Quellcode:
oder alternativ auch so:
form3 := TForm3.Create(nil);
Delphi-Quellcode:
Das ändern wir jetzt, indem wird das Formular nicht selbst direkt erzeugen, sondern einer anderen Klasse den Auftrag geben, für uns das Formular zu erzeugen:
Application.CreateForm(TForm4, form4);
Delphi-Quellcode:
Die Fabrikmethode erlaubt es, bestimmte Dinge wie z.B. Fontgrösse global für die gesamte Anwendung zu ändern.
TAppFormFactory.CreateForm(TForm5, form5);
Es gibt allerdings die Einschränkung, dass das nur für Formulare geht, die dynamisch zur Programmlaufzeit erzeugt werden. Bei den Formularen, die in der Projektdatei automatisch erzeut werden, geht das leider nicht, da die Erzeugung mit Application.CreateForm stattfindet und sich die IDE da ungern hineinreden lässt. Die Klasse TAppFormFactory sieht z.B. so aus:
Delphi-Quellcode:
Man kann das jetzt noch ausbauen, indem man nicht nur eine FabrikMethode (hier: CreateForm) sondern verschiedene auf ihren jeweiligen Einsatzzweck zugeschnittene Methoden (z.B. CreateModalForm) verwendet.
type
TAppFormFactory=class(TObject) protected class procedure ModifyComponent(comp:TComponent); public class procedure CreateForm(InstanceClass: TComponentClass; var Reference); end; implementation class procedure TAppFormFactory.ModifyComponent(comp:TComponent); begin if Comp is TForm then begin TForm(Comp).Position := poScreenCenter; // default Form Position end else if Comp is TLabel then begin // Fontname und Grösse wurden beim Programmstart aus einer Ini-Datei gelesen // und in globalen Variablen abgelegt TLabel(Comp).Font.Name := globalLabelFont; TLabel(Comp).Font.Size := globalLabelSize; end; for i := 0 to Comp.ComponentCount-1 do ModifyComponent(comp.Components[i]) // rekursiver Aufruf für alle untergeordneten Komponenten end; class procedure TAppFormFactory.CreateForm(InstanceClass: TComponentClass; var Reference); begin Application.CreateForm(InstanceClass, Reference); // Formular erzeugen ModifyComponent(TComponent(Reference)); // Eigenschaften anpassen {$IFDEF DEBUG} with (Reference as TForm) do Caption := Classname+ '-' + Caption; // jedes Formular trägt seinen Klassenname in der Caption {$ENDIF} end; Ausserdem sollte man eine Basisklasse mit virtuellen Methoden haben und die Formfactory-Klasse davon ableiten. So kann man je nach Einsatzzweck verschiedene FormFactory-Klassen verwenden. |
Re: Properties von Forms und Komponenten mit vorgegebenen We
Zitat:
Mir ging es aber hauptsächlich um Vorbelegung von Properties von Komponenten, wenn die diese auf's Form draufziehe. Danach sollten die Properties dann wiederum einzeln einstellbar sein. Gerd |
Re: Properties von Forms und Komponenten mit vorgegebenen We
Zitat:
Das war genau das, was ich gesucht habe. Schon zig Jahre auf dem Computer installiert, aber nie gesehen :-( Gerd |
Re: Properties von Forms und Komponenten mit vorgegebenen We
im CnPack gibts auch noch sowas, nennt sich da "Property Corrector"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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