[R] Liste avec changement simultané

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

[R] Liste avec changement simultané

#1

Message par timmalos »

Bonjour a tous, j'ai un petit probleme sur le code que je suis entrain de faire: il s'agit d'un lanceur de jeu, qui va lancer le jeu et va choisir le personnage qu'on lui aura designé: cette partie la est codée et marche.
Je voudrais pouvoir, dans mon script de configuration, modifier le nom du personnage tout en actualisant la liste:je m'explique avec des images:

La partie ou l'utilisateur choisi son personnage et lance le jeu:
Image
Quand l'utilisateur choisi l'option Parametres:
Image
Quand il clique sur un personnage de la liste, un label s'affiche pour qu'il puisse changer le nom si il le souhaite:
Image

Je suis arrivé a faire afficher dans le label le precedant nom mais quand j'ecrie , je n'arrive pas a recuperer ce qu'il faut:
mes personnages sont $personnage1, $personnage2,...$personnage10.
J'ai une variable $persochoisi qui elle contient la ligne qui a été selectionnée par l'utilisateur:
mais cette derniere ne prend que la valeur d'une $personnageX et non la variable elle meme, donc quand j'ecrie le nouveau nom dans le label, j'obtiens un $nomdupersonnage que je voudrais sassocier au personnage qui a été choisi.
Je ne sais pas si je me suis fait comprendre alors je vous met un bout de mon code ( le total fait 28ko je vais pas le copier ici:))
Declaration des variables:

Code : Tout sélectionner

$personnage1 = IniRead("parametres.ini","Connection","Personnage 1","Personnage 1")
etc jusqu'a:
$personnage10 = IniRead("parametres.ini","Connection","Personnage 10","Personnage 10")
Declaration de la liste:

Code : Tout sélectionner

$personnage = GUICtrlCreateList("", 180, 25, 150, 114)
GUIctrlSetState ($personnage,$GUI_HIDE)
GUICtrlSetData(-1, $personnage1&"|"&$personnage2&"|"&$personnage3&"|"&$personnage4&"|"&$personnage5&"|"&$personnage6&"|"&$personnage7&"|"&$personnage8&"|"&$personnage9&"|"&$personnage10)
 

puis dans ma boucle principale:

Code : Tout sélectionner

Case $msg = $personnage
                    $editperso = GUICtrlCreateInput( GUICtrlRead($personnage ) , 180, 140, 150, 20) 
                    GUIctrlSetState ($editperso,$GUI_SHOW)
                Case $msg = $editperso
                    $nompersonnage = GUICtrlRead ($editperso)
                    [b]GUICtrlRead($personnage ) = $nompersonnage[/b]
C'est cette derniere ligne que je n'arrive pas a convraincre de faire ce que je veux:)
j'aimerai obtenir par exemple la enieme case en faisant GUICtrlRead pour pouvoir assigner le nouveau nom du personnage a son $personnage correspondant et ensuite l'ecrire dans mon fichier .ini



Si il vous manque certaines precisions n'hesitez pas j'ai essayé d'etre la plus precis possible.
Je precise que ce n'est pas un programme frauduleux, c'est un programme qui va gerer et lancer tous les autres codes que j'ai fait en regroupant leurs parametres en un fichier et une fenetre. La partie que je presente ici me connecte juste a GuildWars en tapant adresse + motdepasse et appuie sur Entrer pour me connecter directement sur mon personnage de mon choix, j'espere que ce n'est pas considéré comme frauduleux.

Merci d'avance,
Timothée
Modifié en dernier par timmalos le lun. 26 mai 2008 19:09, modifié 1 fois.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..]Liste avec changement simultané

#2

Message par sylvanie »

Bonjour, voici un exple inspiré de ton projet, du moins c'est un début.
Tout tourne autours de l'udf des listes bien confortable si on ne connaît pas les tonnes de commandes windows à passer à ce type de contrôle.
En gros la fonction clé est : _GUICtrlListBox_ReplaceString

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <GUIListBox.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 529, 335, 193, 115)
$List1 = GUICtrlCreateList("", 72, 72, 137, 162)
GUICtrlSetData(-1,"perso 1|perso 2|perso 3")
$Input1 = GUICtrlCreateInput("", 296, 88, 161, 21)
$Buttonupdate = GUICtrlCreateButton("Update", 352, 136, 113, 33, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $List1
                _update_edit()
        Case $Buttonupdate
            _update_choice()
    EndSwitch
WEnd

Func _update_edit()
    local $text_input
    $text_input=GUICtrlRead($List1)
    GUICtrlSetData($Input1,$text_input)
EndFunc


Func _update_choice()
    Local $index_list_box,$text_input,$verif
    $text_input=GUICtrlRead($Input1)
    ;on verifie qu'on a bien tapé un texte
    If $text_input="" Then Return MsgBox(16,"No text typed","No test")
    ;on récupère l'index de l'élément sélectionné dans la liste 
    $index_list_box=_GUICtrlListBox_GetCurSel($List1)
    if $index_list_box=-1 Then Return MsgBox (16,"No line selected","You haven t selected any line ...")
    ;tout est ok, on met à our la liste, je te laisse la partie update de l'ini ^^

    $verif=_GUICtrlListBox_ReplaceString($List1, $index_list_box, $text_input)
    If $verif=False Then Return MsgBox(16,"Problem","can't update the current list with following arg:"&@CRLF&$text_input&@CRLF&$index_list_box)
    ;todo : update de l'ini
EndFunc

;_GUICtrlListBox_SetItemData($hWnd, $iIndex, $iValue)
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..]Liste avec changement simultané

#3

Message par timmalos »

je vais regarder ce soir merci de la réponse, si qqun a une autre soloution n'hesitez pas.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Liste avec changement simultané

#4

Message par timmalos »

Ca marche parfaitement merci bien
Répondre