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

 Delphi Discussion :

Creation dynamique de chart sur une GridPanel


Sujet :

Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Creation dynamique de chart sur une GridPanel
    Bonjour,
    Pour des raisons d'IHM je souhaite être capable d'afficher de 1 à N (le nombre m'est retourné par une requêtes) DBChart dans une gridpanel.

    J'ai donc crée le type suivant pour pouvoir avoir un nombre de DBChart variable.

    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
      //tableau dynamique de DBChart
      TTabDBChartDyn = array of TDBChart;
     
      MesDBCharts : TTabDBChartDyn;
     
      //exemple d'utilisation
      setlength(MesDBCharts,1);
      MesDBCharts[0] := TDBChart.Create(nil);
      MesDBCharts[0].AddSeries(HighLowSeries1).DataSource := SPCLimites1;
      MesDBCharts[0].AddSeries(HighLowSeries2).DataSource := SPCLimites1;
      MesDBCharts[0].AddSeries(HighLowSeries3).DataSource := SPCLimites1;
      MesDBCharts[0].AddSeries(LineSeries1).DataSource := MyQuery3;
     
      //ajout dans mon gridpanel
      gridpanel1 ???
    Le soucis c'est que je suis incapable d'afficher les DBCharts de mon tableau dans mon gridpanel car je ne suis pas en mode design.
    un coup de :F1: sur les GridPanel ne m'as pas permis de venir a bout de mon problème, et je n'ai pas trouver de tutoriel sur les GridPanel, d'où mon appel à l'aide.

    Si par ailleurs, quelqu'un a une solution "plus propre" pour ce type de problème, je suis preneur.

    Merci

  2. #2
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    Je ne connais pas le GridPanel, quel est le but de son utilisation?
    à+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    GridPanel est un grille de panel en fait. Ce qui me permettrai d'associer un DBChart par panel.

    hélas, je ne connais pas très bien ce composant non plus.

  4. #4
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Il manque simplement l'affectation du Parent.

    Edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      MesDBCharts[0].Parent := GridPanel.??? (je ne connais pas ce composant)
     
    // Avec un Panel ça aurait été
      MesDBCharts[0].Parent := MonPanel;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    lors de mes recherches sur la création dynamique de composant ce terme revenait souvent. Je n'ai pas encore ces notions sur les parents. Aurai-tu un exemple par hasard?
    je vais orienté mes recherches dans cette direction merci.

    Edit : je viens de trouver ceci http://delphi.developpez.com/faq/?pa...ondyncomposant
    dans la FAQ. J'espère que ça me sera utile.
    Merci d'avoir aiguiller mes recherches.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    Je demandais le but c'est parce que pour moi avoir des graphiques qui ne seraient pas tous visibles n'aurait pas trop d'interret. Autant en voir peu (avec une visibilité confortable) et leur assigner des séries en fonction du besoin?

    à+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    @ Linkin.

    Merci pour ton code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MesDBCharts[0].Parent := GridPanel
    fonctionne bien.

    @banban54

    Je ne peut pas superposer différents graphes car pour chaque graphe j'ai trois Highlowseries qui varie selon le graphe. D'où la nécessite de refaire un nouveau Charts, ne serait ce que pour l'échelle par exemple.

    avoir des graphiques qui ne seraient pas tous visibles
    justement, je represente tous mes graphiques. Seulement, je peut en avoir 1, comme 10.

    Si mon "fond" de graphe avait été commun entre tous, j'aurai adopter ta solution.

    Merci à vous deux, garce à vous j'ai découvert une nouvelle partie de delphi.

  8. #8
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Un petit Clic sur Résolu en bas?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    c'est déjà fait.

  10. #10
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Oups je n'avais pas vu
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    Maintenant que je sais comment ajouter dynamique des composants sur une grid panel (ou un panel) je me trouve face au probleme inverse :
    Comment supprimer un composant ajouter dynamique sur un panel ?

    Mon programme ajoute mes graphique les un à la suite des autres, or je voudrais supprimer les anciens graphe au fur et a mesure.
    Je suis a cour d'idée...
    Merci

  12. #12
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Je pense à une variable globale à la fenetre par exemple, du genre TObjectList, auquel tu ajoutes tes graphes et un simple Clear les détruiras.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    J'ai essayé de détruire mon tableau MesDBCharts mais cela n'as pas eu grand succès.
    je mis suis peut être mal pris.

  14. #14
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour
    Citation Envoyé par sapin Voir le message
    Mon programme ajoute mes graphique les un à la suite des autres, or je voudrais supprimer les anciens graphe au fur et a mesure.
    Je suis a cour d'idée...
    Merci
    c'est un peu ce que je voulais dire dans mon post précédent!
    La solution est peut-être :
    1- créer dynamiquement un nombre maximum de graph comme tu le fais
    2- lorsque nombremax est atteint, faire glisser les les données (séries) d'un graph à un autre (comme une FIFO) du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 1 to nombremax  do MesDBCharts[i - 1] := MesDBCharts[i]; //  ou := copy(MesDBCharts[i]) ?
    MesDBCharts[nombremax]..// et là tu crée tes nouvelles séries sans création de chart
    plus besoin de détruire...
    à+

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut
    A chaque fois que j'appuie sur un bouton voici mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    nbgraphe := MyQueryacq.RecordCount;
    setlength(MesDBCharts,nbgraphe);
    For I := 0 to nbgraphe - 1 do
      begin
        //creation du charts
        MesDBCharts[I] := TDBChart.Create(nil);
        MesDBCharts[I].Parent := GridPanel1;
     ...
      end;
    Comme je l'avais pensé, la grid chanel ne doit prendre que MesCharts et ecrasé les anciens.
    Seulement, il doit i avoir un indice a remettre a zéro car les graphe s'inscrive les un à la suite des autres.
    Je suis donc a la recherche d'une méthode remettant à zéro la gridpanel

    @ banban54 : ton code ne semble pas répondre a mon probleme, comme tu le dit c'est un peu comme si tu géré une FIFO, or moi il me faut supprimer N anciens graphe de ma gridpanel puis inséré les M nouveaux graphes dans ma gridpanel.

  16. #16
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    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
     
     
    For I := 0 to Length(MesDBCharts)- 1 do
    begin
        MesDBCharts[i].Free;// Destruction de l'objet TDBChart
        MesDBCharts[i] := nil; // Désaffectation du pointeur
    // (Peut être remplacé par FreeAndNil(MesDBCharts[i]);
    end;
     
    nbgraphe := MyQueryacq.RecordCount;
    setlength(MesDBCharts,nbgraphe);
    For I := 0 to nbgraphe - 1 do
      begin
        //creation du charts
        MesDBCharts[i] := TDBChart.Create(nil);
        MesDBCharts[i].Parent := GridPanel1;
     ...
      end;
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 61
    Points
    61
    Par défaut Resolu
    Merci Linkin.
    Ta solution marche parfaitement. Je tenter de détruire le tableau MesDBCharts et non pas les DBCharts.

    Un grand merci à vous deux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creation de plusieurs instance sur une meme machine
    Par niro75 dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 23/05/2007, 10h02
  2. [VBA-E] Creation d'un graphique sur une userform
    Par size_one_1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/12/2006, 17h15
  3. Réponses: 7
    Dernier message: 18/09/2006, 10h38
  4. Réponses: 4
    Dernier message: 18/04/2006, 22h09
  5. Création dynamique de méthode sur une classe ?
    Par elitost dans le forum Général Java
    Réponses: 9
    Dernier message: 18/10/2005, 14h47

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