[R] Modernisation d'Autoit (nouvelle listview)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

[R] Modernisation d'Autoit (nouvelle listview)

#1

Message par Ks10 »

Bonjour le peuple !

Pour moi autoit est devenu indispensable et je trouverais sa génial de le modernisé et plus particulièrement notre fameuse listview qui nous rend de grand service :')
Actuellement on dispose de la fonction "GUICtrlCreateListView" , elle est performante mais je la trouve pas adapter à différent design et trop "ancien"

J'ai essayer de trouver cette fonction pour voir comment il fonctionne mais je n'est pas trouver.
J'aimerais pouvoir réaliser une listview comme sur cette image.

Pouvez-vous m'expliquer ce que je dois savoir afin de pouvoir réaliser un truc similaire ? (Les colonnes et les lignes doivent être modulable comme la listview normal et pourquoi pas les couleurs également sa peut être sympa :) )
Le but est de faire participer tout le monde afin d'obtenir un résultat agréable et utilisable par tous, n'hésitez pas à faire part de vos idées.

Merci à tous :)
Fichiers joints
listview.png
listview.png (68.71 Kio) Vu 4227 fois
Modifié en dernier par Ks10 le sam. 15 nov. 2014 08:26, modifié 1 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: [..] Modernisation d'Autoit (nouvelle listview)

#2

Message par mikell »

Autoit propose la lisview Windows de base, ce que tu veux c'est de la personnalisation
Pour ça il faut jouer avec les styles et les diverses fonctions disponibles _GUICtrlListView*
Par exemple :
► 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
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#3

Message par Ks10 »

J'ai testé le code mais cela ne me correspond pas, je trouve le code beaucoup trop compliqué juste pour changer la couleur de la première ligne. Même en décortiquant le code et en essayant de refaire à côté je n'arrive pas à obtenir le résultat.

Il n'y pas un moyen de crée une listview fait "maison" ? Avec un code "buvable" ? x)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#4

Message par mikell »

"juste pour changer la couleur de la première ligne" ne correspond pas tout à fait à l'ensemble des exigences que sous-entendent l'image postée dans ton message précédent et le fait de vouloir "réaliser un truc similaire" :roll:
Tu devrais reformuler ta question de manière plus précise
" 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
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#5

Message par orax »

Pour la couleur uniquement il y a des exemples ici : http://www.autoitscript.com/forum/topic ... alternate/
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#6

Message par Ks10 »

mikell a écrit :"juste pour changer la couleur de la première ligne" ne correspond pas tout à fait à l'ensemble des exigences que sous-entendent l'image postée dans ton message précédent et le fait de vouloir "réaliser un truc similaire" :roll:
Tu devrais reformuler ta question de manière plus précise
Non j'ai bien formuler ma question mais changer la couleur de la première ligne était un exemple.
Je veux effectivement customisé le tout.

@ORAX :

Ce que tu propose est intéressant je suis preneur :)
Après si tu a une solution pour coloriser la première ligne tout en haut je veux bien également.
Plus précisément cette ligne :

Code : Tout sélectionner

GUICtrlCreateListView("Name|Age|Sex", 10, 10, 350, 250)

EDIT :

Alors voila, une alternative qui me convient, en reprenant un peu le code de Mikell et celui d'Orax :
► Afficher le texte
Si on pourrait trouver comment changer la couleur de la ligne grise à volonté sa serait parfait.
Les icônes dans la listview sont un plus mais cette façon me convient également.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#7

Message par TommyDDR »

Code : Tout sélectionner

;subclass ListView to get at NM_CUSTOMDRAW notification sent to ListView
Global $wProcNew = DllCallbackRegister("_LVWndProc", "ptr", "hwnd;uint;wparam;lparam")
Global $wProcOld = _WinAPI_SetWindowLong($hListView, $GWL_WNDPROC, DllCallbackGetPtr($wProcNew))
Cette partie de code ne vous sert à rien, vous n'avez pas créé de fonction associée.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#8

Message par Ks10 »

Oui j'ai oublié de l'enlever.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#9

Message par jguinch »

Nativement, AutoIt ne permet pas de créer des contrôles ou GUI avec un look différent de celui de base.
Regarde sur le forum US, il y a des UDF sympa pour gérer les skins :
- _UskinLibrary.au3
- XSkin.au3
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#10

Message par mikell »

Oui m'enfin bon, si on veut customiser on peut quand même le faire sans udf externes, quitte à accepter quelques minimes "complications" :mrgreen:
Tiens voilà un exemple qui pique moins les yeux
► 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
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#11

Message par yohan8 »

Pour rajouter mon grains de sel je trouve qu'autoit n'est pas un langage axée sur le développement d'interfaces "moderne" mais d'avantage sur sa facilité à effectuer des tâches avec un minimum de code.

Pour mes quelques interfaces "soignées" je me suis toujours dépatouillé à créer des images de gouts puis de les inclure dans ma GUI avec un système d’événement lors du survole et du clic.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#12

Message par mikell »

...ce qui correspond à peu près au fonctionnement des udfs mentionnées par jguinch :mrgreen:
" 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
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#13

Message par TomAijerrie »

A mes yeux, Autoit est plus un outil pour permettre de compléter Windows, utilisant à peu pres les mêmes fonctions de base que Microsoft et ses développeurs.
Pour changer l’apparence des contrôles sans utiliser de fonctions complexes, il est toujours possible de changer les styles visuels de base (panneau de configuration...)(bonne chance).
Cependant le résultat ne sera pas celui demandé dans le premier message.(mais c'est un début).

Quel est le problème des UDF externes ?
C'est parce qu'ils viennent de l’extérieur ou parce que ce sont des UDF ?

Il est possible de créer son propre UDF pour faire une listview, avec moins d'options que les vraies mais conçues pour nos besoins (on est jamais mieux servis que par soi-même).
En oubliant totalement les fonctions de listview, il est possible de créer avec des boucles un label par ligne pour le fond,
un ou plusieurs autre pour du texte (transparent ou non), et éventuellement des icônes ou images.
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#14

Message par Ks10 »

@Mikell :
Tout d'abord merci, pour avoir remodifier le code :)
Cette exemple est mieux ^^
Y a t-il vraiment aucune solution pour modifier la bande grise ? une piste ?
yohan8 a écrit :Pour rajouter mon grains de sel je trouve qu'autoit n'est pas un langage axée sur le développement d'interfaces "moderne" mais d'avantage sur sa facilité à effectuer des tâches avec un minimum de code.

Pour mes quelques interfaces "soignées" je me suis toujours dépatouillé à créer des images de gouts puis de les inclure dans ma GUI avec un système d’événement lors du survole et du clic.
Je ne suis pas d'accord :)
Je trouve que vu les capacités d'autoit, le développement d'interfaces "moderne" est possible. Nous n'avons juste pas "encore" les compétences requises pour pouvoir en faire ce qu'on veux totalement.
En ce qui concerne les interfaces soignés j'utilise également des images.
Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#15

Message par TomAijerrie »

Le développement d'interfaces modernes est possibles, mais la taille de nos codes est conséquente.
On ne peut pas avoir une interface parfaite avec un minimum de code.
Cela devient encore plus vrai quand on veut des bord et des angles bien arrondis,de jolis dégradés etc.

La solution que j'ai trouvé pour l'instant est de faire une multitude de labels ou de passer par GDI+ avec des images qui ne s'affichent pas toujours. Je ne sais pas si c'est ce qui te convient.
Avatar du membre
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#16

Message par Ks10 »

Sans voir le résultat je ne peux pas avoir d'appriorie dessus.
Mais on va dire que si j'ai lancer ce sujet c'est pour avoir différente façon de procéder, voir comment les autres fonctionne et quelles méthode ils emploie. Dans le cas présent on parle de la listview et pas vraiment d'interface moderne général.
Avatar du membre
yohan8
Niveau 6
Niveau 6
Messages : 245
Enregistré le : mer. 07 déc. 2011 22:34
Localisation : Rhône
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#17

Message par yohan8 »

Ks10 a écrit :Je ne suis pas d'accord :)
Je trouve que vu les capacités d'autoit, le développement d'interfaces "moderne" est possible. Nous n'avons juste pas "encore" les compétences requises pour pouvoir en faire ce qu'on veux totalement.
En ce qui concerne les interfaces soignés j'utilise également des images.
Bien sur que c'est possible mais ce n'est pas facile, pas aussi facile qu'automatiser certaine tâche. :)
On peut dire qu'autoit évolue en intégrant de plus en plus d'udf de création graphique plus ou moins simplifié.
mikell a écrit :...ce qui correspond à peu près au fonctionnement des udfs mentionnées par jguinch :mrgreen:
Je ne pensais pas que les interfaces d'exemple résultait d'un jeux d'image :mrgreen: Très sympa :)


Sinon j'avais mis de coté un script permettant de changer la couleur des bords d'un GUICtrlCreateGroup :
► Afficher le texte
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#18

Message par jguinch »

Ah oui, le _GUICtrlCreateGroup de Guiness... (http://www.autoitscript.com/forum/topic ... eategroup/)
J'avais un peu bricolé le truc pour un autre post : http://www.autoitscript.fr/forum/viewto ... 575#p84575
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#19

Message par mikell »

Ks10 a écrit :Y a t-il vraiment aucune solution pour modifier la bande grise ? une piste ?
Si par "bande grise" tu veux dire le header, il me semble que mon code donne la solution...

Maintenant faut être clair : Autoit exploite les fonctions de base de Windows, donc la listview est la listview de base proposée et assemblée par Windows
Pour la customiser il faut la décortiquer et utiliser d'autres fonctions Windows pour la reconfigurer et c'est pas toujours simple, mais t'as pas le choix. Autoit te facilite la tâche en permettant une manipulation plus conviviale de ces fonctions mais fatalement ça fera du code ^^

Ou alors comme TomAijerrie tu te fabriques ton propre controle, ce qui n'est pas une mauvaise idée et a déjà été essayé par exemple ici

Ou encore tu fais comme yohan, l'esthétique sera au rendez-vous mais viens pas râler après parce que le code est compliqué :mrgreen:
" 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
Ks10
Niveau 6
Niveau 6
Messages : 282
Enregistré le : mer. 25 avr. 2012 20:38
Status : Hors ligne

Re: [..] Modernisation d'Autoit (nouvelle listview)

#20

Message par Ks10 »

Voilà Mikell !
Tu a répondu totalement à ma question.

La solution qui a déjà était essayer avec l'UDF Table.au3 me convient totalement :P
Sujet résolu :)
Répondre