cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 19 nov. 2007 à 10:53
Pense aussi à mettre à jour l'unité DriveOOCalc.pas.
Petite remarque :
dans DriveOOCalc.pa, tu écris :
OpenOfficeDesktop :=
Instance.createInstance('com.sun.star.frame.Desktop');
Il serait plus judicieux d'utiliser les constantes que tu as déclaré dans la partie interface (d'ailleurs, est-bien leur place d'être exposées ?) en écrivant :
OpenOfficeDesktop :=
Instance.createInstance(CS_DESKTOP);
C'est un très bon travail que tu as fait là et merci de le partager avec cette communauté.
beckerich
Messages postés302Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention17 septembre 20132 19 nov. 2007 à 08:13
Bonjour DelphiProg,
merci pour le commentaire. Il y a sûrement moyen d'écrire cela d'une manière plus efficace. Le problème est que je suis restaurateur, passionné de programmation, si si c'est compatible... Je n'ai pas vraiment le temps d'affiner mes programmes. J'ai écrit mon programme de gestion du restaurant sur une base interbase, et je veux ne plus avoir à utiliser m$office, pas envie de payer.
Pour compléter un peu, voici le code pour créer soit un document nouveau, soit un document à partir d'un modèle :
const
CS_OPENOFFICE = 'com.sun.star.ServiceManager';
CS_DESKTOP = 'com.sun.star.frame.Desktop';
CS_TABLEUR = 'private:factory/scalc';
CS_BLANK = '_blank';
CS_EDITEUR = 'private:factory/swriter';
//swriter pour le traitement de texte.
//scalc pour le tableur
//sdraw pour l'éditeur de dessin
//simpress pour l'éditeur de présentation (équivalent de PowerPoint)
//smath pour l'éditeur de formule mathématique
//swriter/Global Document document maitre
//swriter/web Pour l'éditeur HTML
procedure CreerNouveauDocOO(var NouveauClasseur: Variant; var Instance: variant;
s_type: string; s_modele: string = '' );
const
pr= 'file:///';
begin
{ document vide de type indiqué }
if Length(s_modele) = 0 then
begin
NouveauClasseur := CreeDesktopOO(Instance).LoadComponentFromURL(s_type, CS_BLANK, 0, VarArrayCreate([0, -1], varVariant));
end
else
begin
if FileExists(s_modele) then
begin
OOoTools.OpenOffice := Instance;
{ OpenOffice gère les chemins de fichier sous la forme d'URL, il faut donc transformer les chemins de type c:\rep\toto.pas en file:///rep/toto.pas }
NouveauClasseur := CreeDesktopOO(Instance).LoadComponentFromURL(pr+StringReplace(s_modele , '\', '/',[rfReplaceAll]),
CS_BLANK, 0,
VarArrayOf([MakePropertyValue('AsTemplate', True)]));
end
else
Exception.CreateFmt('Le modèle de fichier %s n''existe pas.', [s_modele]);
end;
end;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 18 nov. 2007 à 23:57
Voici un code innovant (ça nous change de l'éternel Microsoft Excel),réutilisable et plutôt bien écrit.
N'y avait-il pas d'autres moyens que d'utiliser des variants forts gourmands en mémoire ?
La suite Open Office n'expose-t-elle pas un certain nombre d'interfaces ?
19 nov. 2007 à 10:53
Petite remarque :
dans DriveOOCalc.pa, tu écris :
OpenOfficeDesktop :=
Instance.createInstance('com.sun.star.frame.Desktop');
Il serait plus judicieux d'utiliser les constantes que tu as déclaré dans la partie interface (d'ailleurs, est-bien leur place d'être exposées ?) en écrivant :
OpenOfficeDesktop :=
Instance.createInstance(CS_DESKTOP);
C'est un très bon travail que tu as fait là et merci de le partager avec cette communauté.
19 nov. 2007 à 08:13
merci pour le commentaire. Il y a sûrement moyen d'écrire cela d'une manière plus efficace. Le problème est que je suis restaurateur, passionné de programmation, si si c'est compatible... Je n'ai pas vraiment le temps d'affiner mes programmes. J'ai écrit mon programme de gestion du restaurant sur une base interbase, et je veux ne plus avoir à utiliser m$office, pas envie de payer.
Pour compléter un peu, voici le code pour créer soit un document nouveau, soit un document à partir d'un modèle :
18 nov. 2007 à 23:57
N'y avait-il pas d'autres moyens que d'utiliser des variants forts gourmands en mémoire ?
La suite Open Office n'expose-t-elle pas un certain nombre d'interfaces ?