AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tool für "Form to Code" verfügbar?

Ein Thema von Harry Stahl · begonnen am 10. Dez 2017 · letzter Beitrag vom 16. Jul 2018
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#1

Tool für "Form to Code" verfügbar?

  Alt 10. Dez 2017, 19:20
Die meisten von Euch kennen sicher die GExperts, mit denen man Komponenten auswählen kann und dann den Befehl "Components to Code" aufrufen kann und man erhält dann die Variablen und den Code welcher die Komponenten zur Laufzeit erzeugt und mit den Vorgaben belegt.

Gibt es eigentlich ein Tool (erst mal für die VCL), welches auch eine ganze Form so "umwandelt", das alles zur Laufzeit erzeugt wird? Also auch Einstellungen der Form, die Zuordnungen der Eventhandler (Form-Prozeduren) zu den "OnEvents" vornimmt, etc.

Ich frage das deshalb, weil ich überlege, bestimmte (einfache) Forms, die ich immer wieder in vielen Projekten benötige, dynamisch zur Laufzeit erstellen zu lassen. Das hätte den Vorteil, dass ich diese dann in allen Delphi-Versionen verwenden könnte und nicht jedes mal, wenn es eine neue Delphi-Version gibt, einen neuen Ordner erstellen muss, wo diese globalen Forms für das neue Delphi reinkommen (denn ältere Delphis können oft die Fassungen der vom neuen Delphi übernommenen Form nicht lesen, weil es z.B. neue Eigenschaften gibt.) Das hätte auch noch einen weiteren Vorteil, wenn ich kleine Erweiterungen oder Fehlerkorrekturen bei diesen globalen Forms mache, dann könnten davon auch direkt noch Projekte profitieren, die ich derzeit noch mit älteren Delphis erstelle. Müsste also nur an einer Stelle was ändern (evtl. könnte man diese Forms mit ein paar IFDEF'S auch direkt so anpassen, dass man sie auch für FMX verwenden kann).

Allerdings würde ich mir mit so einer Umstellung nicht so viel Arbeit machen wollen, daher wäre es toll, wenn es so ein Tool schon gäbe...
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Tool für "Form to Code" verfügbar?

  Alt 14. Jul 2018, 20:55
Frag noch mal nach, ob da sich evtl. in der Zwischenzeit was getan hat...
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Tool für "Form to Code" verfügbar?

  Alt 14. Jul 2018, 21:01
Nach so etwas hatte ich auch schon einmal geschaut, wenn auch aus anderer Motivation. Aber so komplett scheint es das nicht zu geben.

Bezüglich der verschiedenen Versionen:
Damit hatte ich bisher keine Probleme, denn neuere Versionen von Delphi können ältere DFMs ja lesen und ergänzen dann nur ggf. Eigenschaften. Die übernehme ich dann aber schlicht nicht ins Repository, wenn ein Quelltext für mehrere Versionen funktionieren soll.

Denn ich halte es für selbstverständlich, dass man beim Einchecken jede einzelne Änderung prüft, ob nun im Quelltext oder in der Formulardefinition. Was ich nicht absichtlich geändert habe, fliegt dabei raus.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Tool für "Form to Code" verfügbar?

  Alt 14. Jul 2018, 21:23

Bezüglich der verschiedenen Versionen:
Damit hatte ich bisher keine Probleme, denn neuere Versionen von Delphi können ältere DFMs ja lesen und ergänzen dann nur ggf. Eigenschaften. Die übernehme ich dann aber schlicht nicht ins Repository, wenn ein Quelltext für mehrere Versionen funktionieren soll.
Ich möchte damit letztlich per Code eine "globale" Form erzeugen, die dann unter allen Delphi-Versionen läuft. Zwar übernehmen neuere Delphi-Formulare die alten, aber für ältere Delphi-Versionen gibt es bestimmte Komponenten noch nicht, da muss ich die Lösung dann anders gestalten. Ich möchte aber nicht unterschiedliche Formulare für unterschiedliche Delphi-Versionen erzeugen / verwalten, sondern eben zur Laufzeit soll entsprechend der vorliegenden Delphi-Version die Erzeugung gesteuert werdne.

Gedacht ist hier mal an eine kommerziell vertriebene Lösung, wo Entwickler mit unterschiedlichen Delphi-Versionen diese Form nutzen können.

Ich will letztlich nur eine Unit erzeugen, die selber zur Laufzeit das Formular erstellt.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Tool für "Form to Code" verfügbar?

  Alt 14. Jul 2018, 22:30
Ist das was Du vor hast nicht Sinn und Zweck einer .dll Datei? Helfer die man immer mal braucht oder gar ganze Formulare, geht beides.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Tool für "Form to Code" verfügbar?

  Alt 14. Jul 2018, 23:15
Nein, DLL hilft nicht.

Weder befreit es mich davon, verschiedene Formulare / DLL's zu erzeugen, auch ist es keine Lösung, da es um eine Form geht, die zunächst unter FMX zur Laufzeit erstellt werden soll. Die soll von den Entwicklern einfach in das jeweilige Projekt eingebunden werden und dann sowohl unter Windows / MAC / und Linux (mit FMXLinux) zur Verfügung stehen (aber in einem 2. Schritt auch für VCL-Programme).

Es ist ein Ersatz für die .chm- HIlfe, die ja nur unter VCL/Windows zur Verfügung steht. Ich habe eine Lösung entwickelt, wo ein Management-Programm eine Hilfe-Datei erzeugt und diese Hilfe in diesem "globalen" Formular angezeigt werden soll.

Da möchte ich aber nicht nur das aktuelle Delphi 10.2 unterstützen, sondern auch ältere Delphi-Versionen und auch VCL (Windows geht mir da gehörig auf den Nerv mit .chm-Dateien, die nicht angezeigt werden können, weil sie auf einem Netzwerklaufwerk liegen).

Anliegend mal ein Screenshot (unter Linux) zur Verdeutlichung, worum es geht. Die Form ist jetzt nicht so Komplex, aber ein paar Stunden würde ich sicher schon dran sitzen, wenn ich die Erzeugung der Komponenten manuell programmieren müsste...
Miniaturansicht angehängter Grafiken
hilfe.jpg  
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
599 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Tool für "Form to Code" verfügbar?

  Alt 16. Jul 2018, 11:02
Vor dem Problem habe ich auch schon gestanden. Ich habe mir dann was selbst gestrickt auf Basis von "CreateMessageDialog()" aus Dialogs.pas, da wird ja ein Formular komplett aus Code generiert. Zusätzliche Komponenten generiert mir "components to code" von den GExperts. Das ist leider ein mordsmäßiges Gebastel, bis das schön aussieht....

Es gibt auch ein Programm, welches ganze Formulare in Code verwandelt. Aber das ist ewig veraltet:
http://www.felix-colibri.com/papers/...fm_parser.html
http://www.felix-colibri.com/papers/...t_to_code.html
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Tool für "Form to Code" verfügbar?

  Alt 16. Jul 2018, 13:04
Hallo,
also mit Help&Manual erzeugen wir aus einer Quelle CHM- und PDF-Dateien.
Die PDF kann man schön mit QuickPDF anzeigen.
Heiko
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Tool für "Form to Code" verfügbar?

  Alt 16. Jul 2018, 13:12
Hallo,
also mit Help&Manual erzeugen wir aus einer Quelle CHM- und PDF-Dateien.
Die PDF kann man schön mit QuickPDF anzeigen.
Falscher Thread?
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Tool für "Form to Code" verfügbar?

  Alt 16. Jul 2018, 16:29
Dergleichen habe ich noch nichts gefunden.

Ich erzeuge Forms beinahe nur programmatisch bis auf die von dir angesprochenen komplexen welche zumeist sehr einmalig sind und sowieso in einer anderen Technologie anderes aufgebaut. Unsere Motivation war ein wenig anders gelagert.

Leicht ist das Unterfangen nicht.

Du weißt bei manchen Properties den Initialiserungsstatus bspw. nicht, da der erst im Konstruktor gesetzt wird. Deswegen musst du alle Property Values rausschreiben.

Damit könntest du zwar jene Properties die du nicht setzen kannst überlesen und die noch nicht verfügbaren auf Default lassen. Das entspricht in etwa dem manuellen Implementieren. Die read only muss man noch ignorieren und dann musst du deine Komponenten so aufgebaut, der innere Status mit dem abgespeicherten Property Wert gegebenenfalls zusammenstimmt.

Ich hatte mir ganz schlicht einen Knopf gebaut der nicht visible ist an sich und der einfach den Status aller erzeugten Komponenten rausschreibt auf dem Weg habe ich mir zumindest mal eine Quick Shot vom Gröbsten gemacht. Besser als zur Laufzeit wirst du sowieso nicht. Das war der Code für den Constructor oder die erste Implementierung.

Der nächste Affenzirkus folgt sofort, dass du Marken im Constructor bräuchtest die nicht überschrieben werden dürfen usw. im Falle einer Änderung. Soweit habe ich mir die Sache nicht angetan.

[Edit] Das war ganze passierte vor der Zeit vor Rtti. Wobei ich nicht weiß ob du private members mit Hilfe von Rtti kannst setzen. Mir hat damals Ableiten nicht geholfen. Damit hätte wir müssen ein WidgetSet und soetwas interessiert mich nicht. Ein Komponente in Ehren hie und da ...

Selbst datengetrieben hat uns unter Winforms (.net 2.0) bewogen von der Rectangle weg jedes Control zu bauen. Das macht nur Sinn, wenn du die Fähigkeiten der Anwendung so aufbläst, dass sie mit Contexten, Views im Hintergrund usw... kann arbeiten. Aber du verlierst die gesamte Toolingfähigkeit. Alles hinter einer pragmatischen Lösung wächst sich schnell aus. Nichts gegen das Framework welches meine Cos damals bauten, das muss dann schon Server Umzug (auf eine andere Datenbank den Zugriff generieren usw...). Da hat bei Planungs- und Optimierungssystemen und durch den Einsatz in 5 gleichartigen Projekten Sinn gemacht. Halbe Lösungen bei Wiederverwendung verzögern das Auftreten von Problemen nur.


Geändert von MichaelT (16. Jul 2018 um 16:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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