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

Langage Delphi Discussion :

Rendre un document openoffice visible [FAQ]


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut Rendre un document openoffice visible
    salut,
    voila j'ouvre un document openoffice en mode invisible. Puis par l'interface de mon application je veux le rendre visible à nouveau.
    Je m'explique je le rends invisible pour ne pas "polluer" l'affichage à l'écran avec openoffice qui s'ouvre, mais sur mon interface je donne la possibilité de voir l'aperçu avant impression. Il faut donc que openoofice "réapparaisse".
    Voici le code d'ouverture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedureTOpenOffice.OpenDocument(NomFichier: string);
    var
    	VariantArr: variant;
    begin
    	// Openoffice travail avec des nom de fichier au "format" URL
    	// il faut donc remplacemer les \ par des /
    	// et ajouter devant le chemin 'file:///'
    	NomFichier := 'file:///' + StringReplace(NomFichier, '\', '/', [rfReplaceAll]);
    	VariantArr := VarArrayCreate([0, 0], varVariant);
    	VariantArr[0] := MakePropertyValue('Hidden', True);
    	OfficeDocument := StarDesktop.LoadComponentFromURL(NomFichier, '_blank', 0, VariantArr);
    end;
    ça marche mon document est ouvert mais invisible mais aprés je ne sais pas quoi appeler sur mon objet "OfficeDocument" pour le rendre visible...
    Quelqu'un l'a t'il déja fait ou vu ?? j'ai télécharger le "Developper Guide" mais rien n'y fais référence....

  2. #2
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    euh j'ai oublié de préciser je fais ça aussi sous Ms office avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		XlApp := CreateOleObject('Excel.Application');
    		if VarType(XlApp) <> VarDispatch then Abort;
    		XlApp.Visible := False;
    		XlApp.DisplayAlerts := False;
    ....

  3. #3
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Salut,

    dans la FAQ delphi, il y a ceci :
    http://delphi.developpez.com/faq/?pa...alcfeuilleinvi

    Est ce applicable à ton cas ?

  4. #4
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    en fait non, dans la faq on cache une feuille d'un classeur.
    Mais moi c l'appli "calc" entière qui est cachée...

  5. #5
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Ah.
    Je regarderai chez moi ce soir, ici je n'ai pas openoffice

  6. #6
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    bon j'ai trouvé ça sur le forum openoffice :
    http://www.oooforum.org/forum/viewtopic.phtml?t=4816

    le code fournit en fin d'article pour delphi marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document.getCurrentController.getFrame.getContainerWindow.setVisible(true);
    mais il faut ouvrir son document sans le paramètre "hidden", sinon à l'appel de ce code OOo réapparait mais vide (la fenêtre fille de la MDI est invisible). Pourtant la barre de titre a le nom de mon document ???

    Bon je continue de chercher et de poster

  7. #7
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Citation Envoyé par HumanTool
    bon j'ai trouvé ça sur le forum openoffice :
    http://www.oooforum.org/forum/viewtopic.phtml?t=4816

    le code fournit en fin d'article pour delphi marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document.getCurrentController.getFrame.getContainerWindow.setVisible(true);
    mais il faut ouvrir son document sans le paramètre "hidden", sinon à l'appel de ce code OOo réapparait mais vide (la fenêtre fille de la MDI est invisible). Pourtant la barre de titre a le nom de mon document ???

    Bon je continue de chercher et de poster
    C'est déjà intérressant.

  8. #8
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    bon ben j'ai trouvé dans l'api des références a 2 procedures:
    http://api.openoffice.org/docs/Devel...rom_Each_Other

    j'ai donc changé mon code :
    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
    function TForm2.MakePropertyValue(PropName:string; PropValue:variant): variant;
    begin
       Result := OOoServer.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
       Result.Name := PropName;
       Result.Value := PropValue;
    end;
     
    procedure TForm2.Button1Click(Sender: TObject);
    var
       ooParams: Variant;
    begin
       OOoServer:= CreateOleObject('com.sun.star.ServiceManager');
       OOoDeskTop:= OOoServer.CreateInstance('com.sun.star.frame.Desktop');
       //Optional parameters (visible boolean)...
       ooParams:= VarArrayCreate([0, 0], varVariant);
       ooParams[0]:= MakePropertyValue('Hidden', true); //Here you chose to open it not visible
       //Open the document...
       OOoDocument:= OOoDeskTop.LoadComponentFromURL('private:factory/scalc', '_blank', 0, ooParams);
       oDocCtrl := OOoDocument.getCurrentController;
       oDocFrame := oDocCtrl.getFrame;
       oDocWindow := oDocFrame.getContainerWindow;
       oDocBook := oDocFrame.getComponentWindow;
    end;
     
    procedure TForm2.Button2Click(Sender: TObject);
    begin
       oDocWindow.setVisible(true);
       oDocBook.setVisible(true);
    end;
     
    procedure TForm2.Button3Click(Sender: TObject);
    begin
       oDocWindow.setVisible(false);
       oDocBook.setVisible(false);
    end;
    et ça marche mais je ne comprends pas bien pourquoi il faut ces 2 procedures.... et pourquoi il n'y a pas qu'1 seule a appeler comme sous office... (trop facile)
    en tout cas j'espère que ça servira à d'autres, voir que ce post serra enrichi

  9. #9
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Penses à mettre le tag

  10. #10
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    ben justement il est à moitié résolu parec que c pas clair encore...
    je comptais sur les jours qui viennent pour voir si quelqu'un venait confirmer ou infirmer mes dires !

  11. #11
    Membre averti
    Avatar de HumanTool
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2006
    Messages
    276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2006
    Messages : 276
    Points : 378
    Points
    378
    Par défaut
    bon ben faut croire qu'il y a bien une distinction entre le contenant et le contenu dans les fenêtres OpenOffice. A la différence de MsOffice puisque je faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    XlApp := CreateOleObject('Excel.Application');
    XlApp.Visible := False;
    et tout excel devenait invisible :

    A savoir quelle approche est la meiux.... ce serais lancer un débat openoffice/msoffice

    en tout cas ça marche !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Rendre un input caché visible
    Par sagitarium dans le forum Langage
    Réponses: 2
    Dernier message: 09/11/2006, 10h00
  2. Réponses: 4
    Dernier message: 08/11/2006, 00h00
  3. document openoffice
    Par indy2 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 16/12/2005, 11h21
  4. [W3C] rendre toutes les pages visibles
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/01/2005, 20h07

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