Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Form ohne dfm / fmx - Datei erstellen (https://www.delphipraxis.net/197054-form-ohne-dfm-fmx-datei-erstellen.html)

Harry Stahl 14. Jul 2018 20:11

Form ohne dfm / fmx - Datei erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wie kann man eine Form ohne Formdatei (.dfm / .fmx) erstellen?

Wenn ich unter FMX

Delphi-Quellcode:
F_Help := TCommonCustomForm.Create(Application);
aufrufe, kann ich die Form dann zwar anzeigen, aber zur Laufzeit eingefügte Komponenten werden nicht angezeigt.

Das gleiche würde ich gerne auch für ein VCL-Formular machen.

Anliegend demo.

KodeZwerg 14. Jul 2018 21:24

AW: Form ohne dfm / fmx - Datei erstellen
 
Schau Dir mal von Moderator Luckie die non-Vcl Sachen an, das kannst Du auch aus Vcl aufrufen um was auch immer zu erstellen.

Hilft Dir das oder redest Du von einer Vcl Form die man dynamisch erzeugt und mit dynamisch erzeugten Komponenten bestückt?

Machbar ist beides.

Meine erste Idee für Vcl Blanko Form wäre tatsächlich eine Blanko-Form ins Projekt einbinden, von mir aus als Resource und die in so viele neue Kopien ableiten wie Du benötigst, was auf der Blanko-Form drinnen ist musst Du dann halt zur Laufzeit bestimmen.
Manche Komponenten benötigen gewisse Grundwerte um überhaupt zu funktionieren, da muss man sich halt Stück für Stück ranpirschen bis man es perfekt hat, Control für Control, kann dauern aber wenn man die Grundprinzipien einmal drinnen halt klappt es recht gut (das gilt für beides Vcl und auch non-Vcl).

Ps: Nachteil von sowas, Du musst jedes kleine Detail selber einpflegen, vor allem die Ereignisse mit einander verknüpfen ....

Harry Stahl 14. Jul 2018 22:27

AW: Form ohne dfm / fmx - Datei erstellen
 
Zitat:

Zitat von KodeZwerg (Beitrag 1407289)
Hilft Dir das oder redest Du von einer Vcl Form die man dynamisch erzeugt und mit dynamisch erzeugten Komponenten bestückt?

Ps: Nachteil von sowas, Du musst jedes kleine Detail selber einpflegen, vor allem die Ereignisse mit einander verknüpfen ....

Ja, genau darum geht es. Deswegen würde ich gerne eine schon bestehende Form "umwandeln" lassen, damit ich das nicht alles selber manuell machen muss (siehe hier der andere Thread, der damit in Verbindung steht).

himitsu 15. Jul 2018 01:39

AW: Form ohne dfm / fmx - Datei erstellen
 
Es ist ganz einfach, bei Allem, was ein TForm-Nachfahre ist, wird immer versucht eine gleichnamige DFM-Ressource zu laden.

Aber man hätte hier auch auf eine Idee kommen können: Nachsehen was es noch für Konstruktoren gibt. :roll:
Hier im Forum suchenTCustomForm.CreateNew

Gut, es wäre auch gegangen, wenn du einfach eine leere Ressource genommen hättest. :freak:
Delphi-Quellcode:
object CommonCustomForm: TCommonCustomForm
end
Oder nicht TForm, sondern TCustomForm als Vorfahre verwenden. (aber ich glaube die Prüfung+DFMLaden war als
Delphi-Quellcode:
ClassType <> TForm
im TCustomForm und nicht im TForm :stupid:)

Harry Stahl 15. Jul 2018 13:40

AW: Form ohne dfm / fmx - Datei erstellen
 
OK, Danke.

Mit

Delphi-Quellcode:
TForm.CreateNew(Application);
funktioniert es, man benötigt keine DFM /FMX Datei.

Cool, so kann ich nun eine Unit verwenden, die auf allen Delphi-Versionen ab Delphi 5 bis heute sowohl unter VCL als auch unter FMX funktioniert, ohne dass ich - wie sonst mit dem Formular - Probleme mit irgendwelchen unterschiedlichen / fehlenden Properties bekomme.

Das kann man natürlich nur mit "Forms" mit wenigen Komponenten und Events machen, sonst ist es schon unverhältnismäßig aufwendig, das alles zu Fuß zu programmieren, denn man muss schon einige IFDEFS verwenden...

jziersch 16. Jul 2018 05:37

AW: Form ohne dfm / fmx - Datei erstellen
 
Zitat:

Zitat von Harry Stahl (Beitrag 1407329)
Das kann man natürlich nur mit "Forms" mit wenigen Komponenten und Events machen, sonst ist es schon unverhältnismäßig aufwendig, das alles zu Fuß zu programmieren, denn man muss schon einige IFDEFS verwenden...

Vielleicht ist GExperts ( http://www.gexperts.org/tour/components_to_code.html ) hier hilfreich. Es erstellt Dir den code welcher für bestimmte Komponenten aufzurufen wäre. Im übrigen: Bei manchen Komponenten muss man "Loaded" aufrufen, sonst funktionieren sie nicht.

Es gibt übrigens noch "CreatedParented" - damit kann man ein Formular an ein anderes Fensterhandle anbinden. Das fand ich öfters sehr praktisch.

Viele Grüsse,
Julian


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