Page 1 sur 1

[R] Modernisation d'Autoit (nouvelle listview)

Posté : mar. 11 nov. 2014 13:53
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 :)

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

Posté : mar. 11 nov. 2014 18:29
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

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

Posté : mar. 11 nov. 2014 20:31
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)

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

Posté : mar. 11 nov. 2014 21:48
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

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

Posté : mar. 11 nov. 2014 23:17
par orax
Pour la couleur uniquement il y a des exemples ici : http://www.autoitscript.com/forum/topic ... alternate/

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

Posté : mer. 12 nov. 2014 08:17
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.

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

Posté : mer. 12 nov. 2014 10:30
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.

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

Posté : mer. 12 nov. 2014 10:37
par Ks10
Oui j'ai oublié de l'enlever.

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

Posté : mer. 12 nov. 2014 22:23
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

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

Posté : jeu. 13 nov. 2014 18:31
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

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

Posté : jeu. 13 nov. 2014 21:15
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.

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

Posté : jeu. 13 nov. 2014 21:49
par mikell
...ce qui correspond à peu près au fonctionnement des udfs mentionnées par jguinch :mrgreen:

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

Posté : ven. 14 nov. 2014 09:30
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.

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

Posté : ven. 14 nov. 2014 09:44
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.

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

Posté : ven. 14 nov. 2014 09:59
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.

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

Posté : ven. 14 nov. 2014 11:05
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.

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

Posté : ven. 14 nov. 2014 14:30
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

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

Posté : ven. 14 nov. 2014 14:57
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

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

Posté : ven. 14 nov. 2014 20:29
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:

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

Posté : sam. 15 nov. 2014 08:22
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 :)