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

Bases de données Delphi Discussion :

probleme avec le PageControl


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut probleme avec le PageControl
    Bonjour à tous!
    voici , j'ai un probleme avec mon composant PageControl.
    Mon composant PageControl a trois feuilles (Tabsheet) et à côté de ce composant, j'ai trois composant TDBChart ; chaque TBDChart donne un graphique selon que l'onglet du PageControl change . J'ai supperposé les TDBChart les uns sur les autres.
    - Dans le premier onglet , je calcule les recettes et j'affiche le graphique des recettes dans un TBDChart.
    - Dans le second onglet , je calcule les entrees de caisse et j'affiche aussi le graphique correspondant
    - dans les troisième onglet , je calcule les sorties et j'affiche le graphique .
    ce qui dit , lorsque je passe d'un onglet à l'autre , je voudrais voir le graphique correspondant.

    au prealable, j'ai mis dans l'evenement OnShow de la form TDBChart des recettes à visible = true et les autres à visible = false afin de voir lorsque la feuille s'ouvre les recettes et le graphique.

    mais j'ai fait ceci ensuite:
    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
    procedure TStatistiqueForm.PageControl1Change(Sender: TObject);
    begin
       if Pagecontrol1.ActivePage = Tabsheet1 then
       begin
        ChartRecette.Visible:=True;
       end;
     
       if Pagecontrol1.ActivePage = Tabsheet2 then
       begin
        ChartEntree.Visible:=True;
       end;
     
      if Pagecontrol1.ActivePage = Tabsheet3 then
       begin
        ChartSortie.Visible:=True;
       end;
    end;
    lorsque j'execute ce code, lorsque je passe d'un onglet à l'autre, ça marche; mais lorsque je reviens sur un onglet que j'ai deja vu et que je voudrais de nouveau voir , le TDBChart ne change pas, il reste sur le dernier TDBChart vu.
    je ne sais comment pallier à cela.
    Merci de votre aide.

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    la solution va te faire sourire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TStatistiqueForm.PageControl1Change(Sender: TObject);
    begin
       //cacher tous les charts
       ChartRecette.Visible:=False;
       ChartEntree.Visible:=False;
       ChartSortie.Visible:=False;
       //afficher uniquement le chart adéquat
       if Pagecontrol1.ActivePage = Tabsheet1 then
        ChartRecette.Visible:=True
       else if Pagecontrol1.ActivePage = Tabsheet2 then
        ChartEntree.Visible:=True
       else 
        ChartSortie.Visible:=True;
    end;
    ou encore, en supposant que Tabsheet1,2 et 3 ont respectivement pour index de page 0, 1 et 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TStatistiqueForm.PageControl1Change(Sender: TObject);
    begin
       //cacher tous les charts
       ChartRecette.Visible:=False;
       ChartEntree.Visible:=False;
       ChartSortie.Visible:=False;
       //afficher uniquement le chart adéquat
       case Pagecontrol1.ActivePageIndex of
         0: ChartRecette.Visible:=True
         1: ChartEntree.Visible:=True
         2: ChartSortie.Visible:=True;
       end;
    end;
    voilà, tu comprends à présent pourquoi ça ne marche pas.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 107
    Points : 115
    Points
    115
    Par défaut
    Je croie que c'est juste un problème de rafrechissment vous devez alors essayé de mêtre la propriété AutoRfresh=True;

  4. #4
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut


    qu'est ce que je pense comme ProgD il faut desactiver le TBDChart et l'activer ou le Table qui le connect , ou un refrech.

  5. #5
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    Desole..............

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci pour votre aide à tous!
    j'ai essayé le code d'evarisnea , mais il ne me donne que le premier TDBChart, et je crois que c'est parce que dans l'evenement OnShow de la form , j'ai mis ChartRecette.Visible:=True; et les autres à visible=false;
    ce qui dit , lorsque je lance mon application , il se trouve par defaut sur ChartRecette, mais lorsque je change d'onglet , il y a rien , même pas un Chart, et lorsque je reviens sur le premier onglet , je vois le ChartRecette.
    j'ai même mis les propriétés AutoRefresh de ces TDBChart à true dans l'evenement Onchange du PageControl, mais toujours rien qui marche normalement.
    Merci pour votre aide.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    Le meme code mais sans conditions...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     ChartRecette.Visible:=(Pagecontrol1.ActivePage = Tabsheet1);
     ChartEntree.Visible:=(Pagecontrol1.ActivePage = Tabsheet2);
     ChartSortie.Visible:=(Pagecontrol1.ActivePage = Tabsheet3);
    au début , le code peut paraitre pas tres lisible mais maintenant je préfere ça a des conditions

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci Didier2020 pour ta solution, mais ça donne toujours la même chose; savoir le premier TDBChart , le ChartRecette seulement , donc lorsque je change d'onglet , je ne vois rien. lorsque je reviens sur le premier onglet , je vois le ChartRecette , mais lorsque je vais sur un autre onglet , je ne vois rien.
    Vraiment je ne sais pas comment regler cette situation.
    Merci pour votre aide

  9. #9
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    je suis tous a fait d'accord avec evernissa il faut cacher les autres Dbchart pour afficher celui voulour cars il faut pas oublier qu'il sont superposer essai


  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci pour le code, j'ai essayé , toujours le même resultat que les fois dernières.

  11. #11
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    @ aityahia : c'est bien evarisnea et non evernissa puisque l'on cache tous les autres charts pour n'en afficher qu'un seul, BringToFront n'est pas trop nécessaire je trouve.
    @ didier2020 : ton code est plus lisible que le mien, je l'adopte pour l'exemple que je poste
    @ tchimou : le titre des charts est il quand même affiché malgré tout ?
    voici un projet basique qui fonctionne.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    oui c'est vrai que c'est pas nécéssaire dans ton exemple, mais si il opte a utiliser bringToFrint il na pas a cahcer les autres DbChart il aura une seul ligne de commande pour chaque DbChart.

    le DbChart en premier plan cache tous les autres alors il faut juste remonter en surface le DbChart Voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Procedure TStatistiqueForm.PageControl1Change(Sender: TObject);
     begin
      Case Pagecontrol1..ActivePageIndex of
         0 : ChartRecette.BringToFront;
         1 : ChartEntree.BringToFront;
         2 : ChartSortie.BringToFront;
       end;
    end;

  13. #13
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par aityahia
    oui c'est vrai que c'est pas nécéssaire dans ton exemple, mais si il opte a utiliser bringToFrint il na pas a cahcer les autres DbChart il aura une seul ligne de commande pour chaque DbChart.

    le DbChart en premier plan cache tous les autres alors il faut juste remonter en surface le DbChart Voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Procedure TStatistiqueForm.PageControl1Change(Sender: TObject);
     begin
      Case Pagecontrol1..ActivePageIndex of
         0 : ChartRecette.BringToFront;
         1 : ChartEntree.BringToFront;
         2 : ChartSortie.BringToFront;
       end;
    end;
    c'est vrai

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 121
    Points : 59
    Points
    59
    Par défaut
    Merci à tous!
    je viens de trouver l'erreur;au fait , j'avais deposé mes TDBChart les uns sur les autres, alors le premier reagissait comme un contenaire et prenait à lui seul les autres TDBChart, donc c'est ce qui faisait que je ne voyais qu'un seul malgré toutes les solutions que je recevais de votre part.
    J'ai donc mis mes TDBChart sur ma form , et après seulement je les ai superposé, et là , j'ai repris le premier post d'evarisnea, et tout marche à merveille.
    Merci pour votre aide à tous.

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

Discussions similaires

  1. probleme avec l'objet PageControl
    Par tchimou dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/04/2007, 12h06
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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