Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2009
    Messages : 277
    Points : 46
    Points
    46

    Par défaut Drag & Drop dans un même DBGrid

    Bonjour,

    Je souhaiterai mettre en place un sytème de Drag & Drop dans un même DBGrid pour modifier l'ordre des pièces.
    Par exemple, si j'ai 2 lignes et que je mets la 1ère à la place de la 2ème, je souhaiterai échanger leurs id.
    J'avais trouvé un exemple mais je bloque à la fin, je pense il faudrait que je fasse un update mais il faudrait que je fasse un refresh aussi enfin voilà le code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TF_Operation.CRDB_PiecesDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    var gc     : TGridCoord;
        ordre  : Integer;
    begin
      gc := CRDB_Pieces.MouseCoord(X,Y);
      if (gc.X > 0) AND (gc.Y > 0) then
      begin
        if DM_Operation.Q_ChargerPiecesOpe.RecordCount = 0 then exit;
     
        ordre := DM_Operation.Q_ChargerPiecesOpePIE_ID.AsInteger;
       { with CRDB_Pieces do
        begin
          DataSource.DataSet.MoveBy (gc.Y - Row);
          DataSource.DataSet.Edit;
          Columns.Items[-1 + gc.X].Field.AsInteger := ordre;
        end;  }
      end;
    end;
    Merci d'avance pour votre aide

  2. #2
    Expert Confirmé Sénior
    Avatar de Ph. B.
    Homme Profil pro Philippe
    Freelance
    Inscrit en
    avril 2002
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2002
    Messages : 1 344
    Points : 4 016
    Points
    4 016

    Par défaut

    Bonjour,
    Citation Envoyé par drake56 Voir le message
    Je souhaiterai mettre en place un sytème de Drag & Drop dans un même DBGrid pour modifier l'ordre des pièces.
    Par exemple, si j'ai 2 lignes et que je mets la 1ère à la place de la 2ème, je souhaiterai échanger leurs id.
    Changer l'ID n'est pas un geste anodin contrairement à changer une valeur d'une colonne qui sert à ordonner l'affichage dans une grille. Cela a des impacts sur la table de la base de données sous jacente et des tables qui peuvent y être liées via une clé étrangère !!!
    C'est une opération qui doit être murement réfléchie car mal faite, elle peut aboutir à mettre une pagaille monstre dans la base de données !

    Citation Envoyé par drake56 Voir le message
    J'avais trouvé un exemple mais je bloque à la fin,
    je pense il faudrait que je fasse un update mais il faudrait que je fasse un refresh aussi enfin voilà le code :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TF_Operation.CRDB_PiecesDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    var gc     : TGridCoord;
        ordre  : Integer;
    begin
      gc := CRDB_Pieces.MouseCoord(X,Y);
      if (gc.X > 0) AND (gc.Y > 0) then
      begin
        if DM_Operation.Q_ChargerPiecesOpe.RecordCount = 0 then exit;
     
        ordre := DM_Operation.Q_ChargerPiecesOpePIE_ID.AsInteger;
       { with CRDB_Pieces do
        begin
          DataSource.DataSet.MoveBy (gc.Y - Row);
          DataSource.DataSet.Edit;
          Columns.Items[-1 + gc.X].Field.AsInteger := ordre;
        end;  }
      end;
    end;
    L'exemple dont vous avez tiré ce code s'appuyait sur un descendant du composant TDBGrid, un THackDBGrid qui faisait passer la propriété Row du statut protégé au statut public et pour des données provenant d'un autre composant. C'est donc inapplicable en l'état...
    Philippe.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2009
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2009
    Messages : 277
    Points : 46
    Points
    46

    Par défaut

    Bonjour,

    Merci pour votre réponse, finalement j'ai créé un nouveau champ qui gère l'ordre puis vu que je n'ai pas réussi à faire de drag & drop, j'ai contourné le problème en mettant un TEdit modifiable dans mon Grid.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •