IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

D7 Voir des PDF inclus dans champ OLE


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut D7 Voir des PDF inclus dans champ OLE
    Bonjour !

    voilà j'ai une table avec un champ OLE qui contient un doc PDF. J'aimerais pouvoir visionner le doc. Existe-t-il un composant pour ça ? Ou à défaut, comment lancer acrobat reader avec le fichier ?

    Merci de votre attention.

  2. #2
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    Bon lancer acroreader, c'est ok donc ce qui m'intéresse c'est s'il existe une visionneuse delphi.

    Merci

  3. #3
    Membre averti Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Points : 416
    Points
    416
    Par défaut
    Salut,
    avec un TWebBrowser tu peux visualiser un Fichier PDF.
    Apprends la science de celui qui sait, et enseigne ta science à celui qui ignore, comme ca, tu auras appris ce que tu ignores et utilisé ce que tu sais.

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ben, sauf erreur ça va utiliser le navigateur internet... donc pas mieux que acrobat reader. Ce que je cherche c'est juste une visionneuse qui pourrait me donner un aperçu (rapide) du fichier pdf sans lancer d'appli externe...

    Merci quand même

  5. #5
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Salut
    J'ai fais une visionneuse pour fichier PDF... utilisant une appli externe
    mais pas Acrobat, beaucoup trop lent.

    La méthode que j'ai utilisée:
    - un logiciel gratuit se nommant Foxit Reader, très rapide
    - démarrage de Foxit DANS l'appli Delphi, avec détourage de la fenetre windows
    - L'appli externe n'est démarrée qu'une seule fois
    - La liste des fichiers PDF
    - simulation d'un glisser-déposer dans l'appli externe lorsque clic sur un des fichiers PDF

    Derriere, je laisse le soin au prog externe de gérer l'impression, les rotations zoom etc...
    Ceci est très rapide et l'appli externe ne pose aucun soucis. si tu veux plus de détails, n'hésite pas
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  6. #6
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    OK pour foxit, qui est très rapide, mais j'ai quelques soucis pour l'intégrer dans mon code...

    1- Quand je lance foxit:
    shellexecute(0, 'OPEN', pchar(\foxit\foxitreader.exe'), nil, nil, SW_HIDE);

    malgré SW_HIDE et bien il s'affiche à l'écran !
    je suppose qu'il existe un moyen d'éviter ça ?

    2- je ne sais pas récupérer le handle de l'appli lancée (ceci afin d'affecter le lecteur foxit à un conteneur). Est-ce que c'est renvoyé par shellexecute ? ou faut-il aller le chercher une fois le programme externe lancé ?

    3- Quel conteneur est le mieux adapté pour accueillir l'appli externe ?

    merci

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    Heu j'avais pas regardé comment faire un glisser déposer d'un doc, là c'est pas encore de mon niveau, je n'y comprend pas grand chose...

  8. #8
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    re zarbouine

    1. pourquoi le lancer invisible ?

    2. pour récupérer le handle d'une fenêtre tu peux chercher du coté de FindWindow, il y a pas mal d'infos sur DVP , c'est une commande simple.
    Il y a aussi EnumWindows, un peu plus complexe.

    3. un panel fait l'affaire , le handle du panel: 'panel.handle'


    Pour le glisser, essaye d'adapter le code que je t'ai fourni
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
         wParam :=  GlobalAlloc( GMEM_ZEROINIT or GMEM_MOVEABLE or GMEM_DDESHARE, Length( SFichier ) + 20);
         pDrop := GlobalLock( wparam );
         try
         pDrop^.pFiles := 20;
         pDrop^.fWide := False;
         pFiles := Pointer(pDrop);
         Inc( pFiles, pDrop^.pFiles);
         for i := 1 to Length( SFichier ) do
           begin
           pFiles^ := SFichier[ i ];
           Inc( pFiles );
           end;
         pDrop.fNC := False;
         pDrop.pt := Point( 10, 10 );
         finally GlobalUnLock( wParam ); end;
         // Glisser virtuel
         PostMessage( HandleViewver, WM_DROPFILES, wparam, 0 );

    Le principe est d'envoyer un message (équivalent au glisser), à l'appli, ainsi que les paramètres spécifique au type de message.
    Ces paramétres il faut les mettre aux normes Windows (avec les structures API), ceci peut donc dérouter au 1er abord.
    Il n'est pas forcément nécessaire de tout comprendre
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    merci, je vais essayer de m'y mettre dès que j'aurai 5 minutes...

    pdrop: pdropfiles;
    c quoi le type pdropfiles ?

  10. #10
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    oops, désolé, j'ai oublié

    c'est une structure définie dans les API Windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       wparam : THandle;
       pDrop: PDropFiles;
       pFiles: PChar;
    et avec un 'uses ....., ShellAPI' également

    voila, j'espère que tu t'en sortira, sinon n'hésite pas à revenir
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  11. #11
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    j'ai bien avancé... et ça marche presque comme je veux (je n'ai pas tout compris, mais bon...)

    waitfor c dans quelle unité ? je cherche et je trouve pas...

    Merci du coup de main

  12. #12
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    il me reste un problème sur la manière de passer le nom du fichier à droper
    SFichier c'est du string ?
    J'essaye de mettre le nom du fichier dedans, mais curieusement il me rajoute des trucs pas catholiques...

  13. #13
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par zarbouine
    il me reste un problème sur la manière de passer le nom du fichier à droper
    SFichier c'est du string ?
    J'essaye de mettre le nom du fichier dedans, mais curieusement il me rajoute des trucs pas catholiques...

    SFichier est bien en string.
    Par contre je comprends pas trop ton problème... dedans ou ?
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  14. #14
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ben voilà :

    sfichier='truc.pdf' en dur;

    et quand je lance le drop, j'obtiens (mais pas toujours !!!) un message d'erreur de fox diant que le fichier truc.pdf# was not found (où # est un ou plusieurs caractères qui varient, ça peut être un 'f', un 'CT', ou n'importe quoi).
    Ce qui est dingue c'est que ça va marcher correctement 5 ou 6 fois, et puis le coup d'après bing.
    C'est la chaleur ou quoi ?

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut ShellExecute n'aime pas SW_HIDE !
    Je remonte cette vieille discussion, car je voulais jouer avec ça (appli dans panel) , et je rencontre le même pb :
    Citation Envoyé par Zarbouine
    1- Quand je lance foxit:
    shellexecute(0, 'OPEN', pchar(\foxit\foxitreader.exe'), nil, nil, SW_HIDE);

    malgré SW_HIDE et bien il s'affiche à l'écran !
    je suppose qu'il existe un moyen d'éviter ça ?
    Citation Envoyé par TicTacToe
    1. pourquoi le lancer invisible ?
    Zarbouine n'a pas répondu, et moi je pourrais répondre : parce que ! mais sans rire, parce que c'est moche : le prog s'affiche d'abord n'importe où avant de se positionner dans le panel (ça, ça fonctionne impec, merci TicTacToe ! )

    Je fais un test comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(0, 'open', PChar('calc.exe'), nil, nil, SW_HIDE);
    et bien sûr la calculatrice s'affiche,

    Quelqu'un(e) aurait une idée ?
    D'avance merci,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #16
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 133
    Points
    15 133
    Par défaut
    Salut.

    Devant l'enthousiasme délirant soulevé par mon "Up", j'ai cherché ailleurs (j'espère qu'on ne m'en voudra pas...) et il m'a été répondu ça :
    Ca ne dépend pas de ShellExecute, mais de l'application qui supporte ou non le SW_HIDE.
    Exemples :
    - Internet Explorer le supporte et peut s'ouvrir en mode caché
    - Firefox ne le supporte pas et ne peut pas s'ouvrir en mode caché.
    J'ai testé et je confirme.
    Idem avec le Bloc-note, qu'on peut cacher, mais pas la Calculatrice.

    En espérant que ça sera utile à la communauté,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2007, 12h48
  2. Comment trouver des structures incluses dans d'autres
    Par Vulcanos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/10/2006, 23h59
  3. Insertion auto resultat RTF dans champ OLE
    Par michou42 dans le forum Access
    Réponses: 3
    Dernier message: 26/09/2006, 11h53
  4. Réponses: 9
    Dernier message: 23/05/2006, 15h33
  5. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo