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 :

Taille des champs entres dans un stringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut Taille des champs entres dans un stringGrid
    Bonjour,
    J ai un string grid d une taille donnee et j aimerai savoir si il est possible de compter combien de champs sont entres sur la verticale par exemple.
    En fait j ai uns tringgrid de 2 colonnes de longueur infinie par ex ou l utilisateur entre un certain nombre de lignes et j aimerai pouvoir savoir combien..
    merci d avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Je crois que les TStringGrid ont une propriété ClientHeight, clientWidth donnant la taille disponible pour les cellules.

    Vous devriez pouvoir éffectuer vos calcule à partir de ces propriété et des taille des cellules (colWidts, ColHeight). Attention si toutes les cellules ne sont pas de la même taille il vous faudra tenir compte des cellules visibles à l'écran.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Justement je veux entrer une taille infinie...

  4. #4
    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
    Citation Envoyé par gilles641
    Justement je veux entrer une taille infinie...
    : :

    Je n'ai jamais vu que l'informatique faisait bon ménage avec l'infini Que veux-tu faire ? Augmenter le RowCount en fonction des saisies ?
    Roland

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Oui enfin que l utilisateur puisse entrer autant de champs qu il le desire.
    En fait apres ca je veux remplir un tableau contenant les champs et je ne vois pas comment faire pour fixer la taille du tableau vu que je ne saurai pas combien de champs ont ete entrees dans chaque colonne...

  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
    Comment tes utilisateurs écrivent-ils dans ton StringGrid ?
    Roland

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    ben g mis le parametre Onediting sur true et puis il suffit de cliquer dessus

  8. #8
    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
    La solution la plus simple même si c'est pas le pied, c'est d'utiliser l'événement OnSelectCell, qui se déclenche quand on entre dans une cellule et d'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    with MyGrid do
    if ARow = RowCount - 1
      then RowCount := RowCount + 1;
    Ca ajoute une ligne quand tu entres dans la dernière ligne, autrement dit tu as touojurs une ligne de trop.

    Si tu veux éliminer les lignes en trop, tu peux "retailler" ton Grid dans OnExit :

    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
    var
       LigneVide : Boolean;
       NewRowCount : Integer;
     
    (with MyGrid do)
    ...
    for i := RowCount - 1 downto 0 do
    begin
      LigneVide := True;
      for j := 0 to ColCount - 1 do
        LigneVide := LigneVide And (Cells [j, i] = '');
      if not LigneVide then
      begin
         NewRowCount := i + 1;
         Break;
       end;
    end;
    RowCount := NewRowCount;
    NB : Code écrit à la volée, à vérifier
    Roland

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    Merci bien pour ton code.
    Mais je suis en train de me demander si il est pas possible de faire une boucle sur les champs et tant que le champs n est pas vide incrementer un compteur qui donnera la taille
    Par contre en pascal quel est le test a faire pr voir si une cellule est vide
    test='' il me semble que ca ne marche pas.
    Tu as une idee ?

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Et si la cellule contient des espaces.

    Il vaudrait peut être mieux teste sur trim(Gri.Cells[x, y]).

  11. #11
    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
    Citation Envoyé par Tardiff Jean-François
    Et si la cellule contient des espaces.

    Il vaudrait peut être mieux teste sur trim(Gri.Cells[x, y]).
    Roland

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 155
    Points : 47
    Points
    47
    Par défaut
    c quoi trim ?

  13. #13
    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
    C'est une fonction qui enlève les espaces en début et fin de chaîne
    Roland

  14. #14
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Bonjour
    Et si la cellule contient des espaces.

    Il vaudrait peut être mieux teste sur trim(Gri.Cells[x, y]).
    Personnellement, je ne vois pas l'intérêt d'utiliser trim
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if StringGrid1.Cells[x,y]=''
    fonctionne très bien
    Un espace est un caractère comme un autre !
    Choisir, c'est renoncer...

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Une des cause courante d'érreure lorsque l'on vérifie qu'en valeur saisie est vide, est qu'elle n'est justement pas vide.

    Si je test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Grid.Cells[x,Y] = '' then
    et que mas cellule contient un ou plusieur espace, la condition est fause.

    Trim permet d'éviter ce problème.

  16. #16
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Bonjour,
    OK Tardiff Jean-François
    Mais je trouve que cette façon de contourner les pb n'est pas très "formatrice"
    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if Grid.Cells[x,Y] = '' then
    renvoie false, c'est que la cellule n'est pas vide. Pourquoi s'obstiner à penser qu'elle l'est?
    Et si son contenu est visuellement vide, c'est qu'elle ne peut contenir qu'un ou plusieurs espaces, qui, j'insiste, est un caractère comme un autre dont le code ascii est 32.
    Sans rancune
    Choisir, c'est renoncer...

Discussions similaires

  1. Ajuster la taille des champs dans un report
    Par Stéphane Olivier BERNARD dans le forum Access
    Réponses: 3
    Dernier message: 08/08/2007, 16h14
  2. TQuery et taille des champs à afficher dans un DBGrid
    Par kurkaine dans le forum Bases de données
    Réponses: 5
    Dernier message: 15/09/2006, 16h47
  3. Normes pour taille des champs (obs, libellé...)
    Par Kozher dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/08/2005, 23h46
  4. Réponses: 2
    Dernier message: 14/04/2005, 21h57
  5. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48

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