AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DFM-Datei in anderem Programm als Vorschau anzeigen

DFM-Datei in anderem Programm als Vorschau anzeigen

Ein Thema von Harry Stahl · begonnen am 16. Jul 2015 · letzter Beitrag vom 28. Feb 2016
Antwort Antwort
Seite 2 von 6     12 34     Letzte » 
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.646 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 17. Jul 2015, 13:42
Ich könnte dann die DFM meinem Designer geben, der dann seine schlauen Kommentare hinterlässt
Screenshot? Da gibt es Viewer en masse und sogar Programme (z.B. SnagIt), mit denen man direkt darauf rummalen kann. Zusätzlich kann man die Screenshots auch noch für die Anwender-Dokumentation verwenden.
Sorry, ich hätte kein Bock, nach jeder Änderung einen Screenshot zu machen und zurück zum Designer zu schicken. So drück ich aus Knöpfchen und hinten fällt eine fertige EXE mit allen Formularen inkl integrierten Kommentarsystem heraus. Da kann der Designer direkt in der Anwendung seinen Senf zur DFM dazu geben, das wird in einer DB gespeichert und kann von mir gegen-Kommentiert werden.

Wenn ich Zeit habe, ich wollte das Ding eh OpenSource stellen.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.471 Beiträge
 
Delphi 12 Athens
 
#12

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 17. Jul 2015, 13:48
So drück ich aus Knöpfchen und hinten fällt eine fertige EXE mit allen Formularen inkl integrierten Kommentarsystem heraus. Da kann der Designer direkt in der Anwendung seinen Senf zur DFM dazu geben, das wird in einer DB gespeichert und kann von mir gegen-Kommentiert werden.
Verstehe, dann braucht man natürlich auch kein Delphi, aber auch keinen DFM-Viewer, da die ja schon in der EXE drin sind und nicht als einzelne Dateien auf der Platte rumliegen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 17. Jul 2015, 15:29
Ich hab das so gelöst, das ich mir automatisch zu allen DFM-Dateien ein riesen-großes Projekt erzeugen lasse (ohne die Logik, nur das Benötigte zur Darstellung der DFM), das dann in eine Monster-EXE kompiliere und dann schön darin über eine Listbox mir alle Formulare anschauen kann. Das sollte auch mit den Frames klappen, hab ich aber noch nicht getestet, weil ich solche Vererbungen nicht nutze.
OK, das ist natürlich auch ein interessanter Weg, um das gewünschte Ziel zu erreichen. Jedenfalls zeigt mir Dein Hinweis, dass offensichtlich nicht nur ich an so einer Funktion ein Interesse hat.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 17. Jul 2015, 15:36
Die .PAS-Datei wird nicht benötigt und auch kein Delphi auf dem Computer.
Vielleicht eine philosophische Frage, aber was soll dann überhaupt die DFM-Datei auf dem Computer?
Der Hinweis war eigentlich nur als technischer Hinweis gedacht, so dass sich niemand, der sich mit meiner Frage beschäftigt, unnötig Gedanken über das erforderliche Umfeld macht.

Die Funktionalität kann für mehrere Situationen von Bedeutung sein:

- Ich will alle meine Dialoge DPI-Aware machen. Mit dieser Funktion kann ich schnell mal mir die Dialoge ansehen, ich weiß inzwischen ja, für welche Komponenten Handlungsbedarf bestehen und verschaffe mir da schnell mal eine Übersicht.

- Ich arbeite an einer Dokumentation für die Entwicklung oder ein Handbuch und will mir als Grundlage der Beschreibung mal kurz den Dialog ansehen.

Könnte man doch auch direkt über das Programm machen, wird vielleicht einer Fragen?

Ja, aber manche Dialoge werden eben erst angezeigt, wenn bestimmte Programm- oder Datenkonstellationen vorliegen. Die immer erst herbeizuführen, kann ziemlich zeitaufwändig sein. Diese Zeit will ich mir ersparen.

Diese Dokumentations-Arbeit kann u.U. auch unterwegs mal auf einem Notebook gemacht werden, wo eben kein Delphi drauf ist, daher sollte dies nicht eine Voraussetzung für die Funktionalität sein.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 17. Jul 2015, 15:51
Das war mir schon klar ... ich wollte dir nur die nächste Hürde zeigen.

Und nein, du kannst keine Klasse aus einer DLL importieren. Dazu würdest du eine BPL benötigen, die dann aber wieder exakt zu deiner Delphi-Version und den Bibliotheken passen muss.
Ja, das hatte ich befürchtet (schade eigentlich).

Ich frage mich gerade, ob es denn ein Weg sein könnte, dass ich das Objekt dann in der DLL, welches die Klasse registriert hat, erzeuge und selber an die Stelle im Formular einhänge, wo es hinsoll. Ich könnte ja das ParentControl mit an die DLL übergeben geben (im übertragenen Sinne also "NewClassControlFromDLL.Parent := TControl (ParentControl)).

Oder gibt es da einen grundsätzlichen Denkfehler?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 22. Jul 2015, 00:26
Das mit den Frames konnte ich bislang nur so lösen, dass ich die Vorfahrelemente aus dem Nachfolger-Formular durch ein TPanel ersetze, dann wird das Formular ohne Fehler geladen, es fehlen aber die Vorfahren.

Kann man eigentlich eine Klasse auch irgendwie registrieren, indem man die Vorfahren im laufenden Programm "einliest", also aus den .pas und dfm-Dateien? Wenn ja, wie müsste man da vorgehen?

Mal abgesehen, dass immer noch das eine oder andere zu klären ist, funktioniert die Sache schon ganz gut, der anliegende Screenshot zeigt ein DFM-Formular im "Design-Time" Modus, mit direkten Zugriff auf die Events der angezeigten Komponenten.

Habe auch schon mal ein kleines Vorab-Video gepostet (dass ich aber noch mal neu machen werde, wenn die Endfassung draußen ist), man kann sich aber schon halbwegs ein Bild machen, worauf ich hinaus will.

https://youtu.be/QOUAFQaApHY
Miniaturansicht angehängter Grafiken
dfmviwer.jpg  
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 22. Jul 2015, 09:39
Zitat:
Mal abgesehen, dass immer noch das eine oder andere zu klären ist, funktioniert die Sache schon ganz gut, der anliegende Screenshot zeigt ein DFM-Formular im "Design-Time" Modus, mit direkten Zugriff auf die Events der angezeigten Komponenten.
Harry!
Habe keinen Hilfsreichen Beitrag für dich aber..

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 22. Jul 2015, 22:19
Zitat:
Mal abgesehen, dass immer noch das eine oder andere zu klären ist, funktioniert die Sache schon ganz gut, der anliegende Screenshot zeigt ein DFM-Formular im "Design-Time" Modus, mit direkten Zugriff auf die Events der angezeigten Komponenten.
Harry!
Habe keinen Hilfsreichen Beitrag für dich aber..

gruss
Danke!

Ich habe mir überlegt, um die unbekannten Klassen der User-Komponenten einbinden zu können, ein Plugin-System zu entwickeln.

Dabei müsste eine PlugIn-DLL lediglich die Klassen registrieren, die sie zur Verfügung stellt und eine Export-Funktion "GetWinControlFromClass", die so aussieht:

Delphi-Quellcode:

procedure ReadComponent (MyComponent: TComponent; InStream: TMemoryStream);
var
  outstream: TMemoryStream;
begin
  Instream.Position := 0;
  OutStream := TMemoryStream.Create;
  try
    ObjectTextToBinary(InStream, outstream);
    OutStream.Position := 0;
    OutStream.ReadComponent(MyComponent);
  finally
    OutStream.Free;
  end;
end;

function GetWinControlFromClass (ClassName: ShortString; InStream: TMemoryStream; AnOwner: TControl): TControl; stdcall;
var
  CRef : TPersistentClass;
begin
  CRef := GetClass(String (ClassName));
  if CRef<>nil then
  begin
    Result := TControl(TControlClass(CRef).Create(AnOwner));
    ReadComponent (Result, Instream);
  end;
end;

exports
  GetWinControlFromClass;

begin
  RegisterClass (TSpeedButton); {slClasses.Add('TSpeedButton');}
end.
Mein Dateimanager-Programm übergibt der Funktion den Klassennamen des zu erzeugenden Controls und den Textstream der Komponente aus der DFM-Datei.

Die Funktion liefert dann das Control zurück und ich kann die fehlende Klasse in Form des erhaltenen Controls in das Formular einbauen, verkürzt hier mal so dargestellt:

Delphi-Quellcode:
if DLLhandle <> 0 then begin
    co := DFMPlugIn.GetWinControlFromClass ('TSpeedButton', ms, self);
    if co <> NIL then begin
      showmessage (co.Name); //OK, geht, Name stimmt auch

      co.Parent := self; // Fehler:--> TFont kann nicht zu TFont zugewiesen werden
      co.Left := 100;
      co.Top := 100;

      co.Visible := True;
    end;
  end;
Leider liefert die Zuweisung zum Parent immer den Fehler "TFont kann nicht zu TFont zugewiesen werden".

Jemand eine Idee, warum das hier nicht geht, bzw. was man ändern muss, so dass es geht?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 22. Jul 2015, 22:23
Weil TFont in der DLL ein anderer Typ ist als TFont in der Anwendung.

Du erinnerst dich an das Thema mit den Klassen und DLL?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: DFM-Datei in anderem Programm als Vorschau anzeigen

  Alt 22. Jul 2015, 22:32
Weil TFont in der DLL ein anderer Typ ist als TFont in der Anwendung.

Du erinnerst dich an das Thema mit den Klassen und DLL?
Ja, Klassen kann man nicht exportieren, aber die erzeugten Klassen-Objekte. Und nichts anderes mache ich in der DLL. Hier sind sogar DLL und Programm von der gleichen Compiler-Version erzeugt, da müsste doch das TFont aus der DLL mit dem TFont aus dem Programm identisch sein, oder?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:53 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