[R] Insertion de controles dans une listview
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] Insertion de controles dans une listview
Bonjour à tous ,
J'aimerais pouvoir associer une progress bar ou un bouton à une colonne/ligne spécifique d'une listview et qu'elle réagisse avec(si on change la taille les controles suivent , si on supprime la ligne ils sont supprimés également etc ..)
Pour l'instant je ne fais que superposer mes controles par dessus ce qui n'est pas pratique ni souple les controles disparaissant quand je clic.
Peut être y a t-il plus simple comme passer par un tableau pour rentrer les controles en fonction de la ligne / colonne puis l'afficher ??
Merci d'avance
J'aimerais pouvoir associer une progress bar ou un bouton à une colonne/ligne spécifique d'une listview et qu'elle réagisse avec(si on change la taille les controles suivent , si on supprime la ligne ils sont supprimés également etc ..)
Pour l'instant je ne fais que superposer mes controles par dessus ce qui n'est pas pratique ni souple les controles disparaissant quand je clic.
Peut être y a t-il plus simple comme passer par un tableau pour rentrer les controles en fonction de la ligne / colonne puis l'afficher ??
Merci d'avance
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
Utilisez Koda (C:\Program Files\AutoIt3\SciTE\Koda\Koda) si vous avez installé Scite4AutoIt pour voir les propriétés avancées d'un ListView.
Par défaut le bouton de la colonne peut servir.
Sinon il est possible de rajouter des ChekBoxs, ou des icônes sur les lignes du ListView.
Par défaut le bouton de la colonne peut servir.
Sinon il est possible de rajouter des ChekBoxs, ou des icônes sur les lignes du ListView.
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é".
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é".
Re: [...] Insertion de controles dans une listview
J'ai essayé tout ça je ne suis pas beaucoup plus avancé.
J'ai essayé de créer ma progress bar en même temps que je creer l'objet de la listview. Au lieu de simplement afficher la barre il rajoute un label de l'ID de cette progress bar dans une colonne et je n'ai par la suite aucun moyen de modifier ce nouveau controle ..
Peut être que les listview ne sont pas faites pour ça ?
Est ce qu'il est possible d'y arriver en affichant un tableau directement sur la fenêtre GUI au lieu d'afficher une listview ?
Ou par une autre astuce peut être ... ?
J'ai essayé de créer ma progress bar en même temps que je creer l'objet de la listview. Au lieu de simplement afficher la barre il rajoute un label de l'ID de cette progress bar dans une colonne et je n'ai par la suite aucun moyen de modifier ce nouveau controle ..
Peut être que les listview ne sont pas faites pour ça ?
Est ce qu'il est possible d'y arriver en affichant un tableau directement sur la fenêtre GUI au lieu d'afficher une listview ?
Ou par une autre astuce peut être ... ?
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
J'avoue avoir un peut de mal à comprendre ce que vous voulez exactement.
Et sans code pour essayer, difficile de vous aider plus.
Et sans code pour essayer, difficile de vous aider plus.
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é".
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é".
Re: [...] Insertion de controles dans une listview
Effectivement un peu de code ne ferait pas de mal , ainsi que quelques explications.
Je mettrais dans un tableau un nombre aléatoire de noms de fichiers , puis je créerais une ligne sur la list view par fichier dans le tableau.
Chaque ligne comprendra une progress bar dans la deuxieme colonne.
Je cherche un moyen de controler ces progress bar facilement , proprement et efficassement.
Dans la première ligne je superpose une progress bar , sur la troisieme ligne je la créer au moment de créer l'objet de la list view.
Dans les deux cas il y a pas mal de problèmes qui sautent aux yeux ...
A part ça j'ai plusieurs questions
1) Si on clic sur la checkbox ou sur la premiere colonne d'une ligne ça efface tout controle à la ligne sélectionnée , y'a t il un moyen d'éviter ça ?
Y'a t il un mode pour désactiver la sélection des cellules de la list view ? Qu'il ne selectionne même pas le texte quand on clique dessus.
2) Peut on augmenter la hauteur des lignes dans une list view sans modifier la taille d'écriture des mots?
3) Peut on créer un lien hypertexte(à la place de mon bouton annuler par exemple) ?
En ésperant avoir été plus clair merci d'avance
Je mettrais dans un tableau un nombre aléatoire de noms de fichiers , puis je créerais une ligne sur la list view par fichier dans le tableau.
Chaque ligne comprendra une progress bar dans la deuxieme colonne.
Je cherche un moyen de controler ces progress bar facilement , proprement et efficassement.
Code : Tout sélectionner
#include <GUIConstants.au3>
guicreate("Test listview",600,600)
GUICtrlCreateProgress(229,106,110,16)
$listView=GUICtrlCreateListView(" | ",75,100,460,230,$LVS_NOCOLUMNHEADER,BitOR($WS_EX_CLIENTEDGE,$LVS_EX_CHECKBOXES,$LVS_EX_GRIDLINES))
$objet1=GUICtrlCreateListViewItem("personal.pst",$listView) ;1ere ligne
GUICtrlCreateButton("Annuler",400,138,80,20)
$objet2=GUICtrlCreateListViewItem("",$listView)
$objet3=GUICtrlCreateListViewItem("archive2007.pst |"&GUICtrlCreateProgress(229,139,110,16),$listView) ;3eme ligne
GUISetState()
Do
$msg=GUIGetMsg()
Until $msg=$gui_event_close
Dans la première ligne je superpose une progress bar , sur la troisieme ligne je la créer au moment de créer l'objet de la list view.
Dans les deux cas il y a pas mal de problèmes qui sautent aux yeux ...
A part ça j'ai plusieurs questions

1) Si on clic sur la checkbox ou sur la premiere colonne d'une ligne ça efface tout controle à la ligne sélectionnée , y'a t il un moyen d'éviter ça ?
Y'a t il un mode pour désactiver la sélection des cellules de la list view ? Qu'il ne selectionne même pas le texte quand on clique dessus.
2) Peut on augmenter la hauteur des lignes dans une list view sans modifier la taille d'écriture des mots?
3) Peut on créer un lien hypertexte(à la place de mon bouton annuler par exemple) ?
En ésperant avoir été plus clair merci d'avance

- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
Est-ce donc ce que vous recherchez :
Pour les autres questions, merci de créer d'autres posts.
Merci
Code : Tout sélectionner
#include <GUIConstants.au3>
Dim $i, $j
guicreate("Test listview",600,400)
$progressbar1 = GUICtrlCreateProgress(229,106,110,16)
$listView=GUICtrlCreateListView(" | ",75,100,460,230,$LVS_NOCOLUMNHEADER,BitOR($WS_EX_CLIENTEDGE,$LVS_EX_CHECKBOXES,$LVS_EX_GRIDLINES))
$objet1=GUICtrlCreateListViewItem("personal.pst",$listView) ;1ere ligne
$objet2=GUICtrlCreateListViewItem("",$listView)
$objet3=GUICtrlCreateListViewItem("archive2007.pst |",$listView) ;3eme ligne
$progressbar2 = GUICtrlCreateProgress(229,139,110,16)
$Annul = GUICtrlCreateButton("Annuler",540,138,50,20)
GUISetState()
Do
$msg=GUIGetMsg()
$i = $i + 1
$j = $j + 3
GUICtrlSetData ($progressbar1,$i)
GUICtrlSetData ($progressbar2,$j)
If $i = 100 then $i = 0
If $j >= 98 Then $j = 0
Sleep (5)
Until $msg = $gui_event_close or $msg = $Annul
Merci
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é".
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é".
Re: [...] Insertion de controles dans une listview
Pas exactement le bouton annuler est hors de la listview or je cherche un moyen d'associer un contrôle par colonne et d'en garder l'affichage même quand il est inactif.
En modifiant la position du bouton annuler comme je souhaite(voir code) il est impossible de cliquer dessus.
Je cherche maintenant un moyen de contourner ce problème en remplacer le bouton par un lien hypertexte par exemple.
Dans votre code les progressbar sont régulièrement mise à jour et réapparaissent donc au premier plan ce qui évite le problème,je pense que je vais adopter cette solution(rafraîchir constamment les progressbar).
J'essaye d'obtenir une interface précise désolé de pinailler
En modifiant la position du bouton annuler comme je souhaite(voir code) il est impossible de cliquer dessus.
Je cherche maintenant un moyen de contourner ce problème en remplacer le bouton par un lien hypertexte par exemple.
Code : Tout sélectionner
#include <GUIConstants.au3>
Dim $i, $j
guicreate("Test listview",600,400)
$progressbar1 = GUICtrlCreateProgress(229,106,110,16)
$listView=GUICtrlCreateListView(" | ",75,100,460,230,$LVS_NOCOLUMNHEADER,BitOR($WS_EX_CLIENTEDGE,$LVS_EX_CHECKBOXES,$LVS_EX_GRIDLINES))
$objet1=GUICtrlCreateListViewItem("personal.pst",$listView) ;1ere ligne
$objet2=GUICtrlCreateListViewItem("",$listView)
$objet3=GUICtrlCreateListViewItem("archive2007.pst |",$listView) ;3eme ligne
$progressbar2 = GUICtrlCreateProgress(229,139,110,16)
$Annul = GUICtrlCreateButton("Annuler",420,138,50,20) ;position du bouton annuler sur la 3eme colonne ==> clic dessus impossible
GUISetState()
Do
$msg=GUIGetMsg()
$i = $i + 1
$j = $j + 3
GUICtrlSetData ($progressbar1,$i)
GUICtrlSetData ($progressbar2,$j)
If $i = 100 then $i = 0
If $j >= 98 Then $j = 0
Sleep (5)
Until $msg = $gui_event_close or $msg = $Annul
J'essaye d'obtenir une interface précise désolé de pinailler

- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
En ce qui concerne la mise en place d'un contrôle bouton dans un ListView, à ma connaissance ce n'est pas possible avec AutoIt (Mais je suis très loin de tout connaître et il y à peut être une solution que je ne connais pas).
A titre personnel, je ne trouve pas ça forcément esthétique, et ne vois en quoi le fait d'avoir les boutons à droite du ListView vous dérange.
Mais comme ont le dit : "Les goûts et les couleurs ..."
A titre personnel, je ne trouve pas ça forcément esthétique, et ne vois en quoi le fait d'avoir les boutons à droite du ListView vous dérange.
Mais comme ont le dit : "Les goûts et les couleurs ..."

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é".
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é".
Re: [...] Insertion de controles dans une listview
Solution trouvée 

- Fichiers joints
-
Ex_ListView_Progress.au3
- Un exemple : ...
- (2.89 Kio) Téléchargé 221 fois
-
ListView_Progress.au3
- Il faut utiliser cet include
- (7.76 Kio) Téléchargé 246 fois
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
Pour les progress bar oui, mais si vous déplacez la GUI, elles se figent aussi. 
Et le bouton associé à une colonne ? Je ne l'ai pas vu !

Et le bouton associé à une colonne ? Je ne l'ai pas vu !

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é".
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é".
Re: [...] Insertion de controles dans une listview
Effectivement mais si on redimensionne la fenêtre les progress bar étant intégrées sont bien cachées 
Mais je suis d'accord ça ne répond que partiellement au problème.
Autre question même sujet , avec l'UDF ListView_Progress.au3 postée plus haut existe-t-il un moyen de cacher / supprimer / modifier la position des progress bar?
En effet pour le logiciel de copie que je fais j'ai besoin d'en créer beaucoup et après 8-10 l'exécution est très ralentie ...
J'aimerais donc avoir le même résultat qu'avec Ex_ListView_Progress.au3 mais n'avoir qu'une bar de progression dont je changerais l'emplacement en fonction du fichier en cours de copie.
Est-ce clair ?
Merci 

Mais je suis d'accord ça ne répond que partiellement au problème.
Autre question même sujet , avec l'UDF ListView_Progress.au3 postée plus haut existe-t-il un moyen de cacher / supprimer / modifier la position des progress bar?
En effet pour le logiciel de copie que je fais j'ai besoin d'en créer beaucoup et après 8-10 l'exécution est très ralentie ...
J'aimerais donc avoir le même résultat qu'avec Ex_ListView_Progress.au3 mais n'avoir qu'une bar de progression dont je changerais l'emplacement en fonction du fichier en cours de copie.
Est-ce clair ?


- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [...] Insertion de controles dans une listview
En lisant le code de ListView_Progress.au3 je dirait oui.olaiv a écrit :Autre question même sujet , avec l'UDF ListView_Progress.au3 postée plus haut existe-t-il un moyen de cacher / supprimer / modifier la position des progress bar?
Regardez la description de la fonction dans le fichier.
$sItemIndex et $sSubItemIndex vous permettrons de déterminer la position dans le tableau.
Quant à supprimer ou cacher la progressBar, étant donné qu'il s'agit d'un contrôle, vous pouvez en faire ce que vous voulez ...
Créez une seule ProgressBar et lorsqu'elle à fini, détruisez là (GUICtrlDelete devrait fonctionner) puis recréez en une à des coordonnée différentes ($sItemIndex et $sSubItemIndex).olaiv a écrit :J'aimerais donc avoir le même résultat qu'avec Ex_ListView_Progress.au3 mais n'avoir qu'une bar de progression dont je changerais l'emplacement en fonction du fichier en cours de copie.
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é".
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é".
Re: [...] Insertion de controles dans une listview
Après étude en détail la progress bar étant créee avec _WinAPI_CreateWindowEx j'ai utilisé _WinAPI_DestroyWindow pour supprimer le control , les fonctions s'appliquant aux GUI ne fonctionnant pas dessus
Je vais donc comme conseillé la supprimer / recréer à volonté

Je vais donc comme conseillé la supprimer / recréer à volonté

Re: [R] Insertion de controles dans une listview
Argh problème.
L'UDF que j'ai posté est pratique mais consomme énormement et plus on en créer plus l'application tourne lentement.
J'aimerais réussir à
-Soit changer la position de la progressBar en modifiant l'index.Il me semblait au début que la fonction _MoveProgress de l'include permettait de le faire mais en fait non , ou alors je m'en suis mal servi.
-Soit en utilisant comme je le disais _WinAPI_DestroyWindow et en supprimant correctement la progressbar apparement cela ne suffit pas.J'ai vu dans l'include qu'il utilise des dll pour la création c'est peut être ça je ne sais pas.
L'UDF que j'ai posté est pratique mais consomme énormement et plus on en créer plus l'application tourne lentement.
J'aimerais réussir à
-Soit changer la position de la progressBar en modifiant l'index.Il me semblait au début que la fonction _MoveProgress de l'include permettait de le faire mais en fait non , ou alors je m'en suis mal servi.
-Soit en utilisant comme je le disais _WinAPI_DestroyWindow et en supprimant correctement la progressbar apparement cela ne suffit pas.J'ai vu dans l'include qu'il utilise des dll pour la création c'est peut être ça je ne sais pas.