[R] GuiList, aide fonction
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] GuiList, aide fonction
Bonjour !!
Je faisais des recherches sur les foncions liées aux Listes des Gui, et je suis tombé sur deux fonctions que je ne comprends pas : "_GUICTRLListBox_GetSelItems" et "_GUICtrlListBox_GetSelItemsText" !
Pourriez-vous m'expliquer ces dernières et comment les utiliser (leurs paramètres) ?
Merci d'avance !
Je faisais des recherches sur les foncions liées aux Listes des Gui, et je suis tombé sur deux fonctions que je ne comprends pas : "_GUICTRLListBox_GetSelItems" et "_GUICtrlListBox_GetSelItemsText" !
Pourriez-vous m'expliquer ces dernières et comment les utiliser (leurs paramètres) ?
Merci d'avance !
Modifié en dernier par yanius le lun. 18 juil. 2011 11:31, modifié 1 fois.
0.110001000000000000000001000
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Ben les exemples donnés dans l'aide sont très compréhensibles
Code : Tout sélectionner
#Include <GuiListBox.au3>
_GUICtrlListBox_GetSelItems($myListBox) => renvoie l'emplacement dans la liste des items sélectionnés
_GUICtrlListBox_GetSelItemsText($myListBox) => renvoie le texte des items sélectionnés" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Ok !
Merci beaucoup pour ta réponse !
Eh...juste une dernière question, comment faire pour attribuer à un élément d'un liste, un texte par exemple dans un "Edit", après avoir écrit le texte dans un "Edit" et avoir cliqué sur un boutton (ici $Button3) ?
Est-ce comme cela ?
Merci beaucoup pour ta réponse !
Eh...juste une dernière question, comment faire pour attribuer à un élément d'un liste, un texte par exemple dans un "Edit", après avoir écrit le texte dans un "Edit" et avoir cliqué sur un boutton (ici $Button3) ?
Est-ce comme cela ?
Code : Tout sélectionner
Case $Button3
$selitems2 = _GUICtrlListBox_GetSelItemsText($List1)
$Read = GUICtrlRead($Edit1)
IniWrite($inifile, $selitems2, "key", $Read)0.110001000000000000000001000
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
RTFM
Code : Tout sélectionner
_GUICtrlListBox_ReplaceString : Replaces the text of an item
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Avec cette fonction, je remplace le nom de l'item !
Alors que moi en fait, je voulais attribuer un texte à un item d'un liste : "Tarte aux cerises" par exemple et à côté je vais associer à cet item sa recette (le texte) dans un edit !
Alors que moi en fait, je voulais attribuer un texte à un item d'un liste : "Tarte aux cerises" par exemple et à côté je vais associer à cet item sa recette (le texte) dans un edit !
0.110001000000000000000001000
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Ben là tu peux faire _GUICtrlListBox_ReplaceString avec comme nouveau texte :
$text = GUICtrlListBox_GetSelItemsText($hListBox) & GUICtrlRead($Edit1) )
Mais c'est pas terrible, apparemment ce qu'il te faut c'est pas une ListBox, c'est une ListView à 2 colonnes : colonne 1 => "Tarte aux cerises", colonne 2 => "recette"
Il y a un magnifique exemple ici : http://www.autoitscript.com/forum/topic ... _p__696257
Mais la vue de cet exemple peut amener à penser qu'une bonne solution pourrait aussi être l'affichage de la recette dans une Edit externe si tu cliques "Tarte aux cerises" dans ta Listbox
$text = GUICtrlListBox_GetSelItemsText($hListBox) & GUICtrlRead($Edit1) )
Mais c'est pas terrible, apparemment ce qu'il te faut c'est pas une ListBox, c'est une ListView à 2 colonnes : colonne 1 => "Tarte aux cerises", colonne 2 => "recette"
Il y a un magnifique exemple ici : http://www.autoitscript.com/forum/topic ... _p__696257
Mais la vue de cet exemple peut amener à penser qu'une bonne solution pourrait aussi être l'affichage de la recette dans une Edit externe si tu cliques "Tarte aux cerises" dans ta Listbox
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Merci pour le lien
!
Juste une petite aide, après quelques recherches dans les fonctions, je n'ai pas trouvé comment retrouver le " zero based index" de l'item selectionné. Y a t-il un moyen ?
Juste une petite aide, après quelques recherches dans les fonctions, je n'ai pas trouvé comment retrouver le " zero based index" de l'item selectionné. Y a t-il un moyen ?
0.110001000000000000000001000
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Ah oui, le fameux "zero based index"...
Code : Tout sélectionner
_GUICtrlListView_GetSelectedIndices() [img]http://www.autoitscript.com/forum/public/style_emoticons/autoit/smile.gif[/img]" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Oui c'est ce fameux zero
Merci pour ton aide mikell, je vais essayer de réunir toutes ces fonctions pour réaliser mon script !!
Merci pour ton aide mikell, je vais essayer de réunir toutes ces fonctions pour réaliser mon script !!
0.110001000000000000000001000
Re: [..] GuiList, aide fonction
Ah lala, les ListView c'est vraiment pas mon domaine
!
Donc voilà mon problème :
Je voulais insérer un bouton "supprimer" afin que l'utilisateur puisse supprimer un objet de la ListView. Par ailleurs, à chaque démarrage du programme, ce dernier va récupérer tous les objets de la ListView pour les placer dans celle-ci.
En clair,
Lorsque l'utilisateur supprime un item, il doit donc être également supprimé du fichier .ini (c'est ici que j'ai un problème) !
J'ai essayer de faire ce bout de script, pourtant en vain !
Sachant que pour ajouter un item, j'ai fait comme suit :
Cela marche très bien pour ajouter un item alors que je bloque pour la phase de suppression !
De l'aide please
!
Donc voilà mon problème :
Je voulais insérer un bouton "supprimer" afin que l'utilisateur puisse supprimer un objet de la ListView. Par ailleurs, à chaque démarrage du programme, ce dernier va récupérer tous les objets de la ListView pour les placer dans celle-ci.
En clair,
Code : Tout sélectionner
$inifile = "List.ini"
$var = IniReadSectionNames($inifile)
If @error Then
MsgBox(4096, "", "Error occurred, probably no INI file.")
Else
For $i = 1 To $var[0]
_GUICtrlListView_AddItem($hListView, $var[$i])
Next
EndIf
Lorsque l'utilisateur supprime un item, il doit donc être également supprimé du fichier .ini (c'est ici que j'ai un problème) !
J'ai essayer de faire ce bout de script, pourtant en vain !
Code : Tout sélectionner
Case $Button3
$hWndListView = GUICtrlGetHandle($hListView)
$ItemIndex = _GUICtrlListView_GetSelectedIndices($hWndListView)
_GUICtrlListView_DeleteItemsSelected($hWndListView)
$itxt = _GUICtrlListView_GetItemText($hListView, $ItemIndex)
IniDelete($inifile, $itxt)Code : Tout sélectionner
Case $Button1
$Input1 = InputBox("Le nom !", "Veuillez entrer le nom de la propriété ou du théorème !")
If $Input1 = "" Then
MsgBox(0, "Erreur !", "Veuillez entrer un nom valide !")
Else
_GUICtrlListView_AddItem($hListView, $Input1)
IniWriteSection($inifile, $Input1, "Edit=")
EndIfDe l'aide please
0.110001000000000000000001000
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Code : Tout sélectionner
_GUICtrlListView_DeleteItemsSelected($hWndListView)
$itxt = _GUICtrlListView_GetItemText($hListView, $ItemIndex)" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Ah oui lol !!
C'est dans ces moments là que je me sens bête
!
Merci à toi mikell !
C'est dans ces moments là que je me sens bête
Merci à toi mikell !
0.110001000000000000000001000
Re: [..] GuiList, aide fonction
Euh Oupss, une dernière question (c'est la dernière promis
) !
En fait pour attribuer (par exemple) la recette, je l'ai enregistré dans un fichier ini. En ouvrant ce dernier, on a:
Bon je ne suis pas non plus fort en cuisine
!
Pour insérer la recette dans l'Edit qui apparaîtra, j'ai établi ce code :
Pourtant, lorsque je lance le script seul la ligne contenant la clé (dans mon exemple la clé est "Edit") est insérer dans mon Edit : "C'est tout simple, alors il vous faut des cerises et des tartes !"
Où ai-je encore fait une erreur ?
En fait pour attribuer (par exemple) la recette, je l'ai enregistré dans un fichier ini. En ouvrant ce dernier, on a:
Code : Tout sélectionner
[Tarte aux cerises]
Edit=C'est tout simple, alors il vous faut des cerises et des tartes !
Lorsque que vous avez tous ces ingrédients, mélangez les cerises et la tarte ! Mettez ensuite le tout au four.
Eh hop c'est prêt (c'est bon mais c'est chaud :mrgreen: )Pour insérer la recette dans l'Edit qui apparaîtra, j'ai établi ce code :
Code : Tout sélectionner
Case $msg[0] = $hListView
$hWndListView = GUICtrlGetHandle($hListView)
$ItemIndex = _GUICtrlListView_GetSelectedIndices($hWndListView)
$itxt = _GUICtrlListView_GetItemText($hWndListView, $ItemIndex)
Global $Form1 = GUICreate($itxt, 378, 426, 192, 124)
Global $Edit = GUICtrlCreateEdit("", 0, 0, 377, 425)
$rsect = IniReadSection($inifile2, $itxt)
If @error = 1 Then
MsgBox(0,"Error", "Error ! Il n'y a rien pour ce théorème !")
Else
For $i = 1 To $rsect[0][0]
GUICtrlSetData(-1, $rsect[$i][1])
Next
EndIf
GUISetState(@SW_SHOW, $Form1)Pourtant, lorsque je lance le script seul la ligne contenant la clé (dans mon exemple la clé est "Edit") est insérer dans mon Edit : "C'est tout simple, alors il vous faut des cerises et des tartes !"
Où ai-je encore fait une erreur ?
0.110001000000000000000001000
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Un fichier INI est lu ligne a ligne.
Donc si tu veux mettre des retours a la ligne dans le contenu de la ligne il faut que tu utilises un (ou des) caractere(s) spécial(aux), pour ensuite les transformer en retours a la ligne
Tu peux par exemple utiliser le signe paragraphe -> '§' et on ini resemblera a ceci :
Et dans ton source tu mets la modifs suivante pour remplacer les '§' par des '@CRLF'
Tant que j'y suis, on peut savoir ce que fait cette ligne ?
je croyais que tu faisais des recettes de cuisine, pas des théorèmes ?!? 
Donc si tu veux mettre des retours a la ligne dans le contenu de la ligne il faut que tu utilises un (ou des) caractere(s) spécial(aux), pour ensuite les transformer en retours a la ligne
Tu peux par exemple utiliser le signe paragraphe -> '§' et on ini resemblera a ceci :
Code : Tout sélectionner
[Tarte aux cerises]
Edit=C'est tout simple, alors il vous faut des cerises et des tartes !§Lorsque que vous avez tous ces ingrédients, mélangez les cerises et la tarte ! Mettez ensuite le tout au four.§Eh hop c'est prêt (c'est bon mais c'est chaud :mrgreen: )Code : Tout sélectionner
GUICtrlSetData(-1, StringReplace($rsect[$i][1],'§',@CrLf))Tant que j'y suis, on peut savoir ce que fait cette ligne ?
Code : Tout sélectionner
MsgBox(0,"Error", "Error ! Il n'y a rien pour ce théorème !")Si vis pacem para bellum
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Il est mentionné ici qu'une ligne de fichier ini est limitée à 1024 caractères
Donc si la méthode de zeshrek ne marche pas parce que la recette est trop longue, alors tu peux aussi écrire le ini comme ça :et récupérer avecL'idée est mieux développée par ZDS dans ce post
Donc si la méthode de zeshrek ne marche pas parce que la recette est trop longue, alors tu peux aussi écrire le ini comme ça :
Code : Tout sélectionner
[Tarte aux cerises]
Edit1=C'est tout simple, alors il vous faut des cerises et des tartes !
Edit2=Lorsque que vous avez tous ces ingrédients, mélangez les cerises et la tarte !
Edit3=Mettez ensuite le tout au four.
Edit4=Eh hop c'est prêt (c'est bon mais c'est chaud :mrgreen: )Code : Tout sélectionner
$rsect = IniReadSection($inifile2, $itxt)
$text = ""
For $i = 1 To $rsect[0][0]
$text &= $text & $rsect[$i][1] & @CRLF
GUICtrlSetData(-1, $text)
Next" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] GuiList, aide fonction
Parfait !!
Merci vraiment pour votre aide, j'ai enfin fini mon script
!
@zeshrek
Je n'ai pris le thème des recettes qu'à titre d'exemple
lol !
Merci vraiment pour votre aide, j'ai enfin fini mon script
@zeshrek
Je n'ai pris le thème des recettes qu'à titre d'exemple
0.110001000000000000000001000
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] GuiList, aide fonction
Il reste aussi la possibilité de combiner les 2 méthodesavec par ex le ini comme ça :et récupérer avecL'idée est mieux développée par ZDS dans ce post[/quote]
Comme ca tu peux 'spliter' ta recette en sections, en plus des retours a la ligne. Juste prendre garde a la limite des caracteres...
Code : Tout sélectionner
[Tarte aux cerises]
Ingredients = 1 tarte§Des Cerises
Temps=Préparation : 10mn§Cuisson : 30mn
Préparation=Mélangez les cerises et la tarte§Mettez ensuite le tout au four§Eh hop c'est prêt
Suggestion = Laisser refroidir avant de déguster (c'est bon mais c'est chaud :mrgreen: )Code : Tout sélectionner
$rsect = IniReadSection($inifile2, $itxt)
$text = ""
For $i = 1 To $rsect[0][0]
$text = $text & $rsect[$i][0] &" : "& StringReplace($rsect[$i][1],'§',@CrLf) & @CRLF
GUICtrlSetData(-1, $text)
NextComme ca tu peux 'spliter' ta recette en sections, en plus des retours a la ligne. Juste prendre garde a la limite des caracteres...
Si vis pacem para bellum

