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 :

Ddiagramme de Gantt sur Calc LibreOffice avec C++ Builder


Sujet :

C++Builder

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Ddiagramme de Gantt sur Calc LibreOffice avec C++ Builder
    Bonjour,

    Le but de mon projet, est de récupérer des variables dans un code en C++ écrit dans C++BuilderXE et d'afficher ces valeurs dans un fichier Calc de LibreOffice. Pour cela j'ai déjà utilisé les fonctions "OLE" d'OpenOffice, pour afficher du texte dans les cellules, de la couleur etc..., j'ai aussi réussi à faire des bordures en m'aidant d'un code en Pascal et de la doc d'OpenOffice car je n'ai pas trouvée de moyen de faire des bordures dans la FAQ, même si elle ma bien aidé pour le reste.

    Et maintenant je bloque sur le diagramme de Gantt, j'ai cherché des bout de code en C++ sur le web mais je n'ai rien trouvé.
    j'ai aussi le code en Pascal qui fait le diagramme de Gant, mais je n'arrive pas à faire comme j'ai fait avec les bordures où je m'aidais de la doc d'OpenOffice.

    Donc j'aimerais que quelqu'un réussisse à faire un code en C++ pour faire un diagramme de Gantt et l'afficher dans un feuille Calc s'il vous plait.

    Je vous passe aussi le code en Pascal, je pense qui si vous arrivez à le traduire, cela va fonctionner .

    Code pascal : 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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    // Une fois que les DVFV de chaque LF sont remplie dans la feuille OpenOffice, on dessine le diagramme
    Function Graph(feuille,NomGraph:string;cycle,Nbligne,Nbcolone:integer):variant;
    // feuille : nom de la feuille sur laquelle est inserer le graph,
    // Nomgraph : nom du graph
    // durée du cycle du plan de feux + structure,
    // nbligne : du tableau de données pour remplir la graph
    // nb de colonne : du tableau de donnée pour remplir le graph
     
    ///////// Ajoute le graphe sur la Feuille, le nomme, definie son type, le cycle maxi, les Echelles
    ///////// Les données sont traité dans la procedure Diagram
    var
     
      nb_feuille: integer;
      TableauPlageDonne : variant;
      aRect , Maplage : variant;
      GraphListe : Variant;  // liste des graph
      Graph : Variant;
      Diagram:variant;
      CapsuleGraph:variant;
      AxeY:variant;
      Point,Taille,Col_donnee:variant;
      NumCol,cpt,Xpoint,Ypoint,larg,long:integer;
     
    begin
     {  feuille:='Feuille22';
       NomGraph:='TT';
       cycle:=80;
       Nbligne:=32;
       Nbcolone:=8;   }
        Xpoint:=00;
        Ypoint:=00;
        larg :=27450;
        long :=16800;
     
        MaFeuille := MonClasseur.GetByName(feuille);
        // taille du rectangle encapsulant graph et position dans la feuille du rectangle
        CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection');
        CoreReflection.forName('com.sun.star.awt.Rectangle').createObject(aRect);
        aRect.X := Xpoint;
        aRect.Y := Ypoint;
        aRect.Width := larg;
        aRect.Height := long;
     
        // numero de la feuille sur laquelle il y a le graph
        for nb_feuille:= 0 to MonClasseur.getcount-1 do
        begin
               if MonClasseur.GetByIndex(nb_feuille).GetName= Feuille then break;
        end;
     
        // Plage de donnée du graph
        CoreReflection .forName('com.sun.star.table.CellRangeAddress').createObject(Maplage);
            TableauPlageDonne := VarArrayCreate([0, 0], varVariant);
            MaPlage.Sheet := nb_feuille;
            Maplage.StartColumn :=17;
            Maplage.StartRow :=1;
            Maplage.EndColumn :=Nbcolone+17;
            Maplage.EndRow :=NbLigne+1;
            TableauPlageDonne[0] := Maplage; //Mafeuille.getCellRangeByPosition(9,1,15,10);
     
        // Liste des graph de la feuille
        GraphListe := Mafeuille.getCharts;
        //Ajoute un nouveau graph à la liste des graphe avce les parametres
        // first bool: ColumnHeaders
        // second bool: RowHeaders
        GraphListe.addNewByName( NomGraph , aRect, TableauPlageDonne, false,true);
     
       // Pointe sur le graph
       CoreReflection .forName('com.sun.star.table.XTableChart').createObject(CapsuleGraph);
       CapsuleGraph:=  GraphListe.getByindex(0);
       Graph:=CapsuleGraph.getEmbeddedObject;
     
       // ajoute les services OOo liées au type de diagramme au Graphique
       Graph.CreateInstance('com.sun.star.chart.BarDiagram');
            Graph.setPropertyValue('HasLegend' , false);
            Graph.setPropertyValue('HasMainTitle' , false);
            Graph.setPropertyValue('HasMainTitle' , false);
     
       // Pointe sur le diagramme du graph
       diagram:=graph.getDiagram;
            diagram.setPropertyValue('Stacked' , true);
            diagram.setPropertyValue('Vertical', true);
     
       // determine la position ou est inséré le graphe
       CoreReflection.forName('com.sun.star.awt.Point').createObject(point);
         Point.X := Xpoint;
         Point.Y := Ypoint;
       // determine la taille du graphe dans le rectangle
       CoreReflection.forName('com.sun.star.awt.Size').createObject(taille);
         taille.width := larg;
         taille.height := long;
     
         diagram.setPosition (Point);
         diagram.setSize (taille);
     
       //Pointe sur l'axe des ordonnées du graph
       AxeY := diagram.getYAxis;
            AxeY.setPropertyValue('Max', Cycle);
            AxeY.setPropertyValue('Min', 0);
            AxeY.setPropertyValue('Origin',0);
     
       // Echelle du graphe
      if cycle>100 then AxeY.setPropertyValue('StepMain',5)
              else if cycle>60 then AxeY.setPropertyValue('StepMain',2)
              else AxeY.setPropertyValue('StepMain',1);
      AxeY.setPropertyValue('TextCanOverlap',False);
     
       //determine la couleur de chaque ligne : Balaye toutes les lignes du graph
       cpt:=1;
       for NumCol:=0 to NbColone-1 do
       begin
            //Pointe sur une ligne du graph ( colone dans le diagramme)
            Col_donnee:= diagram.getDataRowProperties(NumCol);
            // traite la couleur
            if cpt=3 then
            begin
                  Col_donnee.SetPropertyValue('FillColor',16777062);  // jaune
                  cpt:=0;
            end
            else if cpt=2  then
                 begin
                      Col_donnee.SetPropertyValue('FillColor',2359075);// vert
                      Col_donnee.setPropertyValue('DataCaption',1);   // indique qu'il faut afficher la valeur de la colonne
                 end
                 else Col_donnee.SetPropertyValue('FillColor',16711680);// rouge
     
            cpt:=cpt+1;
       end;
     
    //  if isNullEmpty(diagram) then MessageDlg(' cho y rine', mtInformation,[mbOk], 0);
      result:= diagram;
    // Graph.refresh;
    end;


    Merci d'avance et à bientôt

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    Nul besoin de traduire C++ Builder est parfaitement capable d'intégrer des fichiers fichiers Pascal (.pas=) dans un projet
    l'EDI générera automatiquement un fichier Obj, et un fichier hpp
    il ne te restera plus qu'a référencer le fichier hpp ainsi généré dans ton code c++
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

Discussions similaires

  1. Réponses: 13
    Dernier message: 19/05/2008, 19h50
  2. Questions sur le debuggage avec forms builder 9i
    Par david_m dans le forum Forms
    Réponses: 0
    Dernier message: 09/11/2007, 15h28
  3. question general sur triggers (liaison avec VB)
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/07/2004, 16h57
  4. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 11h51
  5. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 22h00

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