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

Bases de données Delphi Discussion :

Problème avec redimentionnement colonne dbgrid


Sujet :

Bases de données Delphi

  1. #1
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut Problème avec redimentionnement colonne dbgrid
    Salut

    J'ai encore un petit problème avec mon dbgrid...
    J'ai fais une procédure qui permet de redimentionner automatiquement la largeur des colonnes en fonction du contenu et du titre.
    La première fois que je charge des valeurs dans mon dbgrid, ca marche impec. Par contre si j'effectue une nouvelle requête qui change le contenu du dbgrid, j'ai l'erreur :
    indice de grille hors limite
    Cela vient de ma procédure qui redimentionne car ca fonctionne si je l'enlève. Le soucis c'est que je n'arrive pas à résoudre le problème dans ma procédure.

    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
    procedure ResizeColumns();
    var
    J,MaxTextWidth, fieldwith : Integer;
    begin
       Form1.listecli.datasource.DataSet.DisableControls;
       // On fait toutes les colonnes du TDBGrid
       For J:=0 to Form1.listecli.FieldCount-1 do
       begin
          // Initialisation
          MaxTextWidth := Form1.listecli.Canvas.TextWidth(form1.listecli.Columns[J].Title.Caption);
          // On recupere la longueur la plus grande contenu dans la colonne
          Form1.listecli.DataSource.DataSet.First;
          while not form1.listecli.DataSource.DataSet.Eof do
          begin
              fieldwith := Form1.listecli.Canvas.TextWidth(form1.listecli.datasource.DataSet.Fields.Fields[J].AsString);
              if (fieldwith > MaxTextWidth) then MaxTextWidth := fieldwith;
              Form1.listecli.DataSource.DataSet.Next;
          end;
          // On applique la nouvelle taille 
          If MaxTextWidth > 0 then form1.listecli.Columns[J].Width := MaxTextWidth + 10;
       end;
       Form1.listecli.DataSource.DataSet.First;
       Form1.listecli.datasource.DataSet.EnableControls;
    end;
    Quelqu'un aurait une idée à ce sujet ?
    J'ai beau essayer de modifier des trucs, je ne vois pas ce qui cloche

    Merci

  2. #2
    Membre chevronné Avatar de Oluha
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 183
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 183
    Points : 1 967
    Points
    1 967
    Par défaut
    J'ai oublié la procédure qui rempli le dbgrid et appel resizecolumns
    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
    43
    44
    45
    procedure TForm1.BrechercherClick(Sender: TObject);
    begin
         //BreinitmodifClick(form1);
         // on vérifie que les champs sont renseignés
         if (fichier.value = '') or (CBrecherche.Text = '') or (Edmotcle.Text = '') then
         begin
              rechercherclic := false;
              showmessage('Veuiller renseigner le fichier, le type de recherche et le mot clé');
         end
         else
         begin
              rechercherclic := false;
              // on recherche un client suivant les critèques donnés
              Qlistecli.SQL.clear;
              Qlistecli.Active := false;
              Qlistecli.sql.add('select IDCLI,ADR1,ADR2,ADR3,ADR4,ADR5,CP,VILLE,PAYS,TEL,FAX,TILT,FDI');
              Qlistecli.sql.add('from Acappella where CODE = '+fichier.Value);
              if CBrecherche.Text = 'Id client' then
              begin
                   Qlistecli.sql.add('and IDCLI = '+Edmotcle.Text);
              end
              else if CBrecherche.Text = 'Nom / Prénom' then
              begin
                   Qlistecli.sql.add('and ADR1 like ''%'+Edmotcle.Text+'%''');
              end
              else
              begin
                   Qlistecli.sql.add('and CP like '''+Edmotcle.Text+'%''');
              end;
              Qlistecli.sql.add('order by IDCLI');
              Qlistecli.active := true;
              Cmodifpays.KeyValue := listecli.DataSource.DataSet.Fields.Fields[8].AsString;
              modifcp.KeyValue := listecli.DataSource.DataSet.Fields.Fields[6].AsString;
              query_cp_activee := true;
              Qtrouveville.close;
              Qtrouveville.sql.clear;
              Qtrouveville.sql.add('select distinct (convert(char(33),LIBLOC) +''  (code INSEE : ''+ INSEE +'')'') as VILLE FROM loccp');
              Qtrouveville.sql.add('where LIBLOC = '''+ listecli.DataSource.DataSet.Fields.Fields[7].AsString +''' ORDER BY (convert(char(33),LIBLOC)+''  (code INSEE : ''+ INSEE +'')'')');
              Qtrouveville.open;
              modifville.KeyValue := Qtrouveville.fieldbyname('VILLE').asstring;
              rechercherclic := true;
              ResizeColumns();
              //finresize := true;
         end;
    end;

Discussions similaires

  1. Problème avec 3 colonnes
    Par Lotz dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/04/2013, 14h21
  2. Réponses: 7
    Dernier message: 30/11/2011, 11h51
  3. problème avec DBLooKComboBox dans DBGrid
    Par SOPSOU dans le forum Composants VCL
    Réponses: 1
    Dernier message: 04/09/2008, 12h50
  4. GridView, problème avec les Colonnes
    Par LeViking dans le forum ASP.NET
    Réponses: 31
    Dernier message: 20/02/2008, 15h32
  5. Problème avec 3 colonnes dans un conteneur
    Par pidu dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/02/2007, 09h03

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