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 :

[Delphi 7 Windows XP] Valider une cellule dans DBGrid


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut [Delphi 7 Windows XP] Valider une cellule dans DBGrid
    Bonsoir à tous.
    Voici mon problème : je voudrais qu' un clic dans une cellule d'un DBGrid affiche une donnée, qu'un second clic affiche une autre donnée, qu'un troisième clic affiche une autre donnée, etc... Pour ce faire, j'utilise un événement DBGrid1CellClick... Voici mon code simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
       // ici, je suis sur la bonne cellule
       if Table1.FieldByName('Ctrl').Value='' then
          TableCompte.FieldByName('Ctrl').Value:='A'
       else
           if Table1.FieldByName('Ctrl').Value='A' then
             TableCompte.FieldByName('Ctrl').Value:='X'
           else
       // etc...
    end;
    Ça marche, mais à condition qu'après chaque clic, je change de cellule (est-ce que ça valide la saisie ??), puis que je revienne sur ma cellule initiale pour le clic suivant. Ce que je voudrais : c'est pouvoir cliquer en série sur ma cellule pour y faire défiler les données A, puis X, etc...
    Merci d'avance à ceux qui vont se pencher sur mon petit problème.
    Cordialement,
    Alain
    PS : j'ai essayé vainement Application.ProcessMessages
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut
    Je viens d'essayer de valider après chaque clic en utilisant POST. Ça ne fonctionne pas plus.
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    As-tu essayer de gere le nombre de clique.

    Genre du utilise un variable global
    nbclique
    puis tu ajouter 1 a chaque clique
    ensuite tu test cette valeur et selon le nombre tu affiche tel ou tel valeur ?

    a+

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut
    Merci pour ta réponse, BuzzLeclaire.
    C'est une piste, je vais voir si je peux l'utiliser.
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut
    Je viens de résoudre mon problème... tout seul, par voie de conséquence, je suis désolé d'avoir déposé ce sujet et fait perdre du temps à quelques uns d'entre vous
    En fait, ma solution est une bidouille (d'ailleurs, je ne sais rien faire d'autre que de la bidouille). L'idée : changer de colonne par programmation, simuler un clic gauche , on peut alors cliquer à nouveau dans la colonne originelle ('Ctrl') sans avoir à déplacer la souris qui est restée à la même place (d'où l'impression de pouvoir cliquer en série sur ma cellule pour y faire défiler les données A, puis X, etc...). Voici mon nouveau code :
    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
    19
    20
    21
    22
     
    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
       // ici, je suis sur la bonne cellule
       if Table1.FieldByName('Ctrl').Value='' then
          Table1.FieldByName('Ctrl').Value:='A'
       else
           if Table1.FieldByName('Ctrl').Value='A' then
             Table1.FieldByName('Ctrl').Value:='X'
           else
       // etc...
     
       //AJOUT en fin de procédure
       // 1 - Je change de colonne  (je choisis n'importe quelle autre colonne, ici 'Nom')
       Table1.FieldByName('Nom').FocusControl;
          // 2 - Je simule un clic gauche (merci Developpez.com pour le code!!!) dans cette colonne)
          Mouse_Event(MOUSEEVENTF_LEFTDOWN , 0, 0, 0, 0);
          Mouse_Event(MOUSEEVENTF_LEFTUP,0,0, 0, 0);
          // 3 - Je peux maintenant recliquer dans ma colonne originelle 'Ctrl' sans avoir à déplacer la souris
       // Fin de l'AJOUT
     
    end;
    Bien sûr, je reste preneur d'un vrai code (un code élégant, en quelque sorte )
    Cordialement,
    Alain
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

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

Discussions similaires

  1. [LibreOffice][Tableur] Copier le contenu d une cellule dans le presse papier windows
    Par ryan44x dans le forum OpenOffice & LibreOffice
    Réponses: 5
    Dernier message: 10/04/2015, 08h15
  2. [XL-2010] VBA, valider une formule dans une cellule
    Par yann26 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/07/2014, 17h10
  3. [Débutant] Validation d'une cellule dans un dataGrid
    Par Amine38 dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 12/06/2012, 14h00
  4. Réponses: 12
    Dernier message: 05/03/2007, 11h52
  5. Validation de cellule dans DBGrid
    Par alainvh dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/11/2006, 16h41

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