![]() |
Unterschiedliche DFMs für ein Formula r/ Varianten?
Hallo,
für ein Projekt passe ich gerade eine firmeninterne Software für ein Partnerunternehmen an. Es sind im allgemeinen nur ein paar Details, die ich bisher über Compilerschalter gelöst habe. Nun steht aber an, dass die Oberfläche geändert werden soll (Schriftgröße, daraus folgend aber das gesamte Layout). Gibt es eine Möglichkeit (ggf. per Compilerschalter), verschiedene DFMs einzubinden und zwischen diesen "umzuschalten"? Oder müsste ich das ganze per Hand lösen (jeweils umbenennen per Batch fällt mir jetzt ein..). Danke für jeden hilfreichen Hinweis. |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Hallo, wäre es nicht einfacher das Original abzuleiten und dann das jeweils benötigte entweder per Bedingung oder über einen Compilerschalter zu erzeugen.
|
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Hallo,
mir fallen da Frames ein. |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Mir fällt da ein separater branch im VCS ein.
|
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Oder ein dynamisches Layout, welches sich an die Größe der Komponenten anpasst. (selbstständig Nachbarkomponenten verschiebt)
z.B. TGridPanel und seine neuen Freunde |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Delphi-Quellcode:
Das bindet die DFM-Ressource ein und man kann natürlich auch eigene Ressourcen einbinden.
implementation
{$R *.dfm} (per Code oder über den RessourcenManager des Pojektes = DPROJ) Geladen wird die Ressource dort: (Vcl.Forms.pas bzw. damals Forms.pas) TCustomForm.Create > InitInheritedComponent > InternalReadComponentRes Aber nein, die Funktionen, welche den Namen der Ressource bestimmen (heißt so, wie die Form) sind nicht "einfach" via Override zu ändern, damit du dort dann einen anderen Namen nehmen könntest. Andere Lösung: Vererbung
Delphi-Quellcode:
In dem Nachfahren kann man Komponenten verschieben, ausblenden/einblenden (Visible) und alle anderen Property ändern, wie z.B. Font/Top/Left/Height/...
type
TDeineAbleitung = class(TDeineGrundForm) ... end; Man kann auch neue Komponenten hinzufügen. (nur löschen lassen sich im Nachfahren keine geerbten Komponenten) |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Das Problem ist weniger das Einbinden einer anderen DFM als Resource als das Editieren dieser im Form-Designer.
Insofern würde ich auch den Vererbungs-Ansatz empfehlen. Am besten noch (wenn nicht schon vorhanden) mit zwei separaten Projekt-Dateien, in denen dann nur die benötigen Ableitungen eingebunden sind. |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Für den Formdesigner müssen die Forms/Versionen sowieso in getrennten eigenen Units liegen, da er pro Unit nur einen Designer hat.
|
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Als Anregung: Firemonkey verwaltet ja verschiedene Forms, vermutlich so wie Du das brauchst:
![]() Das sieht dann so aus
Delphi-Quellcode:
Könnte man evtl. in VCL mit IFDEFS nachbilden, oder womöglich geht das bereits ähnlich in VCL ?
{$R *.fmx}
{$R *.Windows.fmx MSWINDOWS} {$R *.iPhone4in.fmx IOS} {$R *.LgXhdpiPh.fmx ANDROID} |
AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
Allerdings hat der FMX-Designer auch die Möglichkeit diese Ansichten zu bearbeiten. Das kann der VCL-Designer nicht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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