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 :

Détection PageControl ouvert


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut Détection PageControl ouvert
    J'ai un problème assez difficile à expliquer.

    J'ai ajouté un composant TpageControl avec 3 feuilles et dans chacunes de ces feuilles il y a un DBGrid.

    Sur le coté j'ai un bouton "modifier" pour modifier les informations d'une ligne dans un DBGrid. ça marche très bien, j'ai pas de problème mais j'utilise le même bouton "modifier" pour les trois feuilles et du coup quand je veux modifier disons une ligne de la feuille 2 et il m'ouvre le résultat de la fonction "Clickonbuttonmodifier" également pour la feuille 1.

    C'est du au fait que même quand je change de feuille il reste toujours une ligne en bleu ( celle sélectionnée ) du coup j'ai deux lignes en bleu si j'en sélectionne une autre dans la feuille 2. DONC il m'ouvre deux fenetres de modifications ( une pour chaque ligne ) ...

    Ce que je cherche en fait c'est à lui faire comprendre que quand la feuille 2 du TPageControl est ouverte, je m'en fous de la 1.

    Ou aussi, quand je change de feuille, il enlève la ligne sélectionnée en bleu ( il ne l'a plus en mémoire )...
    Thanks

  2. #2
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Je ne suis pas sûr de bien comprendre ton problème. Il te faut peut-être modifier l'option dgAlwaysShowSelection de ta DBGrid:

    dgAlwaysShowSelection La cellule sélectionnée affiche le rectangle de focalisation, même si la grille ne détient plus la focalisation.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Citation Envoyé par 10_GOTO_10 Voir le message
    Je ne suis pas sûr de bien comprendre ton problème. Il te faut peut-être modifier l'option dgAlwaysShowSelection de ta DBGrid:

    Merci pour ton aide mais malheureusement ça marche pas , je ne sais pas trop à quoi ça sert d'ailleurs parce que je vois pas franchement de différence. Mais le nom en effet semblait se rapprocher de ce que je cherchais...

  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
    Par défaut
    Salut dekalima
    Peut etre en utilisant l'evenement OnShow des TabSheet du TPageControl
    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
     
    void __fastcall TForm1::TabSheet3Show(TObject *Sender)
    {
    ShowMessage("TabSheet3 affiché");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::TabSheet2Show(TObject *Sender)
    {
    ShowMessage("TabSheet2 affiché");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::TabSheet1Show(TObject *Sender)
    {
    ShowMessage("TabSheet1 affiché");
    }

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Pour connaitre le Tab en cours sur un PageControl tu as la propriété ActivePageIndex (read/write).

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    merci à vous pour vos propositions mais ça marche pas en fait...

    Blondelle, j'ai essayé ce que tu m'as proposé mais c'est pas exactement ce que je recherche en fait...

    En simple : j'ai 3 feuilles dans un TPageControl et dans chacunes de ces feuilles j'ai un BDGRID.
    Quand je passe d'une feuille à l'autre dans l'exe, je voudrais qu'il ne garde pas en mémoire la ligne éventuelle sur laquelle j'aurais cliqué sur le DBGRID2 par exemple

    il ne faut qu'il y ait qu'une seule ligne bleue de "selection". à l'heure actuelle si je clique sur la première ligne du DBGRID1 et que je passe ensuite sur la feuille 2 avec le DBGRID2, il va me garder en bleu la ligne 1 du DBGrid1 même si je suis maintenant sur la feuille d'après.

    Et ça m'embête pas mal parce que par moment j'importe les valeurs contenues dans le DBGRID et du coup il m'affiche 3 fenetres différentes car ya 3 DBGRID avec une ligne en bleu

  7. #7
    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
    Par défaut
    Si tu sais selectionner une ligne d'un DBGrid tu dois savoir la deselectionner donc.
    Quand tu selectionne la TabSheet1 par exemple tu selectionne la ligne de ton DBGrid1 et tu deselectionne la ligne de tes DBGrid2 et DBGrid3.
    Quand tu selectionne la TabSheet2 tu selectionne la ligne de ton DBGrid2 et tu deselectionne la ligne de tes DBGrid1 et DBGrid3.
    Quand tu selectionne la TabSheet3 tu selectionne la ligne de ton DBGrid3 et tu deselectionne la ligne de tes DBGrid1 et DBGrid2.
    Apres en appuyant ton Button "Modifier" c'est bien la bonne ligne du bon DBGrid qui est modifie

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Nan ça marche pas, même manuellement quand je double clique sur une ligne pour la remettre en blanc, quand je reviens sur la feuille après il m'a reselectionné la première ligne par défaut et la met en bleu.

    argh

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Sinon j'ai trouvé ce lien : http://www.phwinfo.com/forum/nzn-fr-...ion-ligne.html

    Le mec semble vouloir faire comme moi
    j'ai tenté de faire dans l'évènement DBGridDblClick ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::DBGrid3DblClick(TObject *Sender)
    {
    DBGrid3->SelectedRows->Delete();
     
    }
    Mais ça fonctionne pas non plus

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Bon j'ai testé la ligne :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBGrid3->SelectedRows->Delete();
    Et elle fonctionne bien quand je la lance sur un évènement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::Button8Click(TObject *Sender)
    {
    DBGrid3->SelectedRows->Delete();
    }
    Donc le problème vient de l'évènement " on change de feuille dans le TpageControl"

    Quel est l'évènement qu'on utilise pour signifier qu'on change de sheettab?
    thanks

    PS: l'évènement OnChange et OnChanging ne marchent pas chez moi

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void __fastcall TForm1::TabSheet1Enter(TObject *Sender)

    OnEnter du TabSheet

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Bon en fait, je crois que j'ai un bug dans mon programme car malgré toutes ces précautions , quand je clique sur une ligne du DBGrid1 il va me sélectionner la meme ligne sur le DBGrid2 qui est sur une autre feuille

    c'est à se tapper la tête contre les murs ce truc

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    C'est bon je me suis démerdé, ça marche correctement.
    Merci à vous.

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Tu pourrais poster ta solution ?

    Le but étant d avoir une base de connaissances ...

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Ouaip en effet:

    En fait... par ou commencer... donc j'ai deux feuilles dans un TPageControl et plutot que de me soucier de la ligne que sélectionne chaque DBGrid1, je filtre au moment ou je cherche à modifier ces lignes en questions...

    Et pour les filtrer c'est tout con:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (Form1->PageControl1->ActivePageIndex==0)
    0 pour la feuille 1, 1 pour la feuille 2 ect...

    En fait c'était tout con mais je me focalisais sur comment enlever ces lignes en bleu et pas sur une manière de les laisser mais de les filtrer...
    voilà

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Oui bien sur

    Parcontre si tu devais avoir un plus grand nombre de tab , n hesites pas à utiliser switch case plutot qu une sucession de if

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    Parcontre , regardes :

    J ai un pagecontrol et un nb indeterminé de tab contenant chacun un memo

    A chaque changement de tab , j ecris l index du tab dans le memo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TMemo *LeMemo = NULL;
     
    LeMemo = dynamic_cast<TMemo *> (Form1->FindComponent("Memo" + IntToStr(PageControl1->ActivePageIndex+1)  ));
          if (LeMemo != NULL)
          {
             LeMemo->Text = PageControl1->ActivePageIndex;
            // ou ce que tu veux
          }
    Tu n aurais qu à remplacer tes memos par des dbgrid et faire l traitement que tu veux

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 265
    Par défaut
    Merci,
    J'ai pas tout compris dans ton code mais je le garde sous la main au cas ou!

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

Discussions similaires

  1. [XL-2003] Détection fichier excel partagé ouvert?
    Par JeanSairien dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2010, 16h59
  2. Détections avec WebBrowser
    Par Wazo_Sportive dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/08/2002, 19h32
  3. Détection de 2 touches appuyées
    Par cyrose dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 16h25
  4. Accès à une application ouverte (OLE Automation ?)
    Par PascalB dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/06/2002, 14h39
  5. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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