[..] Changer l'apparrence d'un label au survol de la souris

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

[..] Changer l'apparrence d'un label au survol de la souris

#1

Message par gotcho »

Bonjour,

comme je trouve les boutons très peu jolis, j'utilise des images et des labels pour les remplacer. Ensuite, avec un "Case $nomdumodule", je détecte le clic et lance les actions relatives.

Mais voilà, le fait que ça ne soit pas des boutons les rend peu visibles pour un clic.

Ma question est la suivante : comment détecter le survol souris au dessus d'un de ces objets, afin d'indiquer que le clic va entrainer une action en modifiant l'objet en question ?

PS: J'aimerais éviter les bidouilles de détection de la position de la souris par rapport au bouton...

Merci par avance !
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Changer l'apparrence d'un label au survol de la souris

#2

Message par sylvanie »

Bonsoir,
GUIGetCursorInfo sera la clé de voute :

Code : Tout sélectionner

#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$Button1 = GUICtrlCreateButton("Button1", 80, 56, 105, 57, 0)
$Button2 = GUICtrlCreateButton("Button2", 379, 124, 105, 57, 0)
$Button3 = GUICtrlCreateButton("Button3", 200, 220, 105, 57, 0)
$Button4 = GUICtrlCreateButton("Sortie", 455, 314, 105, 57, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
AdlibEnable("Detect_ctrl",500)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button4
            Exit
    EndSwitch
    
    Sleep(100)
WEnd


Func Detect_ctrl()
    Local $cursor_info,$id
    $cursor_info=GUIGetCursorInfo ()
    If @error Then Return
    
    $id=$cursor_info[4]
    If Not $id Then 
        ToolTip("")
        Return
    EndIf
    ToolTip ( GUICtrlRead($id)&" est survolé" , $cursor_info[0] , $cursor_info[1] , "Info" , 1)
EndFunc
 
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Changer l'apparrence d'un label au survol de la souris

#3

Message par gotcho »

Merci, cette solution marche bien !

Mais à tout hasard, n'en n'existerai pas une autre moins... gourmande qu'une fonction à répéter toutes les 500 ms ?

Merci par avance, sinon je ferai avec celle-ci
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

Re: [..] Changer l'apparrence d'un label au survol de la souris

#4

Message par ani »

oui y a bien une autre fonction (plutot un UDF spécialement créer pour le survol d'un control)
Fichiers joints
GuiCtrlSetOnHover.zip
UDF ControlID
(7.05 Kio) Téléchargé 526 fois
gotcho
Niveau 3
Niveau 3
Messages : 32
Enregistré le : sam. 06 sept. 2008 19:16
Status : Hors ligne

Re: [..] Changer l'apparrence d'un label au survol de la souris

#5

Message par gotcho »

Oooops je suis navré, aucun fichier ne marche, et j'ai un peu de mal à comprendre le fonctionnement de la chose...
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Changer l'apparrence d'un label au survol de la souris

#6

Message par sylvanie »

Elle est chouette cette udf, une grnade leçon sur les callbacks !
Sinon, les fichiers de démos passe bien chez moi ...

Pour le principe d'utilisation, après création d'un contrôle d'id : $ID, on lance un
GUICtrlSetOnHover($id, "Hover_Func", "Leave_Hover_Func")

avec Hover_Func, la fonction à lancer an cas de survol (à écrire soit même, ie je change la police, le texte, la taille ....)
et Leave_Hover_Func, la fonction à lancer lorsqu'on quitte la zone de survol (ie je restore l'état initial)

je suis admiratif ^^
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre