Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Delphi > Composants VCL
Composants VCL Utilisation des différents composants VCL (Visual Component Library)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 10h55   #1
drake56
Membre du Club
 
Homme
Développeur informatique
Inscription : avril 2009
Messages : 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2009
Messages : 257
Points : 47
Points : 47
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
drake56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 13h21   #2
Ph. B.
Expert Confirmé
 
Avatar de Ph. B.
 
Homme Philippe
Inscription : avril 2002
Messages : 1 058
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Âge : 46
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2002
Messages : 1 058
Points : 2 808
Points : 2 808
Envoyer un message via ICQ à Ph. B. Envoyer un message via Skype™ à Ph. B.
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.
Ph. B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 10h04   #3
drake56
Membre du Club
 
Homme
Développeur informatique
Inscription : avril 2009
Messages : 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2009
Messages : 257
Points : 47
Points : 47
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.
drake56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 17h05.


 
 
 
 
Partenaires

Hébergement Web