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

Bases de données Delphi Discussion :

Ajout automatique d'un enreg. en bas d'une DBgrid!


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut Ajout automatique d'un enreg. en bas d'une DBgrid!
    quand on descend en bas d'une DBgrid avec la fleche bas du clavier, cela ajoute automatiquement un nouvelle enregistrement vide.
    Est-il possible de désactiver cette fonctionnalité ?

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Si tu n'as pas besoin que la grid soit en mode édition il te suffit de mettre à false, dans options la propriété dgEditing
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    Citation Envoyé par Malatar
    Si tu n'as pas besoin que la grid soit en mode édition il te suffit de mettre à false, dans options la propriété dgEditing
    En fait je souhaiterais qu'il reste en mode edition, mais ne pas avoir cette fonctionnalité d'insertion automatique quand on descend dans la grille.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut
    Bonjour
    Tu peux y arriver par programmation par l'événement onKeyPress mais je ne connais pas le code de la touche dont tu veux annuler l'action. Ici code pour un Edit pour mettre une date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure Form1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
    begin
    //Tu met le code Ascii des touches dont tu veux désactiver l'action
      if not (Key in ['0'..'9',#8, '/']) then
      begin
        Key := #0;
        Beep;
      end;
    end;
    Au royaume des aveugles, les borgnes sont rois.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut
    J'ai trouvé c'est VK_DOWN
    Mirmillon
    J'ai essayè mais ca marche pas....
    J'ai trouvé un article dans Delphi Magazine qui traite de ce problème mais là je dois aller bosser...
    Essaie Chr(VK_DOWN)
    Au royaume des aveugles, les borgnes sont rois.

  6. #6
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    Merci et ca marche avec l'evennement KeyDown de la grille mais je ne sais pas comment annuler le déplacement vers le bas ou provoquer un déplacement vers le haut pour esquiver l'ajout d'enregistrement. Je vois pas non plus comment savoir ou je suis dans la DBGrid (numéro de lignes courante ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key=VK_DOWN) then
      begin
        beep;
        // annulation du déplacement vers le bas...
      end;
    end;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 147
    Points : 184
    Points
    184
    Par défaut
    Je ne comprends pas ce que tu veux pour ca
    l'evennement KeyDown de la grille mais je ne sais pas comment annuler le déplacement vers le bas ou provoquer un déplacement vers le haut pour esquiver l'ajout d'enregistrement

    Par contre pour ca Je vois pas non plus comment savoir ou je suis dans la DBGrid (numéro de lignes courante ).tu peux te servir des options de DBGrid type dgXXXXX Voir inspecteur d'objet
    Au royaume des aveugles, les borgnes sont rois.

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key=VK_DOWN) then
      begin
        beep;
        // annulation du déplacement vers le bas...
        Key := 0;
      end;
    end;
    A tester avec la ligne rouge dans le code
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Une autre solution, plus général par rapport aux touches pressées, je l'utilise depuis toujours, est d'affecter l'évenement 'OnNewRecord' de ton DataSet.

    Si ta MaGrille à pour source, MaTable tu fais simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure MaForm.MaTableNewRecord(DataSet: TDataSet);
    begin
      MaTable.Cancel;
    end;
    bon courage !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  10. #10
    Membre régulier Avatar de gregcat
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 155
    Points : 94
    Points
    94
    Par défaut
    merci c'est persque ca !
    , sauf que la ca m'insère quand meme un enregistrement si je vais vers le haut et vers le bas à nouveau. Et si je reste en bas je suis bien bloqué grace à ton instruction Table1.cancel;

    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
     
    procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key=VK_DOWN) then
      begin
        //beep;
        if table1.eof then \\ on test si on est en fin de table
        begin
          beep;
         Key := 0;
          table1.cancel;
        end;
      end;
    end;

  11. #11
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    c'est une alternative à l'autre code, il faut UNIQUEMENT,
    mettre Table.cancel sur TableNewRecord( ... )

    Pas de modif sur KeyPressed, KeyDown etc... (vide par défaut, il faut supprimer le code actuel de ton DBGRidKeyDown si tu choisis cela)
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  12. #12
    Membre confirmé Avatar de Issam
    Inscrit en
    Mars 2002
    Messages
    578
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Mars 2002
    Messages : 578
    Points : 604
    Points
    604
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     if (Key=VK_DOWN) then
      begin
        //beep;
        if table.recno >= table.RecordCount then
        begin
         Key := 0;
          table.cancel;
        end;
    end;
    voilà

    ça mérite un résolu maintenant

Discussions similaires

  1. Ajout automatique de la date..
    Par Karibou dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/02/2006, 09h34
  2. Réponses: 2
    Dernier message: 07/12/2005, 13h25
  3. TValueListEditor: Ajout automatique d'une ligne vide
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/06/2005, 12h16
  4. Réponses: 5
    Dernier message: 23/06/2005, 10h18
  5. Ajout automatique de ressources
    Par Caotic dans le forum JBuilder
    Réponses: 2
    Dernier message: 20/08/2003, 14h57

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