Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Unterschiedliche DFMs für ein Formula r/ Varianten? (https://www.delphipraxis.net/203053-unterschiedliche-dfms-fuer-ein-formula-r-varianten.html)

sonicus83 8. Jan 2020 12:48

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.

BerndS 8. Jan 2020 12:53

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.

hoika 8. Jan 2020 12:57

AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
 
Hallo,
mir fallen da Frames ein.

freimatz 8. Jan 2020 13:15

AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
 
Mir fällt da ein separater branch im VCS ein.

himitsu 8. Jan 2020 13:16

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

himitsu 8. Jan 2020 13:31

AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
 
Delphi-Quellcode:
implementation

{$R *.dfm}
Das bindet die DFM-Ressource ein und man kann natürlich auch eigene Ressourcen einbinden.
(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:
type
  TDeineAbleitung = class(TDeineGrundForm)
    ...
  end;
In dem Nachfahren kann man Komponenten verschieben, ausblenden/einblenden (Visible) und alle anderen Property ändern, wie z.B. Font/Top/Left/Height/...
Man kann auch neue Komponenten hinzufügen. (nur löschen lassen sich im Nachfahren keine geerbten Komponenten)

Uwe Raabe 8. Jan 2020 13:36

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.

himitsu 8. Jan 2020 13:41

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.

Rollo62 9. Jan 2020 09:00

AW: Unterschiedliche DFMs für ein Formula r/ Varianten?
 
Als Anregung: Firemonkey verwaltet ja verschiedene Forms, vermutlich so wie Du das brauchst:
http://docwiki.embarcadero.com/RADSt...Device_Project

Das sieht dann so aus
Delphi-Quellcode:
{$R *.fmx}
{$R *.Windows.fmx MSWINDOWS}
{$R *.iPhone4in.fmx IOS}
{$R *.LgXhdpiPh.fmx ANDROID}
Könnte man evtl. in VCL mit IFDEFS nachbilden, oder womöglich geht das bereits ähnlich in VCL ?

Uwe Raabe 9. Jan 2020 10:02

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 12:26 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