2011-01-03 4 views
4

Je veux voir (seulement) les fichiers images et des documents communs (PDF, RTF, texte, etc.) dans mon programme Delphi, j'ai trouvé deux façons de le faire,Universal "document/image spectateur" pour Delphi?

  1. via AtViewer, mais le la taille du fichier est trop grande.
  2. Via Internet Explorer intégré installé directement sur l'ordinateur de l'utilisateur final.

Je me demande s'il existe des alternatives? Merci.

+0

Utiliser un 'TRichEdit' combiné avec un' TPicture' (afficher un seul d'entre eux à la fois)? (Je n'ai jamais entendu parler de PDFT, peut-être que vous faites référence à PDF - alors vous pouvez utiliser le contrôle Adobe Reader ActiveX Notez aussi que bien que le TRichEdit puisse ouvrir les fichiers RTF, il ne peut pas ouvrir les fichiers DOC/DOCX. beaucoup plus commun.) –

+0

Salut Andreas, merci pour l'idée. Je veux dire PDF :) désolé pour la confusion. –

Répondre

4

Il y a deux façons d'aller ici:

  1. Utiliser tous les logiciels est fourni par Windows
  2. stick to composants Delphi natif

Personnellement, je tiens à garder ma source "tout delphi". Quand il s'agit d'afficher des images Delphi est béni avec de nombreuses bibliothèques tierces qui vous offre un support pour presque tous les formats d'image imaginables.

Images

IMAGEEN est un bon paquet (commercial) et vous aimerez aussi l'image Vapyre Free Library (le nom est un peu .. bien, mais son un excellent produit).Pour ajouter rapidement du support aux formats les plus courants, GraphicsEX est une extension Delphi traditionnelle utilisée par de nombreux développeurs. Vous avez également FreeImage, qui est une collection de fichiers DLL - mais avec des classes wrapper Delphi pour les rendre faciles à utiliser. Jetez un oeil dans la section graphique sur les pages Delphi de Torry (google it) et vous trouverez un support robuste.

PDF

Pour aperçu PDF/lecture, je prendrais un coup d'œil à la gamme de produits de Gnostice. Ils fournissent des composants Delphi natifs pour générer et visualiser des fichiers PDF (http://www.gnostice.com/). Alternativement (pour le pdf) j'irais probablement pour les composants d'ActiveX qui expédient avec le lecteur de pdf d'Adobe. Mais alors vous devrez vérifier que ces objets sont enregistrés et disponibles pour votre application au démarrage.

Donc, pour votre "spectateur universel" Je

  1. Créer une visionneuse-forme de base (pour fournir des boutons, barre d'état, etc.)
  2. Ajouter une méthode virtuelle pour ouvrir un fichier
  3. decend 3 formes de ce qui traitent chacun avec un type de média différent. Donc, vous obtenez TfrmPDF, TfrmImage et TfrmHTML. Dans chacun, remplacez la méthode open(). De cette façon, votre application principale ne doit pas se préoccuper des détails de chaque format.

HTML

Pour l'affichage HTML de la chance, comme Delphi a son propre moteur de rendu Web natif. Il a été écrit par Steve Baldwin et s'appelle THTMLViewer. Il a été publié comme opensource et vous le trouverez sur google projets.

+0

Merci pour l'idée et les suggestions aux bibliothèques tierces! –

0

La visionneuse intégrée affichera tous les documents - cependant, si quelque chose nécessite une visionneuse externe, celle-ci sera affichée en dehors d'IE - les TIFF pour chacun sont affichés (par défaut) dans la visionneuse d'images.

+0

Voulez-vous dire atviewer? Oui, c'est une partie à ce sujet que je n'aime pas. –

+0

Mine arrive avec le Windows Photo Viewer, je suppose que c'est ce que j'ai enregistré pour les fichiers TIFF. Le contrôle Image ne gère pas bien les fichiers TIFF multiples, à moins qu'il ne manque quelque chose. – Mmarquee

2

Je suggère que vous écrivez votre propre spectateur TForm, qui regarde le fichier à vue et fait l'un des trois (ou quatre, ou cinq) des choses avec elle:

  1. Si c'est un PDF ou HTML, chargez-le avec un navigateur Web IE intégré (TEmbeddedWB de www.bsalsa.com est meilleur que le wrapper IE VCL inclus TwebBrowser).

  2. S'il s'agit d'une image, chargez-la dans un contrôle de visionneuse d'image doté d'un support de redimensionnement/mise à l'échelle/défilement.

  3. S'il s'agit d'un fichier texte ou d'un fichier RTF, chargez-le dans un RichEdit.

  4. S'il s'agit d'un type OLE, vous pouvez l'afficher dans une vue de conteneur OLE.

+0

TEmbeddedWB est bon, j'ai essayé c'est compilé DEMO avant. –

4

de Windows (depuis XP si je me souviens bien) utilise l'interface IExtractImage pour générer une vignette pour un fichier en mode miniatures, si elle a un objet répertorié pour son type de fichier.

Ces objets sont accessibles par code, et vous pouvez les utiliser pour générer des vignettes pour tout fichier qui obtiendrait une vignette dans l'Explorateur Windows. (Je pense que même les vignettes seront servis à partir du cache des vignettes (Thumbs.db) si elle est disponible dans la taille de l'image que vous demandez.)

Il y a plus ici: http://yoy.be/item.asp?i1490 ou ici: http://msdn.microsoft.com/en-us/library/bb775073(v=vs.85).aspx

+0

Merci pour l'indice, mais une vignette est trop petite. –