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

Langage Delphi Discussion :

Modification des colonnes dans un dbgrid


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut Modification des colonnes dans un dbgrid
    Slt à tous,
    Dans une application, j'affiche un dbgrid affichant les champs d'une table qui selon le menu sélectionné par l'utilisateur doit afficher certaines colonnes et pas d'autres et dans un ordre différent que celui de la table. Est-il possible en delphi 4 uniquement par le code ou dois-je installer plusieurs dbgrid qui seraient activés selon le menu choisi ?

    Merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je ne sais pas si c'est OK dans D4 mais regardes la notion de TColumn associé à la DBGRID.

  3. #3
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci de ton info.
    J'ai vu effectivement pas mal de propriétés à ce sujet mais je ne trouve pas (à moins que je ne sois pas assez perspicace) la propriété qui détermine la position de la colonne dans le dbgrid. A mon regret, Je n'ai pas de composant supplémentaire permettant de gérer d'autres propriétés des dbgrid que ceux de delphi 4. En existe-t-il encore disponible? Mon souhait est que par exemple le champ 6 de ma table selon le tri choisi par le menu de mon application s'affiche tantôt en 6° position tantôt en première position.
    Merci si tu peux m'en dire plus

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    salut

    il te suffit de derive TDbGrid

    exemple
    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
    21
    22
    23
    24
    25
    26
    27
    type
     
      TDBGrid = Class(DBGrids.TDBGrid)
        procedure MoveColumn(FromIndex, ToIndex: Longint);
      end;
     
    // on declar la form normalement
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        ....
    end;
     ...
     
    implementation
     
    {$R *.dfm}
    // on rappelele la methode qui se trouve dans TCustomGrid
     procedure TDBGrid.MoveColumn(FromIndex, ToIndex: Longint);
     begin
       inherited;
     end;
     
    // ici on l'utilise selon c'est besoin 
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      DBGrid1.MoveColumn(1, 3);
    end;
    @+ Phil

  5. #5
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Me revoilà à nouveau.
    La compilation me donne une erreur :
    Identificateur non déclaré : MoveColumn
    et le point d'insertion vient juste après!
    J'ai pourtant bien déclaré le tout comme proposé.

    merci

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Pour ma part, j'essaierais, en supposant que les noms de champs à afficher sont stockés dans un StringList ListeChamps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DbGrid.Columns.Clear;
    for i := 0 to ListeChamps.Count - 1 do
      with DbGrid.Columns.Add do
        FieldName := ListeChamps[i];
    Le code doit sans doute être affiné, mais c'est en gros comme ça qu'on procède quand on définit les colonnes à la conception.

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    salut

    quel version de delphi ?

    voici le code complet de mon essai et il marche parfaitement

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    unit UTestMove;
     
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, DBTables;
     
    type
      TDBGrid = Class(DBGrids.TDBGrid)
        procedure MoveColumn(FromIndex, ToIndex: Longint);
      end;
     
      TForm1 = class(TForm)
        DBGrid1 : TDBGrid;
        BitBtn1  : TBitBtn;
        Table1   : TTable;
        DataSource1: TDataSource;
        procedure BitBtn1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     procedure TDBGrid.MoveColumn(FromIndex, ToIndex: Longint);
     begin
       inherited;
     end;
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      DBGrid1.MoveColumn(1, 3);
    end;
     
    end.
    @+ Phil

  8. #8
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Suis en delphi4 et l'aide me donne bien ce type de procédure.
    Je ne suis pas un grand delphiste faut-il le dire? L'implantation des déclarations aurait-elle de l'importance car mon application est très volumineuse et peut-être ai-je mal déclaré le Movecolumn puisque le reste passe sans problème?
    merci de votre aide.

  9. #9
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 435
    Points : 5 848
    Points
    5 848
    Par défaut
    salut

    as tu bien regarde mon code
    j'utilise un astuce pour accéder aux élément protected
    la méthode movecolumn existe dans le TCustomGrid mais dans la parti protected
    le TDBGRID de delphi n'a pas augmenté la visibilitée de cet méthode

    je dérive donc TDBGRID et l'appelle TDBGRID pour que l'on ai pas a changer tous les composant GRID de la forme

    dans le TDBGRID dérivé je rend visible la méthode ce qui me permet ensuite
    de l'utiliser dans la même unités

    @+ Phil

  10. #10
    Membre régulier
    Consultant informatique
    Inscrit en
    Octobre 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 240
    Points : 103
    Points
    103
    Par défaut
    Merci à tous les intervenants.
    Solution trouvée. Un mauvais positionnement de la déclaration de "movecolumn" provoquait cette erreur d'identification.
    Cela fonctionne comme souhaité.
    Mille mercis

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

Discussions similaires

  1. Tri des valeurs dans un DBGrid
    Par soviet dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/06/2015, 14h18
  2. [Lazarus] Modification position des colonnes dans un DbGrid
    Par ovni76 dans le forum Lazarus
    Réponses: 10
    Dernier message: 15/06/2009, 13h57
  3. multiplication des colonne dans un DBGrid
    Par info_sara dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/02/2009, 10h55
  4. Affichage du titre des colonnes dans un DBGrid
    Par Debure dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/10/2005, 23h41
  5. [dbGrid]Image dans le titre des colonnes d'un dbGrid
    Par dleu dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/08/2004, 18h01

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