[R] Supprimer UN élément d'une "List"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

[R] Supprimer UN élément d'une "List"

#1

Message par Fish »

Bonjour tout le monde!

En réalité j'ai deux problèmes. Avant de vous les exposer, je vous explique la situation :
Je fais pour ma prof' de travaux pratiques un petit programme qui lui permettrait d'imprimer ses TP en une seule fois, un par un, une bouton qui lui permettrait d'éditer un TP, de le supprimer.

Mes problèmes :
1) Quand je veux supprimer UN SEUL élément de la List dans la GUI, je n'y arrive pas... J'ai testé plusieurs trucs mais au bout d'un moment une erreur apparait. Cela provient du fait que je gère ma liste de TP via un fichier Ini pour ne pas avoir à refaire à chaque fois une liste. Le problème étant que je n'arrive pas à supprimer "proprement" un tp dans l'Ini, il reste une trace quelque part ou alors, vu que les tp sont répertoriés par numéros, la liste prends "1, 2, 4, 5" une fois le TP supprimé et cela fait bugger le programme...

2) Quand je veux imprimer toute la liste, une erreur apparait...


Voici mon code :
► Afficher le texte
Et en pièce jointe le dossier complet.
Fichiers joints
Printer.zip
Fichier mis à jour le 23-06-2022 par Tlem sans l'Exe
(3.16 Kio) Téléchargé 28 fois
Modifié en dernier par Fish le lun. 16 avr. 2012 11:57, modifié 1 fois.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#2

Message par mikell »

A priori je dirais que ton ini n'est pas pratique
Je le verrais plutôt comme ça :

Code : Tout sélectionner

[0]
Tp multimédia=C:\Users\FishPanai\Documents\TP1.doc
[1]
Tp caméscope=C:\Users\FishPanai\Documents\TP2.doc
Beaucoup plus facile à gérer dans une array, le nombre de TP correspond au nombre de sections, l'index de l'array correspond au n° de section (index des items pour affichage dans une listview par exemple)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#3

Message par Fish »

Oulah, je ne m'en sort pas bien du tout avec les Arrays...
Et puis ça ne résous pas mon problème, si on supprime le TP 2, on supprime la section 2, il va donc y avoir la section 1 et 3 alors que l'on à 2 tps. Il va aussi y avoir des erreurs.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#4

Message par mikell »

Fish a écrit :Et puis ça ne résous pas mon problème
Ben si...
Tu gères ta liste, l'array et le ini en même temps
Mais un exemple vaut mieux que de longs discours
Essaye ce script et regarde la façon dont le ini évolue
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#5

Message par Fish »

Merci pour ton script, je commence à comprendre le principe. Mais c'est pas encore gagné!
Toutes les fonctions marchent à part ce fichu "supprimer un tp".

Voila le nouveau code :
► Afficher le texte
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#6

Message par mikell »

Hmmm ce n'est pas la première fois que je dis ça et certainement pas la dernière, mais une Listview est *beaucoup* plus facile à gérer qu'une List
Par exemple dans ton cas il serait très utile de pouvoir récupérer l'index dans la liste de l'item sélectionné ... avec une listview c'est facile, avec une liste faut utiliser des fonctions compliquées comme _GUICtrlListBox_GetCurSel () qui demandent de gros includes
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#7

Message par Fish »

Qu'entends-tu par "l'index"?
Qu'entends-tu par "handle" (dans ton script)?
Que contient $array?
Tout est embrouillé dans ma tête. :x
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#8

Message par mikell »

Cool :mrgreen:
ça a l'air compliqué mais ça ne l'est pas (enfin pas trop)

- le handle c'est le numéro d'identité que Windows attribue à chaque controle quand il est créé
- $array dans mon script contient ce qui a été lu dans le ini, et qui va être écrit dans la liste
- l'index c'est simplement le rang de l'item dans la liste, son numéro de ligne si tu préfères
c'est pratique si on veut faire le parallèle avec le contenu d'une array, les index (les rangs) sont les mêmes
Pour une List on peut récupérer l'index comme ça (attention le n° 1 a un index 0)

Code : Tout sélectionner

Case $msg = $read
    MsgBox(0, "", GuiCtrlRead($mylist) & @crlf & "index :  " & GUICtrlSendMsg($mylist, 0x0188, 0, 0))
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#9

Message par Fish »

Pour que ce soit plus logique et clair, on peux incrémenter l'index de 1 à chaque fois?
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#10

Message par mikell »

Prenons un exemple simple

Dans ton ini tu as 10 valeurs
Tu vas lire ça dans une array à 10 éléments, les index de ces éléments dans l'array iront de 0 à 9
Tu utilises cette array pour écrire une liste de 10 lignes
Les index (numéros de ligne) des éléments dans la liste iront de 0 à 9

Si tu supprimes un item de la liste, il suffit de supprimer l'item d'index identique dans l'array (avec _ArrayDelete($array, $index), puis de réécrire le ini à partir de l'array rectifiée

Et oui, le gros intérêt des index est qu'ils peuvent être utilisés avec incrémentation dans des boucles For
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#11

Message par Fish »

Ca y est j'ai compris!

J'ai repris votre code pour l'adapter à mon programme :
► Afficher le texte
Le problème c'est que quand la liste est vide, on ne peux ni supprimer ni ajouter, le programme se ferme et donne une erreur...
Edit : plus que l'erreur pour l'ajout de TP dans la liste... Je regarde... => Je sais d'où vient le problème mais pas comment le régler... En gros quand je fais un ReDim sur $contenuini et que $prevnb = 0 il m'affiche une erreur, et ne veut pas faire $contenuini[1][2].... Pourquoi? (Je précise au cas ou que le problème est aussi dans votre script. )
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#12

Message par mikell »

Hé oui, il manquait une gestion d'erreur dans mon script, voilà le bon :oops:
► Afficher le texte
Et pour le fun, le même pour listbox (après tout, c'était le titre du sujet...)
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#13

Message par Fish »

Je patauge toujours... Des erreurs de partout... Jugez par vous même :
► Afficher le texte
Si vous pouviez m'aider à le corriger s'il vous plais... Moi je n'y arrive pas, ça fait 2 heures que je me casse la tête dessus...
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#14

Message par mikell »

Voilà ça devrait le faire maintenant :wink:
ça y était presque (comparer avec l'ancien script)
Note : pour éditer et imprimer pas besoin de relire le ini, le chemin est déjà dans l'array... on peut aussi récupérer ce chemin par lecture directe dans la listview de l'item sélectionné (exemple inside)
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Fish
Niveau 5
Niveau 5
Messages : 178
Enregistré le : sam. 23 oct. 2010 19:28
Localisation : Devant mon ordinateur.
Status : Hors ligne

Re: [..] Supprimer UN élément d'une "List"

#15

Message par Fish »

Je comprends mieux!
En tout cas merci beaucoup, c'est résolu!
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Répondre