Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DFM-Datei in anderem Programm als Vorschau anzeigen (https://www.delphipraxis.net/185909-dfm-datei-anderem-programm-als-vorschau-anzeigen.html)

Harry Stahl 23. Jul 2015 21:12

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1309685)
Der PreviewHandler hat nichts mit Delphi zu tun, sondern sorgt dafür, dass du im Explorer eine Vorschau sehen kannst (z.B. von einer PDF-Datei)..

Geht das schon aktuell irgendwie oder meinst Du, es eher als theoretische Aussage, dass es gehen müsste?

Zitat:

Zitat von Sir Rufo (Beitrag 1309685)
Diese müssen sich entsprechend registrieren und man könnte auch aus deinem Formular-Anzeiger einen PreviewHandler machen, der dann ganz einfach mit dem Windows Explorer funktioniert.

Hier die Definition des Interfaces
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Um diesen Preview (nach der Initialisierung) dann anzuzeigen, reicht es die Methode
Delphi-Quellcode:
SetWindow
aufzurufen, wo dann das ParentHandle und der Anzeigebereich übergeben wird. Dort zeichnet sich das dann hin.

Im Prinzip genau das was du auch machen willst. Du weisst wo es hin soll und hast auch den Bauplan, aber du weisst nicht wie du es bauen sollst und lässt das die DLL machen.

Wobei ich ja das Formular nicht nur anzeigen möchte, sondern damit interagieren will(wie im Video gezeigt), also beim Klick auf den Namen einer Ereignisprozedur an die Stelle im Source springen, Images aus der TImageList exportieren, (kommt noch: eine andere Seite eines TNotebooks anzeigen) etc.

Zitat:

Zitat von Sir Rufo (Beitrag 1309685)
Ein Interface sollte man nicht nur auf die automatische Freigabe reduzieren. ;)
Und nicht jedes Interface kann sich auch selber wieder freigeben. Das hat etwas mit der Implementierung zu tun.

Der grosse Vorteil hier ist, dass du die Interface-Referenz einfach so Anwendungsübergreifend austauschen kannst. Nur bei den Rückgabewerten und Parametern muss man ein Auga darauf haben, dass man keine Delphi-Typen (wie z.B. string) verwendet. Alternativ bietet sich da z.B. der WideString an. Ist zwar langsamer aber hier safe, da der von Windows direkt verwaltet wird (darum ja auch langsamer).

Beispiele sollten sich da finden lassen. Wenn nicht, dann schau ich mal ... irgendwo habe ich noch so ein Beispiel rumfliegen.

Ja, Beispiele, wie man ein Interface erzeugt, gibt es (hat mein Namensvetter Stahli hier ja auch mal gemacht). Ich müsste dann also statt der Form ein Interface erzeugen und zurückgeben. Und das kann man dann auch ohne die "TFont ist nicht gleich TFont" -Probleme in die aufrufende Form einfügen?

Harry Stahl 23. Jul 2015 21:19

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Danke Uwe, sieht interessant aus (was es nicht alles gibt), werde ich mir morgen mal in Ruhe ansehen. Insgesamt würde die Lösung aber wohl auch kein Zweizeiler sein. Und mir würde auch die Möglichkeit der Interkation fehlen.

Aviator 23. Jul 2015 21:24

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Harry Stahl (Beitrag 1309687)
Zitat:

Zitat von Sir Rufo (Beitrag 1309685)
Der PreviewHandler hat nichts mit Delphi zu tun, sondern sorgt dafür, dass du im Explorer eine Vorschau sehen kannst (z.B. von einer PDF-Datei)..

Geht das schon aktuell irgendwie oder meinst Du, es eher als theoretische Aussage, dass es gehen müsste?

Na klar geht das jetzt schon. :wink: Klick einfach mal eine PDF Datei an und klick dann im Explorer auf die im Anhang im Screenshot markierte Fläche bei dir im Explorer (Windows 7 bzw. Windows 8.1).

Harry Stahl 23. Jul 2015 21:27

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Ja, bei PDF-Dateien oder anderen Dateien (Word, etc.) habe ich das auch schon gesehen, aber noch nie, dass im Explorer eine DFM-Datei als Vorschau angezeigt worden wäre.

Aviator 23. Jul 2015 21:31

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Zitat:

Zitat von Harry Stahl (Beitrag 1309690)
Ja, bei PDF-Dateien oder anderen Dateien (Word, etc.) habe ich das auch schon gesehen, aber noch nie, dass im Explorer eine DFM-Datei als Vorschau angezeigt worden wäre.

Nein das funktioniert ja auch nicht bzw. nur dann, wenn ein PreviewHandler für DFM Dateien im System registriert ist. Und genau das könntest du mit deinem Projekt machen. Du registrierst einen PreviewHandler im System und kannst hierdurch DFM Dateien in der Vorschau anzeigen. Und dafür brauchst du das von Sir Rufo genannte Interface.

Harry Stahl 23. Jul 2015 21:36

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Wie gesagt, ich könnte ich dann nicht mit dem Formular interagieren und eine Vorbedingung war, dass Delphi auf dem PC nicht installiert sein muss.

Aviator 23. Jul 2015 21:43

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Delphi muss auch nicht auf dem PC installiert sein. Ein PreviewHandler ist genau dafür da, auch Dinge anzeigen zu können, ohne das zwingend ein spezielles Programm dafür existieren muss. Stell dir dein Programm, das du gerade entwickelst, vor wie den Adobe Reader. Dieses Programm installierst du auf einem Rechner. Zugleich wird bei der Installation auch ein PreviewHandler im System registiert. Dieser bewirkt, dass du bereits im Explorer eine kleine Vorschau auf die (in deinem Fall) DFM Datei erhälst. Führst du dein Programm aus und öffnest die DFM Datei, kannst du dir bspw. noch alle Properties der Komponenten anzeigen lassen.

Eine abgespeckte Version deines Programmes wäre dann nur der PreviewHandler selbst. Somit hat ein Benutzer die Möglichkeit, ohne dein Programm und ohne Delphi eine Vorschau auf die DFM zu erhalten. Rein über die Vorschaufunktion des Explorers.

Ein weiterer Vorteil ist, dass jedes andere Programm, welches ebenfalls eine Vorschau von unterschiedlichen Dateitypen anzeigen will, ebenfalls auf den von dir im System registrierten PreviewHandler zugreifen kann (wie der Explorer es ja auch tut).

Harry Stahl 23. Jul 2015 22:56

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Gibt es denn nicht schon irgendeinen fertigen Preview-Handler, der DFM-Dateien im Explorer anzeigen kann?

Wäre doch eine tolle Sache, unabhängig davon, was aus meiner Geschichte wird. Das könnte doch so ziemlich jeder Delphi-Entwickler gut gebrauchen.

Wenn ich Dich richtig verstanden habe, könnte ich gleichfalls mein Programm mit einer Funktionalität ergänzen, die dann quasi als PreviewHandler im Explorer zur Verfügung steht. Das wäre natürlich durchaus auch eine interessante Sache.

EWeiss 23. Jul 2015 23:14

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Such doch mal im Net DFM - Viewer

gruss

BUG 23. Jul 2015 23:28

AW: DFM-Datei in anderem Programm als Vorschau anzeigen
 
Zitat:

Zitat von Harry Stahl (Beitrag 1309695)
Wenn ich Dich richtig verstanden habe, könnte ich gleichfalls mein Programm mit einer Funktionalität ergänzen, die dann quasi als PreviewHandler im Explorer zur Verfügung steht. Das wäre natürlich durchaus auch eine interessante Sache.

Ich sehe da 3. Richtungen.
  1. allgemeinen PreviewHandler für Explorer schreiben
  2. allgemeinen PreviewHandler (z.B. Pdf) auch in deinem Dateimanager unterstützen
  3. interaktive Vorschau in deinem Dateimanager implementieren
1. nützt dir für deinen Dateimanager nicht so viel, ist aber für die meisten vermutlich praktischer. Ich denke mit 2. kann einen Haufen Formate erschließen, die du sonst nicht unterstützen könntest/wolltest. 3. ist das, was du gerade machst.

Zitat:

Zitat von EWeiss (Beitrag 1309696)
Such doch mal im Net DMF - Viewer

Ich persönlich finde da nichts brauchbares: Bei Google suchenDMF Viewer


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 Uhr.
Seite 4 von 6   « Erste     234 56      

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