TWordApplication sur XE5 ou XE8 C++ Builder
Suite à beaucoup de temps perdu à comprendre pourquoi les composants apparaissent sous Delphi et pas sous C++ Builder, dans un environnement de développement XE5 ou XE8 Studio, je tiens à partager ma solution.
Vous ne pouvez pas avoir les composants Office 2000 (2k) ou Office XP, de Delphi ou de C++ en même temps :
https://community.embarcadero.com/answers/packages-unchecked
Il suffit de cocher qu'un seul à la fois.
https://www.youtube.com/watch?v=AP3if58B2Ks
Il existe aussi
c:\Program Files (x86)\Embarcadero\Studio\16.0\bin\dcloffice2010220.bpl
qu'on pourrait ajouter si l'on souhaite avoir certaines fonctionnalités d'office 2010 inexistantes dans les version 2013 ou plus mais ces composants n'existent pas pour C++.
En C++ Builder il faut charger Serveurs Office 2000 ou XP du 2ème groupe de composants :
au lieu du premier groupe :
Voilà.
Cependant, y a des incompatibilités dues au passage à UnicodeString
voici comment contourner les problèmes
Vous pouvez à nouveau compiler vos anciens programmes de C++ Builder.
Exemple :
http://ideone.com/yLnBZo
Vous ne pouvez pas avoir les composants Office 2000 (2k) ou Office XP, de Delphi ou de C++ en même temps :
https://community.embarcadero.com/answers/packages-unchecked
Il suffit de cocher qu'un seul à la fois.
https://www.youtube.com/watch?v=AP3if58B2Ks
Il existe aussi
c:\Program Files (x86)\Embarcadero\Studio\16.0\bin\dcloffice2010220.bpl
qu'on pourrait ajouter si l'on souhaite avoir certaines fonctionnalités d'office 2010 inexistantes dans les version 2013 ou plus mais ces composants n'existent pas pour C++.
En C++ Builder il faut charger Serveurs Office 2000 ou XP du 2ème groupe de composants :
Voilà.
Cependant, y a des incompatibilités dues au passage à UnicodeString
voici comment contourner les problèmes
Vous pouvez à nouveau compiler vos anciens programmes de C++ Builder.
Exemple :
http://ideone.com/yLnBZo
void __fastcall TForm2::Button1Click(TObject *Sender)
{
OleVariant Template = EmptyParam();
OleVariant NewTemplate = False;
OleVariant ItemIndex = 1;
UnicodeString wstr = L"Calendrier";
try {
WordApplication1->Connect();
} catch (...) {
Application->MessageBox(L"Word non installé", L"Erreur", MB_OK|MB_ICONSTOP);
}
WordApplication1->Visible=true;
WordApplication1->Documents->Add( Template, NewTemplate); // utilise le template
WordApplication1->Selection->ParagraphFormat->Alignment = WdParagraphAlignment::wdAlignParagraphCenter;
WordApplication1->Selection->Font->Name=StringToOleStr(UnicodeString("Verdana"));
WordApplication1->Selection->Font->Size=10;
WordApplication1->Selection->TypeText(StringToOleStr(UnicodeString("Calendrier")));
WordApplication1->Disconnect();
}
//---------------------------------------------------------------------------
Commentaires
Enregistrer un commentaire