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 :

Saut de ligne dans un DBGrid


Sujet :

Delphi

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Par défaut Saut de ligne dans un DBGrid
    Bonjour,
    Dans un formulaire, j'ai remplacé un stringgrid par un DBGrid lié à un ClientDataSet.
    Je veux passer à la ligne quand la touche entrée est frappée.

    Ma procédure avant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure Tfrm1.grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RETURN) or (Key = VK_UP) or (Key = VK_DOWN) then
      begin
        grid1.Cells[grid1.Col,grid1.Row] := FormateVal(grid1.Cells[grid1.Col,grid1.Row]); // OK
        if (Key = VK_RETURN) then
        begin
          if grid1.Row <> grid1.RowCount-1 then // MARCHE BIEN
            grid1.Row := grid1.Row + 1;
        end;
      end;
    end;
    ma procédure après :
    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
    procedure Tfrm1.grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    var
      Row, Col      : integer;
    begin
      Row := TDrawGrid(grid1).Row;
      Col := TDrawGrid(grid1).Col;
      if (Key = VK_RETURN) or (Key = VK_UP) or (Key = VK_DOWN) then
      begin    
        grid1.DataSource.DataSet.Edit;
        grid1.SelectedField.AsString := FormateVal(grid1.SelectedField.AsString);   (* 1 *)
        if (Key = VK_RETURN) then
        begin
          if Row <> TDrawGrid(grid1).RowCount-1 then (* 2 *)
            TDrawGrid(grid1).Row := TDrawGrid(grid1).Row + 1;
        end;
      end;
    end;

    (* 1 *)Ca ne marche pas. Il ne prend pas la valeur en cours de modification mais la valeur avant modif.
    (* 2 *)Ca ne marche pas. A l'écran, quand je valide par entrée dans ma cellule, la cellule du dessous s'affiche en édition avec la valeur de la cellule du dessus.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Rappel : LE DBGrid ne contient aucune donnée, tous les traitements doivent être fait sur la source de données.
    Le DBGrid ne sert qu'à l'affichage des données

    sinon je pense que ca focntionnera mieux comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure Tfrm1.grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (Key = VK_RETURN) or (Key = VK_UP) or (Key = VK_DOWN) then
      begin    
        // ajoute une ligne dans la table donc te fait un saut à la ligne
        grid1.DataSource.DataSet.Append; 
      end;
    end;
    Modérateur Delphi

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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Par défaut
    Je le sais bien pourtant. Je vais donc travailler sur le clientdataset.
    Merci.

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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 236
    Par défaut
    Citation Envoyé par delphi5user
    Je le sais bien pourtant. Je vais donc travailler sur le clientdataset.
    Merci.
    J'ai édité mon message au dessus avec l'ajout d'une ligne dans la grid qui te fera ton saut à la ligne.
    Modérateur Delphi

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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Par défaut
    En fait c'était tout bête.

    J'ai remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grid1.DataSource.DataSet.Append;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Key = VK_RETURN) then
          grid1.DataSource.DataSet.Next;
    et ça marche. En plus c'est logique...

    A+

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2004, 10h27
  2. Export vers Excel et saut de ligne dans cellule
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 16h53
  3. Sélectionner une ligne dans une DBGrid
    Par RBIK dans le forum Bases de données
    Réponses: 13
    Dernier message: 01/07/2004, 18h13
  4. hauteur de ligne dans un DBGrid
    Par mustang-gx dans le forum Bases de données
    Réponses: 9
    Dernier message: 15/03/2004, 21h27
  5. Nombre de sauts de ligne dans un String
    Par Johnbob dans le forum ASP
    Réponses: 7
    Dernier message: 03/03/2004, 16h33

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