[R] Mise à jour d'une Edit ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

[R] Mise à jour d'une Edit ?

#1

Message par blacksoul305 »

EDIT : ###ATTENTION, l'idée de la mise à jour de l'Edit a été arrêté car bien trop compliquée et encombrante, solution finale : ListView###

Salut salut,

voilà le soucis. Donc, au premier abord, vous pensez sûrement que ma demande sort d'un abruti qui semble ne pas avoir lu les règles du forum et encore moins les commandes de la touche F1 après avoir vu le titre, cependant c'pas aussi simple que ça.

Dans mon programme, on peut choisir plusieurs choses qui sont répertoriés dans un .ini. Pour donner un peu plus de style, j'ai décidé de mettre une Edit dans une autre GUI et qu'au fur et à mesure que l'utilisateur choisi, l'Edit se mette à jour. J'ai d'abord essayé ça :

Ajouter qqch :

Code : Tout sélectionner

<condition>
$qqch = lolipop
$save = GuiCtrlRead($Edit1)
GuiCtrlSetData($Edit1,$save& @CRLF& "- "&$qqch)
supprimer qqch :

Code : Tout sélectionner

<condition>
GuictrlSetData($Edit,$save)
Donc oui là ça marchait, mais pour 2 qqch, puisque si j'en mes trois, je supprime une fois j'ai $save de l'autre fois, mais je re-supprime, bah là ça marche pas.
J'ai donc essayé ça :

Ajouter qqch :

Code : Tout sélectionner

<condition>
$var = IniReadSectionNames($ini) ; les noms de sections représentent les qqch
For $i = 1 To $var[0]
GuiCtrlSetData($Edit1,"- "&$var[$i]&@CRLF)
Tout cela ne s'est pas montré efficace. Je veux qu'en fait (et oui je complique), que les "qqch" c'est à dire les noms de sections soient comme cela dans mon Edit :
- plop
- flop
- clac
- boum
Je vous remercie d'avance !
Modifié en dernier par blacksoul305 le mer. 28 mars 2012 22:59, modifié 1 fois.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#2

Message par Tlem »

blacksoul305 a écrit :Sujet du message: [..] Mise à jour d'une Edit ?
Message non luPosté: Ven 23 Mar 2012 à 21:21

Salut salut,

voilà le soucis. Donc, au premier abord, vous pensez sûrement que ma demande sort d'un abruti qui semble ne pas avoir lu les règles du forum et encore moins les commandes de la touche F1 après avoir vu le titre, cependant c'pas aussi simple que ça.
Ha !!! :shock:

Le titre me semble correct.
La politesse au début et à la fin y est !
Le problème à l'air d’être décrit correctement.

Pourquoi être aussi négatif ? :roll:
Doit-je lire le reste de votre sujet afin de voir le problème ou doit-je m'arrêter à "ma demande sort d'un abruti" ? :lol:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#3

Message par lesolutionneur »

@Tlem : ton message est useless ;)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#4

Message par blacksoul305 »

Héhé, il est vrai que j'ai peut être été trop négatif sur ce coup là. C'est juste que mon sujet a l'air d'être naze car on apprend ça dans les premiers chapitre du tutoriel, mais là c'est que c'est un peu plus compliqué. J'arrive pas à voir comment arriver à ce que je veux, vous avez quelque chose à me proposer ? Un code ou une piste ?

Merci !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#5

Message par Tlem »

C'est un mélange de divers solutions, mais cela devrait (je l'espère) vous donner un guide :
► Afficher le texte
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#6

Message par mikell »

On peut aussi vachement se simplifier la vie en utilisant, au lieu d'une edit, une listview sans header et à une seule colonne
Le look est identique mais c'est plus facile à gérer
" 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
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#7

Message par Tlem »

+1, mais je fait avec ce qui à été proposé. :D
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#8

Message par parazitenew »

Coucou, je passais par là

ça m'interresserai de savoir comment enlever le header d'une listview, :)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#9

Message par mikell »

Code : Tout sélectionner

$oIE=ObjCreate("Shell.Explorer.2")
$gui = GUICreate("", 700, 450, -1, -1, -1, 0x80) 
$gX = GUICtrlCreateObj($oIE, 0, 0, 700, 450)
GUISetState()
$oIE.Navigate("mk:@MSITStore:" & StringRegExpReplace(@Autoitexe, '(.+)\\[^\\]+', "$1") _  
    & "\AutoIt3.chm::/html/appendix/GUIStyles.htm#ListView")
$oIE.Refresh
While GuiGetMsg()<>-3
Wend
" 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
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#10

Message par matwachich »

@parazitenew: regardez les style de GuiCtrlCreateListView (plus précisément $LVS_NOCOLUMNHEADER)

Pour le problème principal, je dis qu'il faudrait séparer les données de l'affichage:
- Les données sont stockées dans un Array (qu'on peut facilement gérer - ajouter/enlever)
- L'affichage se fait à partir du Array: à chaque fois, on efface tout le contenu, et on en construit un autre (String) qu'on insert dans le Edit

C'est une méthode parmi d'autres...

PS: @mikell, mmm j'adore cette fonction des fichiers d'aide... :mrgreen:
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#11

Message par blacksoul305 »

Déjà merci pour votre code Tlem commenté (mois pas savoir parler très bien le français) code commenté Tlem, je vais l'étudier car les arrays sont vraiment pas ma tasse de thé, mais il est vrai qu'avec mon fonctionnement (qqch = section d'un ini), je suis obligé de me battre avec, pas très bons copains hein ?

Bref, l'idée de la Treeview me branche pas mal, mais l'truc c'est que ça me fait peur le nombre de topics créés à cause de cette commande maléfique :lol: . Aussi jusqu'à maintenant F1 ajouter qqch en l'écrivant en tant que nom de section, et F2 supprimer un qqch en le supprimant de l'ini et lors du lancement du code principal, on lit une dernière fois le Ini, on refait la liste de tout ce qui est là et on traite le tout en boucle. Voilà, j'espère vous avoir un peu plus renseigné sur le protocole du prog. Maintenant, est-ce que l'idée de Treeview va pas être un peu difficile à mettre en place, je sais pas du tout. Vous allez me dire, le but de la programmation c'est de passer toujours à quelque chose de plus dur et de plus intéressant. J'ai cependant peur d'en avoir marre à ne pas y arriver au bout d'un moment :lol: .

Bon, je vais regarder le code de Tlem et aussi regarder la doc sur la Treeview, conseils et idées sont les bienvenus. Merci !

EDIT : Après avoir regardé votre code Tlem, je pense avoir trouvé la solution (qui n'est pas écrite) en fait, votre code m'y a fait fortement penser (et à mon avis ça doit être celle proposée par matwachich). En effet, votre code ajoute très bien les lignes avec un tiret comme je le voulais, mais c'est pas ça qui me bloquait. Le problème chez moi était lors de la suppression d'un qqch qui ne marchait pas au delà de 2 qqch. Inutile quoi. Pourquoi ne pas tout simplement supprimer une ligne du tableau et par la même occasion du ini, on relit une fois le ini, on remet à jour l'Edit ? Bien sûr, je dis "tout simplement" mais j'en suis incapable mais vous pouvez peut être
Lazy mode: ON
me fournir un truc tout prêt ?
Lazy mode: OFF
Bon, j'vais voir si j'peux faire quelques test en charcutant le code de Tlem et en créant un ini. Merci en tout cas !

EDIT2 : J'ai essayé ce code sans succès avec cet ini là, j'ai eu ce résultat-ci.
Je pense qu'en fait il ne reviens pas à la ligne de mon Edit, il supprime juste ce qu'il viens de mettre à jour. Et je pense avoir trouver le problème aussi.
EDIT3 : BINGO!
► Afficher le texte
EDIT4 : Oh crotte j'en ai marre là !!

J'ai deux problèmes maintenant :
En ajoutant un qqch, la liste se met à jour correctement. En ajoutant le second, la liste remet le premier et mes ensuite le second qqch, ce qui me donne :

Code : Tout sélectionner

- qqch1 ; lors du premier ajout
- qqch1 ; lors du second ajout
- qqch2 ; lors du second ajout
En supprimant, j'utilise IniDelete() mais ça supprime seulement la valeur et non le nom de la section. Maintenant je pourrai peut être faire en sorte que si la valeur de la clef de la section qqch = 1 on l'ajoute dans le traitement si ça vaut 0 on s'en occupe pas. Mais là je dois modifier pas mal de lignes et je suis même pas sur d'y arriver ... Ou alors il faudrait que je me démerde à mettre les qqch en tant que valeur et non de nom de section. Y a vraiment aucune autre solution ?

EDIT5 : Yes, je crois que j'ai trouvé pour supprimer le ini :
Doc aide pour la fonction IniDelete() a écrit :The Default keyword may also be used which will cause the section to be deleted.
Cela m'enlève une grosse épine du pied, il me manque plus que l'ajout qui m'embête !

Je vous remercie encore pour votre aide si précieuse !!

EDIT6 : Mise à jour du problème donc. Comment mettre à jour une EditBox avec un array de façon à faire :

Code : Tout sélectionner

- chose1
- chose2
-chose3
Ça a l'air dur puisque au forum US on ne me répond pas non plus... Désolé pour le fil à retordre.
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#12

Message par mikell »

Tu persistes dans l'erreur donc tu te fais chier, normal :mrgreen:
Le boss et moi on t'a déjà conseillé une listview (PAS une treeview)
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#13

Message par blacksoul305 »

Ah... Bah j'suis désolé. Mais si jamais vous avez la réponse à ma dernière question, mettez là. Moi je vais bosser sur la ListView que vous me conseillez. Encore merci à vous pour vos idées !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#14

Message par mikell »

Pour le mix listview + array + ini voilà un petit script exagérément détaillé qui donne quelques bases
► 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#15

Message par blacksoul305 »

Merci pour le mal que tu t'es donné, c'est super gentil ! Je ne peux malheureusement travailler dessus ce soir car cours obligent, mais je vais essayer demain si j'ai du temps.

Merci encore !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#16

Message par mikell »

Si je me permets de te chambrer, alors c'est la moindre des choses :mrgreen:
Le même un peu remanié (peut-être plus parlant) :
► 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#17

Message par blacksoul305 »

J'étudie en ce moment même ton programme, et je vais paraître chiant, mais la commande UBound, je sais pas trop à quoi elle sert. J'ai déjà regardé à la doc, mais je comprend pas son utilité. Or, pas mal de gens l'utilise. Aujourd'hui j'ai parlé de mon problème de mise à jour d'Edit à mon ami, et il m'a retourné ce code, mais qui lui aussi ne marche pas. Il me renvoie même lors de l'exécution (et non la compilation) une erreur :

Code : Tout sélectionner

                $var = IniReadSectionNames($ini)
                For $JaimeLeCacaQuandIlEstMoisi = 1 To UBound($var)
                    GUICtrlSetData($Edit1,"- "&GUICtrlRead($Edit1)&$var[$JaimeLeCacaQuandIlEstMoisi]&@CRLF)
                Next
Erreur de l'exécution a écrit :==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
Bon, je vais voir si j'peux me débrouiller avec ton code, encore merci !
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#18

Message par mikell »

Si tu dois utiliser des arrays, UBound est incontournable
ça renvoie le nombre d'éléments dans l'array
exemple :
$array[5] = [0, 1, 2, 3, 4] => 5 éléments donc UBound($array) = 5

La finesse c'est l'index des éléments (qu'on utilise dans une boucle For par exemple) qui commence à 0 (le 1er élément a l'index 0, le 5ème l'index 4 )
Donc pour cette array il faudra écrire :
For $i = 0 To 4
ou alors
For $i = 0 To UBound($array)-1
sinon tu auras la très habituelle erreur "Array variable has incorrect number of subscripts or subscript dimension range exceeded" :mrgreen:

Donc l'erreur de ton pote avec IniReadSectionNames c'est :
- ou bien on utilise $var[0] (nombre de sections)
- ou bien UBound($var)-1 (l'array $var a comme éléments $var[0] + un élément par section)
héhé Image
Modifié en dernier par mikell le lun. 26 mars 2012 18:47, modifié 1 fois.
" 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
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#19

Message par blacksoul305 »

Oui mais là je connais pas la dimension (je sais pas si on dit comme ça) de l'array, car tu l'as défini à 5, mais dans mon cas il peut être aléatoire...

EDIT : J'ai vu ta dernière commande, je teste dès à présent

EDIT2 : J'arrête avec l'Edit, ça commence à m'embêter cette histoire. Faut que j'essaie de placer une ListView dans mon code principal, ça va être long j'ai l'impression ! Merci pour l'aide en tout cas, c'est sympa.

EDIT3 : J'arrive à la fatale conclusion que dans mon Edit j'ai des doubles de la première section lors du second ajout, comme au problème initial...
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Mise à jour d'une Edit ?

#20

Message par mikell »

Purée mais laisse tomber cette foutue Edit !!!
http://www.autoitscript.fr/forum/viewto ... 020#p65020
blacksoul305 a écrit :Faut que j'essaie de placer une ListView dans mon code principal, ça va être long j'ai l'impression
Faut pas réagir comme ça. Abandonne tes préjugés et tes a-priori, la listview est ton amie Image
Modifié en dernier par mikell le lun. 26 mars 2012 19:03, modifié 1 fois.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre