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 :

désactiver la touche du clavier


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut désactiver la touche du clavier
    bjr a tous le monde,
    j'ai une db grid dans lequel je veux désactiver la touche bas du clavier s'il y a un condition précise

    voila le 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
    procedure Tfrmmouvement.GrilleKeyDown(Sender: TObject; var Key: Word; 
    Shift: TShiftState); 
    begin 
     
    if key=VK_DOWN then 
    begin//7 
    VOILA La CONDITION 
     
    if (grille.DataSource.DataSet.FieldValues['MVT_N_DEBIT']='0,00') and (grille.DataSource.DataSet.FieldValues['MVT_N_CREDIT']='0,00') then 
    begin //9 
    //VOILA LE CODE DE D2SACTIVER LA TOUCHE BAS 
     
    Beep; 
    key:=0; 
    Exit; 
     
    end // 
    end;//7 
     
    end;



    mais ce code ca marche pas,et merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut;

    Je crois avoir compris ton soucis, tu veux n'autoriser l'ajout d'une nouvelle ligne que si la condition est remplie ! si c'est ça alors la bonne solution consiste à faire le test dans l'évènement OnNewRecord, si le résultat est vrai alors le dbgrid est en mode écriture sinon il reste en mode lecture seulement. Et comme ça tu n'as pas à gérer le KeyDown du clavier.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bjr a tous,
    wé Just-Soft mon probleme c'est ,si par exemple je suis dans la 3éme ligne d'un dbgrid et je clicke sur la touche bas du clavier pour passer a la 4eme ligne si ma condition est true((grille.DataSource.DataSet.FieldValues['MVT_N_DEBIT']='0,00') je veux que mon curseur reste sur la meme ligne(desactiver l'action de la touche) si nn(grille.DataSource.DataSet.FieldValues['MVT_N_DEBIT']<>'0,00') il va passer a la 4eme ligne

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    ah ok, dans ce cas là tu n'as qu'à faire le test dans le BeforeScrol de ton dbgrid

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bjr Just-Soft,merci mais j'ai pas trouver la propriété BeforeScrol de mon dbgrid

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Citation Envoyé par casa88 Voir le message
    bjr Just-Soft,merci mais j'ai pas trouver la propriété BeforeScrol de mon dbgrid
    pardon j'ai fais une gaffe c'est une méthode propre aux composants Table et Query. Donc faut faire le test sur le composant que tu utilise.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bjr a tous
    merci Just-Soft, je pense que la seule propriété c'est on keydown le problémé que j'ai fais le meme code pour la toche entrer(vk_return) et il marche bien mais pour la touche bas non
    plz aidez_moi

  8. #8
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut casa

    Il faut que tu sépares ce qui concerne l'affichage des données (le DBGrid) et les données elles-mêmes (le DataSet). C'est une règle d'or.

    Si j'ai bien compris tu souhaites simplement effectuer un contrôle de validité sur les données saisies. Donc ce traitement doit s'effectuer au niveau du DataSet, le DBGrid n'étant pas (et ne devant pas être) concerné.

    Tu veux t'assurer que les champs DEBIT et CREDIT ne sont pas tous les deux à 0.
    Effectue ce contrôle sur l'évènement BeforePost du DataSet. Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.DataSet1BeforePost(DataSet: TDataSet);
    begin
      if (DataSet.FieldByName('MVT_N_DEBIT').AsCurrency = 0) and
         (DataSet.FieldByName('MVT_N_CREDIT').AsCurrency = 0) then
      begin
        MessageBox(Application.Handle,
          'L''un des champs CREDIT ou DEBIT doit être renseigné.',
          'Saisie incomplète',
          MB_OK or MB_ICONWARNING);
        Abort; // Annuler le post
      end;
    end;
    @+ Claudius

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 14
    Points
    14
    Par défaut
    bonjour

    merci Claudius, maintenant ça marche bien

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

Discussions similaires

  1. Désactiver une touche du clavier virtuel
    Par David55 dans le forum Android
    Réponses: 8
    Dernier message: 19/08/2011, 11h34
  2. Réponses: 7
    Dernier message: 12/06/2007, 11h36
  3. désactiver certaines touches du clavier...
    Par youp_db dans le forum C
    Réponses: 4
    Dernier message: 23/01/2006, 15h21
  4. désactiver la touche DELETE du clavier
    Par awax dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2006, 19h54

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