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

Composants VCL Delphi Discussion :

Intercepter la fin de saisie une cellule TStringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 260
    Points : 171
    Points
    171
    Par défaut Intercepter la fin de saisie une cellule TStringGrid
    Bonjour

    Comment peut-on intercepter la fin de saisie une cellule ?

    j'ai testé les événements suivants :

    - OnGetEditText : C'est trop tard, pour effectuer le contrôle de la cellule.
    - OnSetEditText : C'est trop tôt, pour effectuer le contrôle de la cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (ACol = 1) and (Value <> 'ABC') then
     begin
       ShowMessage('Valeur incorrecte !');
     end;
    Merci.
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  2. #2
    Membre actif
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 105
    Points : 235
    Points
    235
    Par défaut
    Salut,
    Moi j'utiliserais l'évènement OnKeyPressed de ta grille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.grid1KeyPress(Sender: TObject; var Key: Char);
    var Contenu : string;
    begin
      with grid1 do
      begin
        contenu := cells[Col, row] + key;
       if (col = 2) and (contenu='ABC') then
          showmessage('Err Msg');
      end;
    end;
    Qq'chose comme çà.
    Bon courage.

    solilog

  3. #3
    Membre habitué Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 260
    Points : 171
    Points
    171
    Par défaut InputBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.MyGridDblClick(Sender: TObject);
    var
      Value: String;
    begin
      if MyGrid.Col = 1 then
       begin
         Value := InputBox('...', 'Valeur', EmptyStr));
     
         if Value <> 'ABC' then
          ShowMessage('Valeur incorrecte !')
        else
         MyGrid.Cells[1, FieldList.Row] := Value;
       end;
    end;
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    je trouve ces solutions peu élégantes.

    pourquoi ne pas utiliser le OnSelectCell ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
      ARow: Integer; var CanSelect: Boolean);
    begin
    if (StringGrid1.Cells[2,ARow]<>'ABC') AND (ACol<>2) then
     begin
    //  Showmessage('Error col 2');
      Canselect:=False;
      StringGrid1.Col:=2;  // force la sélection de la colonne 2 
     end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. [XL-2003] Recopier une cellule dès la fin d'une saisie
    Par iIncoming dans le forum Excel
    Réponses: 1
    Dernier message: 04/01/2013, 21h36
  2. Réponses: 2
    Dernier message: 23/11/2010, 20h48
  3. sélectionner une cellule d'un TStringgrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 12/02/2010, 20h00
  4. Changer la couleur d'une cellule TstringGrid
    Par SandyF dans le forum C++Builder
    Réponses: 1
    Dernier message: 01/01/2010, 18h39
  5. Réponses: 4
    Dernier message: 01/10/2005, 11h03

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