Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Autres possibilités pour GRID | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Autres possibilités pour GRID Mer 24 Oct 2012 - 19:30 | |
| Jack, il y a déjà un certain temps, j'avais proposé la création de commmandes comme ceci: GRID_ROW_INSERT grid,index,n_row GRID_ROW_DELETE grid,index,n_row As-tu prévu de réaliser de telles fonctions ? Pour le moment, je dois me débrouiller à décharger le grid par GRID_SAVE, puis je travaille le fichier texte pour retirer les lignes en question, puis j'efface le GRID par GRID_CLEAR, et finalement, je recharge le grid par GRID_LOAD. C'est très lourd. Idem pour l'insertion. Peux-tu faire quelque chose ?
Dans le même esprit, pourrais-tu étendre la fonction COUNT() à GRID, ou faire une fonction GRID_COUNT() ? Il est souvent important de connaître le nombre de lignes réellement occupées dans un GRID ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 24 Oct 2012 - 19:36 | |
| | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Autres possibilités pour GRID Mer 24 Oct 2012 - 20:45 | |
| | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Autres possibilités pour GRID Jeu 25 Oct 2012 - 18:29 | |
| GRID_ROW_INSERT N,R : insère une ligne en position R de l'objet GRID numéro N GRID_ROW_DELETE N,R : détruit la ligne R de l'objet GRID numéro N GRID_COLUMN_INSERT N,C : insère une colonne en position C de l'objet GRID numéro N GRID_COLUMN_DELETE N,C : détruit la colonne C de l'objet GRID numéro N
sont dans la dernière version instantanée V 0.9.24i5 | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 25 Oct 2012 - 18:52 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Autres possibilités pour GRID Mar 30 Oct 2012 - 0:21 | |
| Jack, ces nouvelles fonctions font merveille ! C'est vraiment super de pouvoir faire cela directement, sans recourir à un fichier externe. Cependant, il y a un problème avec la commande GRID_ROW_DELETE. Elle fonctionne parfaitement pour l'aspect visuel. Mais elle n'efface PAS la dernière ligne, si on supprime la dernière ligne ! Cette dernière semble s'effacer, mais reste toujours en mémoire. Et en lecture, elle est bien présente. Exemple: - Code:
-
dim i% grid 1 : width 1,400 : height 1,200 memo 2 : height 2,200 : width 2,100 : left 2,410 for i%=1 to 5 : grid_write 1,i%,1,str$(i%) : next i% message "On va supprimer la ligne 5" grid_row_delete 1,5 message "On va lire les 5 premières lignes" for i%=1 to 5 item_add 2,str$(i%)+": "+grid_read$(1,i%,1) next i% message "On voit que la ligne est toujours dans le grid !" end
Par contre, si l'on supprime une ligne autre que la dernière, tout se passe bien. Et c'est important, car on n'a pas de fonction du genre GRID_ACTIVE_ROW_COUNT() qui donnerait le nombre de lignes utilisées. Il faut, soit tenir le compte des lignes avec une variable incrémentée à l'ajout et décrémentée à la suppression, soit parcourir le tableau à partir du début et s'arrêter sur le dernière ligne non-vide. Et dans ce cas, cette ligne fantôme fausse le décompte. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 30 Oct 2012 - 1:56 | |
| J'ai fait ton test avec le même résultat chez moi. PS : Chose curieuse, c'est que çà n' a pas l'air de poser de problèmes dans mon programme | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Autres possibilités pour GRID Mar 30 Oct 2012 - 7:50 | |
| Bonjour Klaus, Je viens d'examiner ton petit programme et je pense qu'il y a un problème quand on supprime la dernière ligne d'un grid, car si on prend ton exemple, que l'on fixe 6 lignes, et que l'on supprime la 5ème, tout se passe bien et elle n'existe plus puisque la 6ème devient la 5ème et que la 6ème est vidée: - Code:
-
dim i% grid 1 : grid_column 1,5 : grid_row 1,6 width 1,400 : height 1,200 memo 2 : height 2,200 : width 2,100 : left 2,410 for i%=1 to 6 : grid_write 1,i%,1,str$(i%) : next i% message "On va supprimer la ligne 5" grid_row_delete 1,5 message "On va lire les 6 premières lignes" for i%=1 to 6 item_add 2,str$(i%)+": "+grid_read$(1,i%,1) next i% message "On voit que la ligne est bien supprimée dans le grid !" end
Mais avec cela, je me suis apperçu que l'on pouvait écrire dans une cellulle qui ne fait pas partie du grid défini. En reprenant ton exemple, et en vidant la cellule 5,1 j'ai voulu écrire quelque chose sur la ligne 6 qui n'existe pas dans le grid puisqu'il est défini en 5 lignes et 5 colones. - Code:
-
dim i% grid 1 : grid_column 1,5 : grid_row 1,5 width 1,400 : height 1,200 memo 2 : height 2,200 : width 2,100 : left 2,410 for i%=1 to 5 : grid_write 1,i%,1,str$(i%) : next i% message "On va supprimer la ligne 5 et vider la cellule [5,1]" grid_row_delete 1,5:grid_write 1,5,1,"" message "on va écrire dans une cellule qui n'existe pas normalement" grid_write 1,6,1,"coucou" message "On va lire les 6 premières lignes" for i%=1 to 6 item_add 2,str$(i%)+": "+grid_read$(1,i%,1) next i% message "On voit que les lignes 5 et 6 existent dans le grid !" end
Mais je pense que le fait de pouvoir écrire dans une cellulle en dehors du grid défini peut être exploité avantageusement dans un programme, même si cela ne parait pas logique. A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Autres possibilités pour GRID Mar 30 Oct 2012 - 8:37 | |
| @bignono: Le problème que je soulève, se pose UNIQUEMENT si l'on supprime la dernière ligne par GID_ROW_DELETE du tableau. Et dans ce contexte, la "dernière ligne" est définie par la commande GRID_ROW. Et si l'on fait GRID_SAVE 1,5,5,"essai.txt" à la fin du code que j'ai posté, on a bien les 5 lignes, y compris celle que j'ai supprimée. Par contre, si je supprime une autre ligne (la 3 par exemple),tout est bien tassé, et la commande GRID_SAVE avec 5 lignes crée certes un fichier qui commence par 5 5 ... Mais il n'y a que 4 lignes réelles, la 5ème étant entièrement blanche. Cela correspond au contenu du mémo dans lequel je montre le résultat de GRID_READ$(). Je pense que la ligne libérée dans le tableau doit être mise à blanc, pas uniquement si l'on supprime une ligne qui est inférieure à celle définie par GRID_ROW. Regarde la variante suivante. Je travaille sur une seule ligne. Avec le tableau par défaut (5 lignes), tout se passe bien. Mais enlève le commentaire devant la ligne 4 du code... - Code:
-
dim i% grid 1 : width 1,400 : height 1,200 memo 2 : height 2,200 : width 2,100 : left 2,410 ' grid_row 1,1 : ' <======= enlever le commentaire pour voir le problème for i%=1 to 1 : grid_write 1,i%,1,str$(i%) : next i% message "On va supprimer la ligne 1" grid_row_delete 1,1 message "On va lire les 1 premières lignes" for i%=1 to 1 item_add 2,str$(i%)+": "+grid_read$(1,i%,1) next i% message "On voit que la ligne est toujours dans le grid !" grid_save 1,5,5,"essai.txt" end
Le fait de pouvoir écrire dans des cellules au-delà de ce qui est défini par GRID_ROW est pour moi un effet secondaire (side-effect). Cela risque de ne pas continuer avec l'évolution des versions et je ne baserais pas un code sur ce comportement bizarre. Si j'ai besoin de données non visibles, je les écris dans un autre grid correctement dimensionné, mais caché par HIDE. | |
| | | Contenu sponsorisé
| Sujet: Re: Autres possibilités pour GRID | |
| |
| | | | Autres possibilités pour GRID | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |