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 :

Problème de mise à jour d'un DrawGrid


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Par défaut Problème de mise à jour d'un DrawGrid
    Salut, j'ai un problème avec un drawgrid.

    J'en ai déjà utilisé de cette façon: dans le onDrawCell, j'appelais une function avec en arguments le ARow et Acol, et cette function allait chercher dans un tableau de tableau qui contient des Tcolor, la couleur de la case.

    Donc quand je changeais la couleur d'une case, il suffisait d'appeler la méthode invalidate et le drawgrid se mettait a jour. Ca fonctionnait tres bien.

    Maintenant mon problème: j'utilise la même technique, mais le changement de couleur doit se faire lorsqu'on clique sur une cellule.

    Au depart j'utilisais OnSelectCell et ça fonctionnait.
    Sauf quand je voulais que le changement de couleur se fasse dans une autre case que celle où j'ai cliqué. (Si par exemple je veux qu'en cliquant sur une case, ce soit celle du dessous qui change de couleur).
    Quand j'ai essayé ça, ça ne fonctionnait pas, on dirait que ondrawcell ne mettait a jour que la case séléctionnée.

    J'ai alors essayé avec onMouseDown, mais en fait ça met aussi la séléction(le focus) sur la cellule cliquée. Donc ça ne change rien.

    Donc ma question (enfin): comment faire pour mettre à jour la totalité de la grille et pas seulement la case séléctionnée? ( si c'est bien ça qui se passe comme je le pense).
    Est-ce qu'il suffirait qu'au niveau du onMouseDown je fasse un setFocus sur un element en dehors de la grille?

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,
    Citation Envoyé par Mushroom7
    comment faire pour mettre à jour la totalité de la grille et pas seulement la case séléctionnée?
    As-tu essayé avec un simple repaint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      DrawGrid1.Repaint;
    @+

  3. #3
    Membre chevronné Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Par défaut
    Hier je n'arrivais plus à mettre une couleur dans une case autrement qu'en cliquant dessus.

    C'est à dire que si je mettais une instruction pour changer la couleur d'une case ailleur que dans le onMouseDown, ça ne marchait plus.

    Avec repaint, ça marche !

    Mais il y a toujours le probleme avec les clics, et à force de tester j'ai remarqué ce qui se passe:
    Pour tester j'ai mis dans le onMouseDown une instruction qui doit changer la couleur de la case en dessous.
    Maintenant quand je clique sur une case, il ne se passe rien, par contre si ensuite je clique sur la case du dessous, elle change de couleur.
    Donc mon code fonctionne bien, ça met bien la couleur dans la bonne case au niveau de la matrice, mais l'affichage n'est pas modifié tant que je ne clique pas sur la case qui doit changer.

    Edit: Désolé c'est moi qui ai fait une erreur, dans le onMouseDown j'avais mis repaint au lieu de DrawGrid1.repaint, donc il repeignait je ne sais quoi mais pas le drawGrid.
    J'ai donc corriger ça et maintenant ça fonctionne en cliquant aussi.

    Un très grand merci à toi et joyeux noël.
    Grace à ça j'ai quasiment fini ma 1ere version jouable du P4

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Citation Envoyé par Mushroom7
    Un très grand merci à toi et joyeux noël.
    Il n'y a pas de quoi ! Bonnes fêtes à toi aussi.

    @+ Claudius

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

Discussions similaires

  1. [MySQL] Problème de mise à jour d'une table
    Par SnickeursMan dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 17/01/2006, 11h39
  2. Problème de mise à jour de données avec IBClientDataset
    Par Papino dans le forum Bases de données
    Réponses: 6
    Dernier message: 26/09/2005, 14h04
  3. [2000 Server] Problème de mise à jour windowsupdate !!
    Par rohstev dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 24/08/2005, 15h03
  4. Problème de mise à jour de base de données
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 26/05/2004, 11h38
  5. problème de mise à jour de BD
    Par tidiane dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/03/2004, 15h32

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