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

MFC Discussion :

[MFC] SDI - actualisation de CGridCtrl


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut [MFC] SDI - actualisation de CGridCtrl
    bonsoir,

    dans mon projet SDI j'utilise des CGridCtrl .

    Mon appli est une espèce de tableur, les CGridCtrl ressemblant fortement à des feuilles Excel.

    Certaines cellules doivent prendre une valeur (abus de langage) selon ce que contiennent d'autres cellules.

    (les cellules bleues sont modifiables par l'utilisateur, les autres sont soit figées, soit dépendantes des bleues)

    mon problème est que je ne sais pas comment faire pour que le fait de modifier le champ d'une cellule entraîne le recalcul (et le réaffichage) du CGridCtrl (ou mieux, uniquement des cellules susceptibles d'être modifiées par cette action).

    j'ai bien une vague idée, mais je ne suis pas sur du message à intercepter.

    NOTE : CGridCtrl est un "custum control" (i.e. on ne propose pas de messages dans le classwizard)

    merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    le grid est avant tout une fenetre simple ,pour raffraichir une fenetre il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_Grid.Invalidate();

  3. #3
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    salut,

    :o ok pour le Invalidate(),

    mais la question que je me pose, c'est où dire "l'utilisateur a modifié une cellule, réactualiser" ?

    je fais un OnChangeQuelquechose() ?

    je déclare la fonction dans la classe du Dialog qui contient le CGridCtrl ?

    pour l'instant, ce que je sais faire c'est une action quand on appuie sur un bouton, ou quand on clique sur quelquechose. (et le classwizard me propose les choix pour le control)

    là ça ressemble un peu à un évènement CLICK, ou peut-être ONCHANGE ?

    c'est dans cette méthode que je mets le Invalidate() ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    si tu regardes le header GridCtrl.h il y a des notifications d'evenements envoyés a la classe parent :
    par exemple:
    GVN_ENDLABELEDIT qui t'informe fe la fin d'edtion d'une cellule.
    ces messages sont a mettre manuellement dans le message map de la classe parent sous forme de message notify :
    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
     
    BEGIN_MESSAGE_MAP(CDlg,CDialog)
    	//{{AFX_MSG_MAP(CDlg)
    	ON_WM_DESTROY()	
    	//}}AFX_MSG_MAP
    ON_NOTIFY(GVN_ENDLABELEDIT, IDC_GRID, OnEndInPlaceEdit)
    ON_NOTIFY(GVN_BEGINLABELEDIT,IDC_GRID, OnBeginInPlaceEdit)
    ON_NOTIFY(GVN_DELETEITEM,IDC_GRID, OnDeleteItem)
     
    END_MESSAGE_MAP()
     
    //-------------------------------------------------------------------
    void CDlgInputOrders::OnEndInPlaceEdit(NMHDR* pNMHDR, LRESULT* pResult)
    {
    	GV_DISPINFO *pgvDispInfo = (GV_DISPINFO *)pNMHDR;
            GV_ITEM     *pgvItem = &pgvDispInfo->item;
    //..................
    }

  5. #5
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par défaut
    rock'n'roll !

    j'ai fais un ptit test qui marche (afficher le nom du CGridCtrl qui a été modifié).

    on verra plus tard pour coder l'action à réaliser (mettons dans 2 ou 3 heures )

    merci

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

Discussions similaires

  1. [MFC] (SDI) raccourcis clavier
    Par tut dans le forum MFC
    Réponses: 6
    Dernier message: 07/04/2006, 11h37
  2. Réponses: 21
    Dernier message: 09/02/2005, 08h35
  3. [MFC] SDI - pb avec OnInitialUpdate()
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 22/11/2004, 14h30
  4. [MFC/SDI] BMP a la place d'un bouton
    Par gargle dans le forum MFC
    Réponses: 2
    Dernier message: 28/07/2004, 11h26
  5. Réponses: 4
    Dernier message: 14/06/2004, 09h29

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