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

API, COM et SDKs Delphi Discussion :

Afficher un aperçu de document (word, excel, pdf, html, autre) dans une form


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut Afficher un aperçu de document (word, excel, pdf, html, autre) dans une form
    Bonjour à tous,

    j'ai dans mon application plusieurs liens vers des documents de tout types. Des classeurs Xls, des words, des Pdf et d'autre encore.

    Pour le moment j'arrive à afficher les words et excel dans un panel avec un objet Olevariant. Mais cela est assez long.

    Exemple de procédure :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Function Integrer_fichier(var h : THandle ; var Appli_OLE : Olevariant ; fichier_source : string ; panel : TPanel) : boolean;
    var texte : string;
        Attrs : integer;
        t: DWORD;
    begin
      result := false;
      Attrs := FileGetAttr(fichier_source); // récupère les attributs du fichier
      if (Attrs and $00000001) <> 0 then FileSetAttr(fichier_source, Attrs - $00000001);         // enlève la lecture seule
      Appli_OLE.Workbooks.open(fichier_source,,false);
      h := 0;
      t:= GetTickCount;
      texte := 'Microsoft Excel - ' + leftStr(extractfilename(fichier_source),length(extractfilename(fichier_source)) - 4);//extractfilename(fichier_source);
      while (h = 0) and (GetTickCount - t < TimeOut) do
      begin
        h:= FindWindow(nil, PChar(texte));
        Application.ProcessMessages;
      end;
     
     
      if h = 0 then
      begin
        h := 0;
        t:= GetTickCount;
        texte := 'Microsoft Excel - ' + extractfilename(fichier_source);
        while (h = 0) and (GetTickCount - t < TimeOut) do
        begin
          h:= FindWindow(nil, PChar(texte));
          Application.ProcessMessages;
        end;
      end;
     
      if h <> 0 then
      begin
        // On change le parent de la fenêtre par notre panel (par exemple)
        Windows.SetParent(h, panel.Handle);
        FileSetAttr(fichier_source, $00000001); // Mise en lecture seule
        Appli_OLE.visible:=true;
        result := true;
      end;
    end;
    Je voulais savoir s'il existe une méthode simple pour afficher n'importe quel fichier de n'importe quel type dans un panel avec une taille précise.

    Merci de vos réponses

  2. #2
    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
    essaye le TWebBrowser, il peut afficher bocou de type de fichier.
    @+

  3. #3
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    je ne connait pas trop ce composant.

    Mais par exemple avec un fichier excel on procéderait comment ?
    car un navigate demande de l'enregistrer ou de l'ouvrir mais ne me permet pas de l'afficher dans mon webbrowser dans mon panel

    merci

  4. #4
    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,
    essaye ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TForm1.Button1Click(Sender: TObject);
    Var
      Dlg: TopenDialog ;
    begin
      Dlg:= TopenDialog.Create(nil) ;
      Try
        if Dlg.Execute Then
          Br.Navigate(dlg.FileName);
      Finally
        Freeandnil(Dlg);
      End ;
    end;
    avec ce code jai reussi a ouvrir un doc excel sans probleme.
    @+

  5. #5
    Membre régulier Avatar de SkYsO
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 217
    Points : 122
    Points
    122
    Par défaut
    salut,

    en effet ça demande de l'ouvrir avec une boite de dialog qui te demander : enregistrer, ouvrir ou autre.
    Mais ça ne me l'ouvre pas dans mon panel à chaque coup sans me demander de confirmation.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Je me permet de faire un up, j'ai exactement le même problème : ouvrir un document (pdf pour moi) dans un composant, quel qu'il soit, en un seul clic dans ma liste box.

    @SkYsO : désolé si je t'ai donné un faux espoir...

    Merci de vos réponses

  7. #7
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 173
    Points
    4 173
    Par défaut
    Si tu veux afficher uniquement des PDF, le plus simple c'est de passer par l'ActiveX d'Acrobat Reader.

    Si on veut afficher tout type de document, le plus simple c'est bien la méthode préconisée plus haut : Un WebBrowser, en faisant un navigate sur le fichier en question, ou encore d'utiliser le composant TOleContainer qui est prévu à cet effet.

    Par contre en travaillant de cette façon, il n'y a pas de miracle : Pour afficher un Word, il faut que Word soit installé sur le poste, pour afficher un PDF, il faut qu'Acrobat Reader (ou un viewer équivalent compatible automation) soit installé...
    Ce n'est pas le WebBrowser en lui même qui affiche le composant, il joue simplement le rôle de container OLE.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 19
    Points : 4
    Points
    4
    Par défaut
    Merci pour ces précisions, je vais faire des tests avec tout ca

Discussions similaires

  1. Intégrer des documents word et pdf au milieu d'une page Web
    Par scude dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 12/09/2012, 09h45
  2. Réponses: 1
    Dernier message: 06/06/2011, 16h47
  3. Recherche de contenu dans des documents (Word, Excel, PDF ..)
    Par Morad ISSOULGHANE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/02/2010, 12h48
  4. Conversion Document Word/Excel > pdf via SaveAsPdf
    Par boudafc dans le forum C++Builder
    Réponses: 1
    Dernier message: 19/10/2009, 12h14
  5. Ouvrir un document Word présent sur le serveur dans une nouvelle page+enregistrement
    Par kenny49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/04/2007, 15h50

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