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

Lazarus Pascal Discussion :

Fragmentation du contenu des cellules dans une StringGrid [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 28
    Points
    28
    Par défaut Fragmentation du contenu des cellules dans une StringGrid
    Bonjour à tous,

    Dans mon appli les cellules de la StringGrid sont remplies après ouverture d'un record :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const
      TITRES : array[0..12] of string = ('Identité', 'Privé', 'Bureau', 'Fax', 'Portable', 'NET', 'EMail', 'Adresse',
                                         'Notes', 'Autres1', 'Autres2', 'Autres3', 'Autres4');
    Mais ici pas besoin d'ouvrir le fichier, le problème restant le même :

    Sur la fiche : une StringGrid vide (5 Rows, 13 Lignes) et deux Memo contenant du texte préalablement saisi.

    1- Je clique sur le bouton "Copier Adresse et Notes" pour coller les textes dans les cellules
    de la StringGrid. (Image1)
    2- Je clique sur "Ajouter Row" et il se passe que le contenu des deux cellules est dispatché
    dans les cellules suivantes (Image2)...

    Pourriez-vous m'expliquer pourquoi, et surtout comment y remédier.

    3- Pour info : Quand je clique sur le bouton "Supprimer Row" il n'y a pas de souci car le texte est bien
    recopié vers le haut sans déformation...

    Cordialement.
    Images attachées Images attachées    

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 856
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    6
    Par défaut
    Peut-être le code de "Ajouter Row" serait-il éclairant ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre chevronné

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 035
    Points : 2 053
    Points
    2 053
    Par défaut
    Comme dit tourlourou le code de la procédure serait nécessaire, mais à vue ta procédure change de cellule à chaque saut de ligne des listboxs donc erreur de code. Tu dois d'abord remettre le contenu de ta liste dans une seule chaîne avec une boucle, l'envoyer dans la cellule voulue et ensuite faire la même chose avec la seconde liste en l'envoyant dans la cellule suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Composer Chaîne1
    LaStringList.Cells[LeRowEnCours,LacelluleVoulue]:=LaChaîneComplète1; 
    Composer Chaîne2
    LaStringList.Cells[LeRowEnCours,LacelluleVoulue+1]:=LaChaîneComplète2;
    Autres trucs: Ton bandeau de sélection est tout en haut de la grille et ton texte déboule en plein milieu, ce serait à revoir, il serait mieux sur le premier rang. Et mettre l'identité dans une colfixed est une idée curieuse ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 28
    Points
    28
    Par défaut
    Re bonjour,

    En testant la même chose avec Delphi 10 que je viens de télécharger, => pas de problème... Donc Je cherche mon erreur...

    Question : Je voudrais supprimer ce topic inutile mais je ne sais pas comment faire.

    Cordialement.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 28
    Points
    28
    Par défaut
    Bonsoir à vous deux,

    Ca fait deux semaines que je me casse la tête la dessus ... avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm1.Button7Click(Sender: TObject);
    var
     m,n, i:integer;            
     begin
     n := StringGrid1.RowCount;
     m:= StringGrid1.Row;
     i:= n-m;
     StringGrid1.RowCount := StringGrid1.RowCount+1;
      for i:= 0 to n-m-1  do
      StringGrid1.Rows[n-i].Text:=StringGrid1.Rows[n-i-1].text;
     
     StringGrid1.RowCount := StringGrid1.RowCount+1;    // Ecrire dans les cellules de la StringGrid
     StringGrid1.RowCount := StringGrid1.RowCount-1;  // Sinon OutOfRange ... ?   Je ne comprends pas
    end;
    Le code ancien avec Delphi 3 réutilisé avec D10 est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ocedure TForm1.AjoutClick(Sender: TObject);
     var
    n:integer;
    n1:integer;
    x:integer;
    begin
      StringGrid1.RowCount:=StringGrid1.RowCount+1;
       x:=StringGrid1.RowCount;
       n:=StringGrid1.Row;
       n1:=x-n;
       for n1:= 0 to x-n do
        StringGrid1.Rows[x-n1+1]:=StringGrid1.Rows[x-n1];
        StringGrid1.Cells[0,4] := 'Fred' ;  // Utile ici pour mieux signaler l'item de la colonne 0
    end;
    Cordialement.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 28
    Points
    28
    Par défaut
    J'ai ajouté .text dans la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringGrid1.Rows[n-i].Text:=StringGrid1.Rows[n-i-1].text;
    Et c'est la cause de l'erreur...

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

Discussions similaires

  1. [XL-2007] Reporter contenu des cellules d'une feuille dans 2 autres
    Par carlux3 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/11/2010, 16h06
  2. Couleur des cellules dans une StringGrid
    Par dekalima dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/09/2010, 14h58
  3. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25
  4. Insérer des lignes dans une StringGrid
    Par da_latifa dans le forum Composants VCL
    Réponses: 1
    Dernier message: 26/09/2005, 12h45
  5. Ne rentrer que des chiffes dans une stringgrid
    Par rvzip64 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 29/08/2005, 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