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

Delphi Discussion :

Problème avec StringGrid


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut Problème avec StringGrid
    Bonjour,

    Je suis débutant en delphi.
    Je veux mettre dans une StringGrid un fichier texte [20 nombres par ligne].
    Après création de la StringGrid, lorsque je compile le prog , chaque ligne du fichier texte, s'affiche uniquement dans la 1ere colonne de la StringGrid.

    Comment résoudre ce problème.

    Merci

  2. #2
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Bonsoir.

    Sépare chaque nombres de ton texte par un point virgule, et tu auras un fichier CSV.

    Ensuite, tu peux utiliser les fonction qui chargent automatiquement un fichier CSV dans une stringGrid.
    http://philippe.gormand.free.fr/Delphi/Utilitaires.zip

    A+

  3. #3
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Que veux-tu faire exactement ?
    Mettre une ligne dans chaque cellule ?

    Si tu possèdes un séparateur dans ton texte, utilise la fonction suivante pour la découper :
    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
    Procedure StrExplode(Const src, sep: String; list: TStrings);
    Var x, l: Integer;
        st: String;
    Begin
      l := Length(src);
      If (l <= 0) Then Exit;
      x := 1;
      st := '';
      Repeat
        If (src[x] = sep) Then Begin
          list.Add(st);
          st := '';
        End Else st := st + src[x]; 
        inc(x);
      Until (x > l);
    End;
    Ensuite, utilise l'évènement OnDrawCell pour remplir chaque cellule.
    Note bien que plus tes questions seront explicites, plus nos réponses seront précises.
    à+

  4. #4
    Membre confirmé
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Par défaut Problème avec une StringGrid
    Bonjour,

    A partir d'un fichier texte comportant des valeurs numériques.
    Date + 17 nombres.
    Exemple:
    [13/09/2006;125;14;985;3;...74].

    Je veux attribuer à chaque colonne de la StringGrid une valeur.

    actuellement , tout s'inscrit dans les cellules de la 1ere colonne, le reste de la StringGrid est vide.

    Merci

  5. #5
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut
    Salut.

    Tu as tout ce qu'il faut dans l'unité que je t'ai proposé.

    a+

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Je procède comme ceci en utilisant la fonction StrExplode que j'ai donné ci-dessus. Ce code fonctionne aussi avec des fichiers CSV dont les enregistrements possèdent un nombre d'élément différent. La grille se dimensionne automatiquement en fonction du contenu du fichier CSV :
    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
    Procedure TForm1.Button1Click(Sender: TObject);
    Var
      Datas: Array Of TStrings;
      x, y: Integer;
    Begin
      SetLength(Datas, 1);
      Datas[0] := TStringList.Create;
      Datas[0].LoadFromFile('exemple.csv');
      StringGrid1.ColCount := 0;
      StringGrid1.RowCount := Datas[0].Count;
      If (Datas[0].Count > 0) Then Begin
        SetLength(Datas, Datas[0].Count + 1);
        For y := 1 To Datas[0].Count Do Begin
          Datas[y] := TStringList.Create;
          StrExplode(Datas[0].Strings[y - 1], ';', Datas[y]);
          If (StringGrid1.ColCount <= Datas[y].Count) Then
            StringGrid1.ColCount := Datas[y].Count;
          If (Datas[y].Count > 0) Then
            For x := 0 To Datas[y].Count - 1 Do
              StringGrid1.Cells[x, y - 1] := Datas[y].Strings[x];
          Datas[y].Free;
        End;
        Datas[0].Free;
      End;
      StringGrid1.Refresh;
    End;
    L'unité donnée par Philippe Gormand est très complète.
    Elle te permettra de faire beaucoups plus de choses...

    [EDIT]
    Si tu es intérressé par la fonction de sauvegarde, demande-moi, à+

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

Discussions similaires

  1. [Delphi 2010] Problème avec StringGrid
    Par mttb12 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/04/2012, 18h13
  2. Réponses: 2
    Dernier message: 13/05/2010, 03h01
  3. Problème avec ComboBox dans un StringGrid !
    Par petitclem dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/04/2010, 14h20
  4. problème avec stringgrid
    Par sky88 dans le forum Débuter
    Réponses: 2
    Dernier message: 06/01/2009, 09h40

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