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 :

Repaint d'un DBComboBox


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut Repaint d'un DBComboBox
    Bonjour,

    J'ai divers controls dans un TDBCtrlGrid et j'utilise XPMenu pour modifier l'affichage.

    Seulement, pour les ComboBox, seul ceux étant dans la ligne en cours d'édition sont pris en compte par XPMenu. Une petite illustration :



    J'ai essayé ce bout de code mais cela ne change rien :

    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
    //---------------------------------------------------------------------------
    void __fastcall TForm7::DBComboBox1DrawItem(TWinControl *Control, int Index,
          TRect &Rect, TOwnerDrawState State)
    {
    Form1->XPMenu1->InitComponent(Control);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm7::DBCtrlGrid1PaintPanel(TDBCtrlGrid *DBCtrlGrid,
          int Index)
    {
    for (int i = 0; i < DBCtrlGrid->ComponentCount; i++)
        {
        Form1->XPMenu1->InitComponent(DBCtrlGrid->Components[i]);
        Form1->XPMenu1->InsertComponent(DBCtrlGrid->Components[i]);
        }
    }
    Avez-vous une idée de la cause du problème ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Bon, non seulement je n'ai pas pu corriger ce problème mais en plus, j'en ai plein d'autres.

    Tout d'abord, ma requète IBUpdateSQL->Modify ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Ligne_Devis SET Quantite = :Quantite WHERE Numero_ligne_devis= :old_Numero_ligne_devis
    Que je modifie la quantité ou un autre champs, cette requète ne fonctionne pas.

    Ensuite, quand on change une valeur d'un champs, ce n'est pas le onchange du composant en cause qui se lance mais le onchange d'autres champs.

    Je pense que le IBUpdateSQL->Modify se lance et provoque les onchange des différents champs par une sorte de refresh.

    Une idée?

    Existe-t-il un tutoriel sur les TDBCtrlGrid?

    Merci

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    En fait, la requète ne s'exécute quand donnant le focus à un élément ne faisant pas partie du DBCtrlGrid. Même en changeant de ligne la requète ne s'exécute pas.

    Comme je ne trouve pas comment récupérer le pointeur des TDBCtrlPanel autre que celui en cours de dessin, je suppose qu'il y a un lien.

    Comme je gère le changement de focus d'un composant à un autre par l'appuie de la touche entrée, il me faut aussi trouver la liste des TDBCtrlPanel.

    Personne n'a d'idée ou de piste ?

    Merci

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    En fait, je viens de m'apercevoir d'une chose. Si 3 ligne sont affiché dans le TDBCtrlPanel, DBCtrlGrid1->PanelCount est égal à 3. La valeur du DBCtrlGrid1->PanelIndex est également correct.
    Mais je ne trouve pas où trouver cette liste. Les propriétés DBCtrlGrid1->Controls et DBCtrlGrid1->Components ne peuvent pas être utilisées pour ça. Ils ne donnent qu'un accès à la ligne actuellement sélectionnée.

    Personne ne sait comment récupérer la liste des TDBCtrlPanel?

  5. #5
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    J'ai trouvé la solution.
    Il n'y a qu'un seul TDBCtrlPanel qui se dessine partout ou il faut et qui reste actif sur la ligne qu'il faut en fonction du panelindex du parent.

    Je n'ai pas trouvé comment faire pour donner la main au XPMenu avant que le TDBCtrlPanel ne passe à la ligne suivante.

    Du coup, les hint des composants enfants ne fonctionne pas, seul ceux de la ligne en cours fonctionne.

    Et pour parcourir les composants manuellement comme avec la touche tab, il faut utiliser panelindex.

    J'espère que ce monologue aidera un jour quelqu'un.

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

Discussions similaires

  1. [JPanel] paint, paintComponent et repaint ?
    Par Pill_S dans le forum Composants
    Réponses: 8
    Dernier message: 08/02/2013, 17h38
  2. [Graphisme][Débutant(e)] Problème sur repaint()
    Par Katyucha dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 08/10/2004, 17h12
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. Changement dbcombobox
    Par tomm dans le forum Bases de données
    Réponses: 4
    Dernier message: 23/02/2004, 14h54
  5. [XMLRAD] DBComboBox
    Par Pm dans le forum XMLRAD
    Réponses: 7
    Dernier message: 27/11/2002, 15h11

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