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

C++Builder Discussion :

Utilisation du MsWord dans c++ builder


Sujet :

C++Builder

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Utilisation du MsWord dans c++ builder
    Bonjour tous le monde;

    J'ai un petit programme a réaliser qui a pour pour but d'imprimer des ordres de mission.

    Donc on a un modèle d'ordre mission sous MsWord, alors j'ai créer :

    - Une " CheckListBox "= pour sélectionner les Agents ayants une mission.

    - Des " ComboBox "= pour choisir la destination / motif de déplacement...etc

    - des " Edit ".

    * Pour l'étape d'insertion de texte dans le modèle j'utilise la méthode des "Signet", mais j'ai un problème :

    par exemple on a :

    Nom, Prénom : .........................Nom Prénom............................

    Alors pour inséré le texte j'ai utiliser Signet = NomPrenom

    Mais le problème dans les points qui suivent le nom et prénom, je veut une solution pour inséré des points juste après le Prénom et s'arrête à la fin de la ligne.

    * lorsque le programme termine l'imprimssion du premier ordre mission est ce que je ferme Word et je répète l'opération pour les autres agents ou seulement je fait un clear de tous ce que j'ai met dans l'ordre mission n°1.


    * S'il y a d'autre méthode que je pourrai utiliser (autre que les Signet) merci de m'indiquer un tuto ou autre chose.

    Et à la fin merci de bien vouloir répondre.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    est ce qu'il faut une explication en plus ?! si oui y a pas de problème.

    Merci et j'attend vos réponses.

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 789
    Points : 25 777
    Points
    25 777
    Par défaut
    Word tu veux faire de la Fusion de Document
    Signets = champs de fusion ?
    Si tu défini le champs de fusion NomPrenom, tu peux lier à un fichier CSV, il va lui même générer tous les courriers via son module de publipostage !
    J'ai déjà vu 5000 fichiers générés en une seule passe avec Word 2000, fallait pas allez plus loin !

    Ce sujet pourrait t'interesser "publipostage avec delphi"

    Comment exécuter un mailing ?

    Pour les Points, tu dois pouvoir dans ton modèle appliquer un style ou mettre une ligne pointillé, le champ de fusion étant par dessus l'objet de dessin

    Je pense que vouloir le gérer à la main sera pénible, tu vas estimer le nombre de point comment ? leur nombre ? leur dimension imprimable ?

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut aywa03
    Pour commencer ce que tu demande est-ce pour un usage professionnel ou un sujet de cour, tes donnees vont elles evoluer, si c'est le cas il faut mieux utiliser une base de donnees soit sous Excel soit sous Access, c'est possible aussi sous Word (moins facile), a tu regarde la FAQ il y a aussi un tuto sur le site pour demarrer, un lien sur le Forum pour le publipostage

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Je vous remercie pour les réponses.

    Le programme que je veut réaliser c'est pour un usage professionel, mon projet se divise en deux parties:

    1- Remplir des ordres de mission (bien sur les imprimés) sous Microsoft Word.

    2- Remplir les états d'ordre mission pour tous les agents sous Microsoft Excel.

    un exemple:

    J'ai l'ordre de mission comme suit:

    Mr (Nom, Prénom):..................Builder Delphi...........................

    Destination:..............................Paris...................................

    etc.....

    Généralement on a deux à trois personnes par mission donc j'ai réaliser mon programme avec une CheckListBox pour sélectionner les noms des agents.

    Dès que un nom est coché l'opération d'insertion de texte dans le modèle d'ordre de mission commence (j'ai utilisé les signets car si tous ce que j'ai trouver pour l'instant comme solution).

    Et pour la deuxième partie du projet j'ai pas encore commencer donc y a pas de problème pour l'instant

    Et a propos de la méthode du publipostage j'aunai aucune idée, s'il y a des tuto qui explique dès le début ca sera impeccable.

    Merci tous le monde.

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Il y a peut de chose sur le pilotage Office.
    Sur le site il y a ceci un Tuto pour demarrer Word, un Tuto pour demarrer Excel et la FAQ, je te conseille d'y jeter un oeil avant de commencer, tout ce que tu trouvera est une traduction de VisualBasic pour Office voici les liens sur le site

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Justement j'utilise les tutoriels du developpez.net, et j'avance très bien avec le projet y a seulement le problème de mise en page (les points à ajoutés).

    Car j'ai essayer avec une ligne pointillé mais coté esthétique ca va pas, donc j'ai penser à un programme :

    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
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int i ;
    String Nom;
     
       for(i=0 ; i < CheckListBox1->Items->Count ; i++)
       {
          if(CheckListBox1->Checked[i])
          {
            Nom =CheckListBox1->Items->Strings[i] ;
     
             vBookMarks = vWDocument.OlePropertyGet("BookMarks");
             if (vBookMarks.OleFunction("Exists", "NomPrénom"))  // ici NomPrénom est notre signet dans Ms Word
               {
     
                vBookMark = vBookMarks.OleFunction("Item", "NomPrénom");
                vBookMark.OleFunction("Select");
     
     
                vContent = vBookMark.OlePropertyGet("Range");
                vContent.OleFunction("InsertAfter", WideString(Nom));
     
    // ICI JE VEUT AJOUTER UNE CONDITION:
     
    si (! fin de ligne) 
     
     vContent.OleFunction("InsertAfter", "."); // on ajoute un point
     
    else // on sort de la boucle
     }
    Donc je suis entraine de chercher comment je peut réaliser la dernière partie du programme.

    à la fin merci de bien vouloir répondre et bientôt

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Tu doit recuperer le nombre de caracteres de ta chaine "NomPrenom", et tu doit savoir le nombre maximal de caracteres que tu peut inscrire sur ta ligne par difference tu sait le nombre de caracteres "." a inserer

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 789
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 789
    Points : 25 777
    Points
    25 777
    Par défaut
    Lol, Blondelle, tu n'as pas lu ma remarque du "21/02/2011 18h05" :
    vouloir le gérer à la main sera pénible, tu vas estimer le nombre de point comment ? leur nombre ? leur dimension imprimable ?
    Parce que si tu as une police proportionnelle à chasse variable comme sur le texte du Forum, ta solution peut-être Bancale !

    5+1+9 = 15 on aligne sur 100 donc
    "..........................................Lilou Multipass..........................................."
    "..........................................William Mewanou..........................................."
    7+1+7=15
    10+1+6=17
    ".........................................Fidinirina Milory.........................................."
    ".........................................Jean-Baptiste Say.........................................."
    13+1+3=17

    Je le sais bien pour avoir tenter le faire, il y a bien 10ans, je suis passé par un TRichEdit pour enregistrer mon RTF, et l'avantage, c'est comme on connait bien la Font en Cours avec les API on peut calculer la Taille du Texte !

    Avec Word, faudrait voir si il existe aussi des API pour le Calcul de la Taille du Texte, ou alors le bidouiller dans l'appli (si la Font est définie de la même façon dans un Word et dans un Canvas.Font ça devrait donner le même résultat !)

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Pour l'instant j'ai pas trouver une solution efficace. En consultant fac du C++ builder (developpez.com) j'ai trouver ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    vMSWord.OlePropertyGet("Selection").OleProcedure("EndKey");
    Si j'exécute cette ligne j'atteins la fin de la ligne, donc j'ai penser de travailler avec ça pour inséré des points "." jusqu'à la fin de la ligne.

    J'attend vos réponses.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    pas de nouvelle bonne nouvelle !

  12. #12
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Peut etre des elements de reponse, pour connaitre le nombre de caracteres d'une chaine en C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String chaine = "essai";
    int a = chaine.Length()
    Pour connaitre le nombre de caracteres sur une ligne d'une page Word, a ma connaissance ce n'est pas possible directement voici une solution qui fonctionne chez moi quelque soit la dimension de la police utilisee, il n'a pas ete pris en compte les retraits droit et gauche, fonte utilisee Times New Roman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ' mgd marge droite
    ' mgg marge gauche
    ' a largeur de la page
    ' b largeur d'un caractere
    ' c nombre de caracteres par ligne(arrondir la valeur)
    mgd = PointsToCentimeters(ActiveDocument.PageSetup.RightMargin)
    mgg = PointsToCentimeters(ActiveDocument.PageSetup.LeftMargin)
    a = PointsToCentimeters(ActiveDocument.PageSetup.PageWidth)
    a = a - mgd - mgg
    b = PointsToCentimeters(ActiveDocument.Range.Font.Size) / 2
    c = a / b

Discussions similaires

  1. Utiliser une classe .net dans C++Builder
    Par gandf dans le forum C++Builder
    Réponses: 0
    Dernier message: 07/04/2010, 00h12
  2. Libraire OCR utilisable dans C++ Builder 6
    Par Tenguryu dans le forum C++Builder
    Réponses: 1
    Dernier message: 13/01/2007, 23h06
  3. Utilisation du XML dans C++Builder 6 Pro
    Par Faith's Fall dans le forum C++Builder
    Réponses: 15
    Dernier message: 08/03/2005, 16h08
  4. Utilisation de 'vieilles' libraires dans C Builder 6
    Par Gore dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/10/2004, 22h31
  5. VCL de Crystal Report pour utilisation dans C++Builder
    Par dibak dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/02/2004, 18h04

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