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

Composants VCL Delphi Discussion :

TDBGrid et largeur de colonnes


Sujet :

Composants VCL Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut TDBGrid et largeur de colonnes
    Hello,

    Je travaille sur une application qui utilise pas mal de TDBGrid.
    Une demande client est qu'il voudrait redimensionner les colonnes de la DBGrid et que ces largeurs soient enregistrées (peu importe où) pour être réutilisées à chaque nouvelle utilisation.

    Je sais qu'il existe des grilles améliorées qui font ça mais le changement de composant n'est pas envisageable pour le moment. Il faut que ça soit une solution qui ne bidouille pas trop le code.

    D'après vous, quels événements faudrait-il surcharger pour réaliser cette chose qui parait si simple mais pour laquelle je ne vois pas de solution immédiate.

    Papy !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Je pense qu'il convient d'enregistrer la largeur de chaque colonne de ton DBGrid dans un fichier ini ou xml. Cet enregistrement peut se faire avec l'évènement OnColumnMoved du DBGrid. Attention l'indicateur dgColumnResize dans options doit être True.

    A l'ouverture de la fiche, tu fais la lecture de ton fichier ini ou xml pour positionner la largeur de tes colonnes.

    Pour éviter l'enregistrement à chaque mouvement d'une colonne, tu peux simplement faire un enregistrement lors de la fermeture de la fiche ou de l'application.

    Pour accéder à la largeur des colonnes, il te faudra peut être surcharger ton dbGrid avec TDrawGrid. Voir la documentation suivant les versions de Delphi. J'ai pris la version Delphi 7 pour répondre à message.

    L'accès à la largeur de la colonne, en lecteur ou en écriture, se fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TDrawGrid(dbGrid_).ColWidths [n° Colonne]
    Ces informations doivent, après adaptation à ton produit, permettre de résoudre ta difficulté.

    A+

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut
    Merci de ta réponse mais OnColumnMoved ne semble pas être déclenché quand on redimensionne une colonne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.DBGrid1ColumnMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    begin
      Caption := IntToStr(TDrawGrid(DBGrid1).ColWidths[0]);
    end;
    Le code ne passe jamais la-dedans.

  4. #4
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 381
    Points : 2 995
    Points
    2 995
    Par défaut Solution à moindre coût
    J'ai trouvé.

    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
     
      TDBGrid = class(DBGrids.TDBGrid)
      protected
        procedure ColWidthsChanged; override;
      end;
     
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        ClientDataSet1: TClientDataSet;
        ClientDataSet1Age: TIntegerField;
        DBGrid1: TDBGrid;
        procedure FormCreate(Sender: TObject);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TDBGrid.ColWidthsChanged;
    begin
      inherited;
      // Ici on a accès à Columns[n].Width après redimensionnement
    end;

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

Discussions similaires

  1. [TDbGrid] Comment modifier la largeur des colonnes ?
    Par colorid dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/11/2005, 19h47
  2. forcer largeur de colonne qd URL chargee
    Par Batou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/08/2005, 11h38
  3. Fixer la largeur des colonnes d'une CListCtrl
    Par Depteam1 dans le forum MFC
    Réponses: 4
    Dernier message: 28/06/2005, 16h46
  4. Largeur de colonne d'une ListView
    Par deaqu1 dans le forum IHM
    Réponses: 7
    Dernier message: 07/06/2005, 20h45
  5. [C#] Largeur de colonne et de ligne dans un DataGrid
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 31/08/2004, 15h09

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