AGB  ·  Datenschutz  ·  Impressum  







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

Delphi DFM - Objektstruktur als Tree laden

Ein Thema von DataCool · begonnen am 9. Sep 2010 · letzter Beitrag vom 9. Sep 2010
Antwort Antwort
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 08:08
Hi Leute,

ich würde gerne die Objekte inkl. Struktur(vielleicht auch noch Properties) aus einem Delphi Forrmular(*.dfm)
laden und diese in einem Tree(ob normal oder VST) ist mir egal darstellen.
Das ganze kann ich jetzt natürlich "von Hand" machen, aber ich bin mir fast sicher das bei Delphi "hausinterne"
Mittel gibt?!

Kann mich mal bitte jemand in die richtige Richtung schubsen,

Danke Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 08:30
AFAIK gibts da was fertiges bei LMD und wenn mich nicht alles täuscht auch in der JEDI.

Geht aber soweit ich weiß nicht über die DFM an sich sondern über die laufende Formularinstanz.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 08:42
Hi Bernhard,

danke für den Tipp, werde in der Richtung mal schauen.
Allerdings weiß ich nicht ob der Weg über die laufende Formularinstanz,
beim meinem Ziel zum Erfolg führt.
Ich habe vor ein Projekt mit > 1 Million Zeilen(> 200 Forms inkl. Formverebung),
verwendete TMS Menus/Buttons mit den Gegenstücken von DevExpress auszutauschen.

Falls jemand eine Idee hat immer her damit

Greetz Data

P.S.: Bei einer laufenden Forminstanz könnte ich auch recht einfach alle Controls+Childs von TForm durchlaufen
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#4

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 08:46
Es gibt einen Parser dafür, aber der wird dir nicht gefallen,
da dieser zwar die Resource einließt, aber daraus nur eine Form generiert (diese muß man allerdings nicht anzeigen),
welche du dann entweder über genannte Sachen auslesen kannst oder du nutzt einfach die RTTI und machst es selber.

Delphi-Referenz durchsuchenTStream.ReadComponent
dafür benötigt wird (vermutlich) die binäre Resource

Testen ob Text oder Binär geht über Delphi-Referenz durchsuchenClasses.TestStreamFormat
und falls nötig dann erstmal den Stream umwandeln Delphi-Referenz durchsuchenClasses.ObjectTextToBinary.

Nja, dann hast du die Form und mußt sie nur noch zerlegen.



PS: Schreiben ginge über Delphi-Referenz durchsuchenTStream.WriteComponent und eventuell noch Delphi-Referenz durchsuchenClasses.ObjectResourceToText.


[edit]
Dann heißt es wohl selber parsen.
Delphi-Referenz durchsuchenClasses.TestStreamFormat und Delphi-Referenz durchsuchenClasses.ObjectResourceToText kannst'e ja dennoch nutzen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Sep 2010 um 09:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 08:58
@himitsu:
Das hört sich vielversprechend an, werde ich mir gleich mal genauer ansehen.

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 09:42
Ich habe vor ein Projekt mit > 1 Million Zeilen(> 200 Forms inkl. Formverebung),
verwendete TMS Menus/Buttons mit den Gegenstücken von DevExpress auszutauschen.

Falls jemand eine Idee hat immer her damit
Meine erster Gedanke wäre, die GExperts Funktion 'Replace Components' zu verwenden (falls alte und neue Komponente sich nicht zu sehr unterscheiden).
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Delphi DFM - Objektstruktur als Tree laden -> Objekte austauschen

  Alt 9. Sep 2010, 09:58
Es gibt ein kleines Tool JVCLConvert, welches man innerhalb der jvcl im Ordner devtools findet. Man kann eigene "Ersetzungsmasken" definieren und damit ganze Ordner, auch mehrere, auf einmal umstellen. Für einen Großteil der in die jvcl aufgenommenen Komponenten sind schon fertige dabei. Haben das seinerzeit erfolgreich eingesetzt um die Reste der RXLibrary aus unserem Projekt zu entfernen. Voraussetzung ist allerdings, dass die Formulare als Text-DFM vorliegen.

Und klar - erst mal in einem Spielordner anwenden
Carsten

Geändert von DelphiBandit ( 9. Sep 2010 um 10:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Delphi DFM - Objektstruktur als Tree laden

  Alt 9. Sep 2010, 11:10
Meine erster Gedanke wäre, die GExperts Funktion 'Replace Components' zu verwenden (falls alte und neue Komponente sich nicht zu sehr unterscheiden).
Leider gibt es bei den beiden Komponenten durchaus einige Unterschiede die teilweise auch Änderungen in den Pas-Dateien erfordern,
z.B. ist die Eigenschaft .Visible bei TMS Boolean und bei DevExpress wie folgt definiert:

TdxBarItemVisible = (ivNever, ivInCustomizing, ivAlways);

Außerdem muss ich die ToolButtons(TMS) einer Toolbar(TMS) durchlaufen und teilweise in Abhängigkeit, ob den Toolbuttons ein Popup zugewiesen ist oder nicht,
diesen mit unterschiedlichen DevExpress-Toolbuttons auszutauschen.

Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  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 08:01 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