FAQ C++ BuilderConsultez toutes les FAQ
Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010 Ajouter une question
Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez
Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.
L'équipe C++ Builder de Developpez.
Commentez cette FAQ : Commentez
- 12.1. Gestion des documents (3)
- 12.2. OpenOffice Gestion des feuilles (28)
1/ Qu'est-ce qu'OpenOffice.org ?
OpenOffice.org est une suite bureautique open source entièrement francisée et multi plateforme, qui contient :
- un traitement de textes, avec un éditeur d'équations (Writer)
- un tableur (Calc)
- un logiciel de présentation (Impress)
- un éditeur de dessin vectoriel (Draw)
Pour plus d'information : Apache OpenOffice Wiki, OFFICE.ORG - FAQ
2/ Quel avenir pour OpenOffice.org ?
OpenOffice.org suit un cycle de développement de 18 mois pour chaque nouvelle version. Actuellement la version 2.2 est disponible.
3/ Où télécharger OpenOffice.org ?
http://www.openoffice.org/fr/Telecharger/
4/ Format des fichiers OpenOffice.org
Un des atouts de cette suite bureautique est son format de fichier qui repose sur XML. Un fichier OpenOffice.org a le même modèle pour toutes les applications bureautiques, seule l'extension change. C'est un fichier au format zip qui contient les fichiers XML suivant :
- le fichier XML content.xml pour le contenu du document
- le fichier XML styles.xml pour le style (style et contenu sont présentés de façon séparée)
- le fichier XML meta.xml qui regroupe des informations sur le document, que vous pouvez saisir sous Fichier | Propriétés. A noter que lorsque vous enregistrez un document avec chiffrement, seul meta.xml n'est pas chiffré.
- le fichier XML settings.xml contient les choix applicatifs sur les paramètres du document, par exemple sur l'imprimante, l'historique des modifications, la source de données connectée, etc. Le fichier meta-inf/manifest.xml décrit la structure du fichier XML
- le répertoire Pictures conservant les fichiers binaires (images…)
- le répertoire Basic contient les macros écrites en Basic-code. Les - bibliothèques Basic liées se trouvent dans d'autres sous-répertoires de Basic.
Tout ceci est, conservé dans un seul fichier zip, dont l'extension est propre à la nature du document (.sxw pour les textes, ou .sxc pour les classeurs). Le résultat est un format complexe comportant plus de 450 éléments et plus de 1600 attributs facile à lire et surtout facile à transformer.
Extensions des fichiers OpenOffice utilisées
- Texte (formaté) odt créé par Writer
- Classeur ods créé par Calc
- Présentation odp créée par Impress
- Dessin odg créé par Draw
- Base de données odb créée par Base
- Formule odf créée par Math
- Document maitre odm créé par Writer
- Modèle de document txt ott créé par Writer
- Modèle de classeur ots créé par Calc
- Modèle de présentation otp créé par Impress
- Modèle de dessin otg créé par Draw
- Modèle de document HTML oth créé par Writer/Web
5/ Je remercie TABZ qui m'a aidé pour des problèmes avec "CoreReflection"
Je cite:
(La fonction "Bridge_GetStruct" permet de créer facilement des propriétés, alors que le passage par CoreReflection est souvent problématique avec BCB.)
Les fonctions avec "CoreReflection" peuvent être remplacées par "Bridge_GetStruct"
En principe c'est sans problème, mais cela n'est valable que pour les versions d'Open Office supérieures à la 1.1.0 (J'ajouterai que rien de tout cela ne fonctionne avec BCB3 pro, sans que je ne sache pourquoi.)
6/ Les tests ont été faits avec Windows XP PRO Pack2 et OpenOffice 2.2 (dernière version à ce jour)
7/ un lien sur le site vers des exemples et explications en OOobasic
https://silkyroad.developpez.com/
8/ un lien vers la FAQ Delphi qui a servie de support
https://delphi.developpez.com/faq/?p...OpenOffice-org
Pour utiliser OpenOffice avec BCB vous devez utiliser OLE.
1/ Se connecter à OpenOffice
Déclarer les variables globales openOffice et Document et ajouter #include <ComObj.hpp>
Code c++ : | Sélectionner tout |
1 2 3 4 5 6 | Variant vOOoOpenOffice; Variant vOOoDocument; if (VarIsEmpty(vOOoOpenOffice)) { vOOoOpenOffice = CreateOleObject("com.sun.star.ServiceManager"); } |
2/ Se déconnecter d'OpenOffice.org
Positionner OpenOffice à Unassigned permet de libérer le Variant.
Code c++ : | Sélectionner tout |
OpenOffice = Unassigned;
3/ Savoir si on est connecté à OpenOffice
Code c++ : | Sélectionner tout |
1 2 | boolean vOOoConnect; vOOoConnect = ! (VarIsEmpty(vOOoOpenOffice) || VarIsNull(vOOoOpenOffice)); |
Ou comment créer une instance d'une classe dont on connaît le nom.
C'est un objet qui permet de travailler sur les attributs, méthodes et constructeurs de classes "chargées". Elle permet par exemple de construire "dynamiquement" un nouvel objet (ou même tableau) ou encore d'accéder à ses attributs et méthodes.
Par exemple pour créer un objet à partir du nom d'une classe et transmettre des arguments à son constructeur :
Je remercie TABZ qui m'a aidé pour des problèmes avec "CoreReflection"
Je cite:
(La fonction "Bridge_GetStruct" permet de créer facilement des propriétés, alors que le passage par CoreReflection est souvent problématique avec BCB.)
Les fonctions avec "CoreReflection" peuvent être remplacées par "Bridge_GetStruct"
Cette fonction ouvre un document en lecture seule
Code c++ : | Sélectionner tout |
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 | Variant vOOoOpenOffice, vOOoDesktop, vOOoLoadParams, vOOoDocument, vOOoPropertyValue; try { vOOoOpenOffice = CreateOleObject("com.sun.star.ServiceManager"); } catch (...) { // si on passe ici c'est qu'il y a une erreur } if (VarType(vOOoOpenOffice) == varDispatch) vOOoDesktop = vOOoOpenOffice.OleFunction("createInstance", "com.sun.star.frame.Desktop"); int Bounds[2] = {0,0}; vOOoLoadParams = VarArrayCreate(Bounds, 1, varVariant); vOOoPropertyValue = vOOoOpenOffice.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue"); vOOoPropertyValue.OlePropertySet("Name", "ReadOnly"); // pour ReadOnly ou pour Hidden vOOoPropertyValue.OlePropertySet("Value", true); vOOoLoadParams.PutElement(vOOoPropertyValue, 0); //ouverture fichier existant // FilePath = "file://localhost/C:/essai.sxc" -- pour un fichier Calc //ou // FilePath = "file:///C:/essai.sxc" -- pour un fichier Calc AnsiString FileName = "file:///C:/"; // FileName += ExtractFilePath(Application->ExeName); FileName += "essai.sxc"; FileName = StringReplace(FileName, "\\", "/", TReplaceFlags() << rfReplaceAll << rfIgnoreCase); Variant vFileName = StringToOleStr(FileName); vOOoDocument = vOOoDesktop.OleFunction("LoadComponentFromURL",vFileName,"_blank",0,vOOoLoadParams); |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.