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 :

Redimensionner les colonnes et les lignes d'un stringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut Redimensionner les colonnes et les lignes d'un stringGrid
    Bonjour,

    tout est dans la question.
    J'ai un StrinGrid alClient sur un panel. Quelqu'un peut il m'expliquer comment 'resizer' les colonnes et les ligne quand quand on maximize le formulaire (donc le panel)?

    D'avance merci

    codial

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    "resizer" les colonnes en largeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stinggrid.colwidths[colonne]:=largeur
    et pour la hauteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stinggrid.RowHeights[ligne]:=Hauteur;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    merci pour la réponse, mais ça je connais! Je me suis mal expliquer....Non, en fait il faut que la largeur et la hauteur des colonnes et les lignes s'adaptent en fonction des dimensions du formulaire. Si j'agrandi le form les colonnes s'agrandissent et vis versa.

    cordialement, codia

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 747
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 747
    Points : 13 314
    Points
    13 314
    Par défaut
    A toi de les calculer dans l'événement OnResize de la fiche.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour Andnotor,

    j'esaie justement de les caculer dans l'événement OnResize de la fiche mais je n'y arrive pas. Tu as une idée comment faire ???

    Cordialement,codial.

  6. #6
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut


    pour l'idée: considère que les largeurs de tes colonnes sont proportionnelles à la largeur de la fiche par exemple.
    au démarrage de l'appli ou en dur, tu enregistre les différents coefficients de proportionnalité de la largeur de tes colonnes par rapport à celle de ta fiche, puis à chaque redimensionnement, eh bien tu fais juste une multiplication pour avoir la largeur de chacune de tes colonnes.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Merci evarisnea pour ta répose mais je n'y arrive pas.

    Déja, comment faire pour récupérer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enregistre les différents coefficients de proportionnalité de la largeur de tes colonnes par rapport à celle de ta fiche
    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    puis à chaque redimensionnement, eh bien tu fais juste une multiplication pour avoir la largeur de chacune de tes colonnes
    J'ai testé la 2eme suggestion mais je n'y arrive.

    Aurait tu sous la main un code d'exemple???

    D'avance merci, codial

  8. #8
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    ça ressemble à quelque chose comme ceci :

    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
    46
    47
    48
    49
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Grids, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        StringGrid1: TStringGrid;
        procedure FormCreate(Sender: TObject);
        procedure FormResize(Sender: TObject);
      private
        { Déclarations privées }
        FCoefCol1, FCoefCol2 , FCoefCol3 , FCoefCol4 , FCoefCol5 :Single;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      //calcul des coefficients
      FCoefCol1 := StringGrid1.ColWidths[0] / self.Width;
      FCoefCol2 := StringGrid1.ColWidths[1] / self.Width;
      FCoefCol3 := StringGrid1.ColWidths[2] / self.Width;
      FCoefCol4 := StringGrid1.ColWidths[3] / self.Width;
      FCoefCol5 := StringGrid1.ColWidths[4] / self.Width;
    end;
     
    procedure TForm1.FormResize(Sender: TObject);
    begin
      //redimensionnement de la grille
      StringGrid1.ColWidths[0] := Trunc(FCoefCol1 * self.Width);
      StringGrid1.ColWidths[1] := Trunc(FCoefCol2 * self.Width);
      StringGrid1.ColWidths[2] := Trunc(FCoefCol3 * self.Width);
      StringGrid1.ColWidths[3] := Trunc(FCoefCol4 * self.Width);
      StringGrid1.ColWidths[4] := Trunc(FCoefCol5 * self.Width);
    end;
     
    end.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour evarisnea,

    merci pour cette solution qui fonctionne!
    Cependant:
    1-Les grilles ne remplissent pas tout le stringgrid ce qui laisse un vide à droite.
    2-Quand je diminue le form, il y a des grilles qui n'apparaissent plus au lieu de diminuer pour être toutes visibles.
    3- Pour la hauteur des grilles, même principe ?

    Je te remercie pour tes réponses.

    Cordialement, codial

    PS: C'est la première fois que j'utilise ce composant.

  10. #10
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par codial Voir le message
    Bonjour evarisnea,

    merci pour cette solution qui fonctionne!

    Citation Envoyé par codial Voir le message
    Cependant:
    1-Les grilles ne remplissent pas tout le stringgrid ce qui laisse un vide à droite.
    ça a toujours été ainsi avec les grilles. si tu veux éviter cela, tu doit t'arranger à ce que les colonnes soient assez larges pour occuper toute la largeur de la grille (quoique tu devras forcément laisser un petit espace à la droite du stringgrid pour la barre de redimensionnement verticale). tu peux le faire par calcul (en même temps que tu calcules les coefficients) ou à la conception.

    Citation Envoyé par codial Voir le message
    2-Quand je diminue le form, il y a des grilles qui n'apparaissent plus au lieu de diminuer pour être toutes visibles.
    j'ai pas bien compris là. normalement, si tu diminue trop ta form, la grille devient tellement petite qu'elle est invisible non ? si tu ne veux pas cela tu doit éviter que la grille ne soit trop réduite, dans l'évènement OnResize ou plus simplement en définissant la propriété Constraints.
    Citation Envoyé par codial Voir le message
    3- Pour la hauteur des grilles, même principe ?
    oui

    Citation Envoyé par codial Voir le message
    Je te remercie pour tes réponses.

    Cordialement, codial

    PS: C'est la première fois que j'utilise ce composant.
    même le dbgrid tu n'as jamais utilisé? en général toutes les grilles ont ce comportement, et on s'y habitue

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour evarisnea,

    merci pour ses réponses détaillée

    Cependant:
    1-Les grilles ne remplissent pas tout le stringgrid ce qui laisse un vide à droite
    Effectivement je suis bête, je n'est pas fait cette comparaison. Si, bien sur, que j'utilise régulièrement le DBGrid mais la gestion d'un Stringrid est plus complexe à mon avis;;; mais comme je l'ai dit c'est la première fois que j'utilise ce composant.

    En fait dans une appli j'ai intégré un calendier avec des listbox.Mais le problème est que je ne peux afficher que ligne par ligne et seulement une partie de l'enregistrement. Aussi, j'essaie de le reprendre en essayant d'y intégrer Tmemo qui apparaitrait quand je clique sur une cellule. C'est pour ça que je me suis oriente vers un stringgrid, mais pas facile !!!!!

    2-Quand je diminue le form, il y a des grilles qui n'apparaissent plus au lieu de diminuer pour être toutes visibles
    Ce que je voulais dire c'est que quand je diminue le form, mes 7 cellules devrait apparaître, même en petites mais il y en a qui disparaissent, par exemple le form réduit me laisse juste une cellule. Mais cet aspect n'est pas contraigant en soi car effectivement j'utiliserais la propriété Constraints.

    Encore une question si tu veux bien: Pourrait tu m'expliquer comment faire apparaître mon Tmemo sur la cellule sélectionnée?

    Cordialment, codial

  12. #12
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    Citation Envoyé par codial Voir le message
    Encore une question si tu veux bien: Pourrait tu m'expliquer comment faire apparaître mon Tmemo sur la cellule sélectionnée?
    là tout de suite je n'ai pas de réponse rapide. mais fais une recherche sur le forum, cette préoccupation a été abordée maintes fois. sinon quelqu'un d'autre saura te donner une réponse

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour evarisnea,

    merci pour tes réponses et ton temps !

    Bien cordialement, codial

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

Discussions similaires

  1. [PROC] Tri sur les colonnes pour chaque ligne
    Par san25 dans le forum SAS Base
    Réponses: 2
    Dernier message: 02/10/2013, 11h25
  2. Lire toutes les colonnes pour chaque ligne
    Par L0007 dans le forum SAS Base
    Réponses: 6
    Dernier message: 08/03/2013, 14h38
  3. Réponses: 6
    Dernier message: 30/03/2011, 17h17
  4. Réponses: 0
    Dernier message: 10/01/2011, 11h06

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