[..] Tableau dans GUI

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

[..] Tableau dans GUI

#1

Message par ricky »

Hello,

j'ai besoin de votre aide.

J'aimerais afficher un tableau deux dimensions dans une gui. Ensuite sélectionner une entrée et si je presse sur un bouton ça va supprimer cette entrée dans le tableau (donc avec décalage de tous les valeurs en dessous). Qqn aurait un peu de temps pour me montrer ça?

Le tableau contient 3 colonnes, mais il n'y a que les deux premières et avec des entêtes tout en haut.

Merci d'avance pour votre aide!
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] tableau dans gui

#2

Message par mikell »

Comme je ne sais pas exactement ce que tu veux dire par 'tableau 2 dimensions', voilà un script qui affiche un tableau 2D (array) dans un tableau (listview)
Les handles des items de listview sont définis dans une array, c'est plus simple à manipuler
► 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
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Tableau dans GUI

#3

Message par legend »

voici un exemple :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <Array.au3>
GUICreate ("lol")
dim $array[10][2] = [[1, 2], [2, 3], [3, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5]]
dim $array2[10][2]
for $i1 = 0 to UBound ($array) -1
    for $i2 = 0 to UBound ($array, 2) -1
        $array2[$i1][$i2] = GUICtrlCreateButton ($array[$i1][$i2], $i2 * 30, $i1 * 30, 30, 30)
    Next
Next
GUISetState ()
sleep (3000)
GUICtrlSetBkColor ($array2[4][1], 0x323323)
sleep (3000)
avec les évènement de gui et a partir de l'exemple tu pourra créer ce que tu veut.
si tu y arrive pas. je le ferais :mrgreen:
bonne journée.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#4

Message par mikell »

@legend
legend a écrit :voici un exemple ... etc
Ah bon ? et un exemple de quoi précisément ? Image
Tu as lu au moins ce qu'il demande ricky ?
"afficher un tableau deux dimensions dans une gui. Ensuite sélectionner une entrée et si je presse sur un bouton ça va supprimer cette entrée dans le tableau"
Alors c'est quoi ton machin qui ressemble à rien ?
legend a écrit :avec les évènement de gui et a partir de l'exemple tu pourra créer ce que tu veut.
Il pourra créer que dalle, oui ^^
Tu es sûr que tu t'es pas trompé de sujet ? ou de forum ? parce que ici c'est les demandes de scripts, et on est censé répondre avec un minimum d'exactitude et de précision au cahier des charges du demandeur...
" 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
legend
Niveau 7
Niveau 7
Messages : 472
Enregistré le : dim. 26 sept. 2010 12:55
Status : Hors ligne

Re: [..] Tableau dans GUI

#5

Message par legend »

en effet, j'avais compris qu'il voulait supprimer une case et non pas une ligne et cela n'est pas très pratique utilisant une listview. (j'ai mal interprété le règlement d'après ce qu'il parait :p)
sinon j'ai codé cela dans un projet ou j'avais besoin de colorer quelques cases :mrgreen:
je vais compléter le code pour te montrer ce que ça donne.

EDIT : code ajouté
► Afficher le texte
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#6

Message par ricky »

@legend : merci pour ton exemple, mais ça ne rentre pas dans ma demande. Car j'ai deux valeur à afficher.

@mikell : merci pour ton exemple, il marche super bien. Il manquait cette ligne _ArrayDelete($array, $index) pour que ça supprime aussi la ligne dans le tableau. Mais c'est parfait.

Je continue mes tests, c'est difficile d'en faire avec avec des cases à cocher et d'en supprimer plusieurs à la fois?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#7

Message par mikell »

Non pas difficile :wink:
► 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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#8

Message par ricky »

merci, mais il y a un petit soucis, si j'en sélectionne 2, ça marche pas à tous les coups.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#9

Message par mikell »

Hmpf 2 erreurs d'inattention Image
► 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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#10

Message par ricky »

Il y avait une petite erreur, dans la boucle For $index = $count si tu mets -1, ça va poser des problèmes.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#11

Message par mikell »

$count = 4
$ligne[4] n'existe pas
La boucle For doit aller pour l'index de 3 à 0 step -1
La preuve :

Code : Tout sélectionner

    $count = ControlListView($gui, "", $listview, "GetItemCount")
    For $index = $count To 0 step -1
      Msgbox(0,"", $ligne[$index])  [color=#FF0000]  ; <<<<<<<<<<[/color]
      If _GUICtrlListView_GetItemChecked($listview, $index) Then 
         GUICtrlDelete($ligne[$index])
            _ArrayDelete($ligne, $index)
            _ArrayDelete($array, $index)
    EndIf
    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 )
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#12

Message par ricky »

Ah oui, mais moi je commence à la ligne 1, c'est pour ça! Je n'ai pas le soucis.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#13

Message par mikell »

C'est une question de principe
" For $index = $count+17 To 0 step -1 " dans le script ça marche aussi :roll:
" 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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#14

Message par ricky »

J'aimerais utiliser la de surligner chaque ligne différemment avec ceci : $GUI_BKCOLOR_LV_ALTERNATE

Mais comment le configure, je comprends pas!!!
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#15

Message par mikell »

► 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
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#16

Message par ricky »

Ca marche bien.

Comment dois-je faire pour vider le treeview? En pressant par exemple sur un bouton, je le vide.

Merci d'avance pour votre aide
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#17

Message par mikell »

Toujours avec le même type de code

Code : Tout sélectionner

Case $viretout_btn
    $count = ControlListView($gui, "", $listview, "GetItemCount")
    For $index = $count-1 To 0 step -1
          GUICtrlDelete($ligne[$index])
    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 )
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Tableau dans GUI

#18

Message par ricky »

Effectivement, c'était simple.

J'y avais pas pensé. Je cherche trop loin.

Encore une petite question, est-il possible que sur une longue liste on dise au programme de descendre l'ascenseur pour que la dernière entrée soit visible?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Tableau dans GUI

#19

Message par mikell »

Pas testé mais ça devrait marcher ^^

Code : Tout sélectionner

$count = ControlListView($gui, "", $listview, "GetItemCount")
GUICtrlSendMsg($listview, $LVM_SCROLL, 0, $count*16)
" 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