Gambas France BETA


Pas de compte ? Incription

Label et evenement mouse_move

12
AuteurMessages
Invité#1 Posté le 23/3/2010 à 22:25:00
Bonsoir

afin de faire apparaitre un text au passage de la souris, je me suis servi de label1_mousemove()

par défaut le label est visible mais transparent

avec l'évènement mousemove : au passage de la souris sur le label, celui ci passe de transparent=true à transparent= false

Mais j'ai un soucis : cet évènement ne fonctionne que si le label a une propriété border différente de none,
Hors j'ai besoin de border=none!

J'ai pensé a utiliser a la place visible=false puis visible= true mais dans ce cas l'évènemnt mousemove ne se déclenche pas au passage de la souris!
micio#2 Posté le 24/3/2010 à 10:06:00
Voici une possibilité :

Dans l'IDE, mettre le label dans un panel
---------------------------------------------------

PUBLIC SUB Form_Open()
END

PUBLIC SUB Panel1_Enter()
Label1.Visible = TRUE
Label1.text = "coucou"
END

PUBLIC SUB Panel1_Leave()
Label1.Visible = FALSE
END
Invité#3 Posté le 24/3/2010 à 13:51:00
oui Micio, mais cela ne resoud pas la solution puisque dans ta proposition ce sera le panel qu'y sera visible au lieu du label

j'ai besoin que rien ne soit visible ni panel, ni label
uniquement au passage de la souris avec entrer ou mousemove
et le panel ne dispose pas de propriété transparent !
jeanyvon#4 Posté le 24/3/2010 à 14:21:00
Gambas? Ma! Et gustoSalut,
je n'ai pas essayé mais....
Public sub maform_mousemove()
if mouse.x> label1.x and mouse.x < label1.x +label1.h and mouse.y < label1.y and mouse.y > label1.y +label1.w then
label1.visible = true
label1.text = "coucou"
else
label1.visible =false
endif
end

En fait je détermine sur la form la position et la dimention du label et je déclanche ce que je veux.
Vérifie l'ordre et les grandeurs mais en principe...
A+
JY
Vieillir? On peut retarder mais pas y échapper!
Invité#5 Posté le 24/3/2010 à 14:23:00
j'ai essayé de résoudre avec un tooltip Mais le tooltip ne fonctionne que si une bordure existe !!!!!!???
quelle solution peut il y avoir

tout en sachant que :

je suis sur une draw , et je veux que sur certaines surfaces de cette draw appraissent des indications au passage de la souris . C'est pour cela que j'avais mi un label transparent. Mais ce label n'est réellement transparent que s'il n'a pas de bordure. Mais sans bordure l'evenement enter ne fonctionne pas , ni meme, tooltip
Invité#6 Posté le 24/3/2010 à 14:24:00
Merci Jean-Yvon, je pense que tu es dans le bon
je pars au boulot j'essai quand je rentre
jeanyvon#7 Posté le 24/3/2010 à 16:21:00
Gambas? Ma! Et gustoessaie plutôt ça, ça marche

PUBLIC SUB Form_MouseMove()'c'est bien form et non maform!
'Les chiffres sont la position souhaité du label
'Attention l'évenement mousemove n'est déclanché qu'a partir de mousedown
IF Mouse.x > 518 THEN
IF Mouse.x < 518 + 119 THEN
IF Mouse.y > 175 THEN
IF Mouse.y < 175 + 40 THEN
Label1.x = Mouse.X
Label1.y = Mouse.Y
Label1.visible = TRUE
Label1.Text = "coucou"
ENDIF
ENDIF
ENDIF
ENDIF
END
PUBLIC SUB Form_MouseUp()

Label1.x = 1200 'en dehors de la form
Label1.y = 1200
Label1.visible = FALSE
Label1.Text = ""

END

A+
JY
Vieillir? On peut retarder mais pas y échapper!
spheris#8 Posté le 24/3/2010 à 16:27:00
JY,
effectivement cela marche mais pas besoin d'autant de condition IF.
Un simple :

PUBLIC SUB Form_MouseMove() 'c'est bien form et non maform!
'Les chiffres sont la position souhaité du label
'Attention l'évenement mousemove n'est déclanché qu'a partir de mousedown
IF Mouse.Left THEN
Label1.x = Mouse.X
Label1.y = Mouse.Y
Label1.visible = TRUE
Label1.Text = "coucou"
ELSE
ENDIF

suffit amplement et allège le code.
;)
jeanyvon#9 Posté le 24/3/2010 à 16:34:00
Gambas? Ma! Et gustoHello Spheris!
Je crois qu'il veut faire apparaitre son label à un endroit défini du coup tu es bien obligé de définir une zone et de la contrôler
Sinon
c'est toi qui a raison
(en voila une belle boucle de si) :lol!:
A+
JY
Vieillir? On peut retarder mais pas y échapper!
Invité#10 Posté le 24/3/2010 à 22:40:00
Merci a tous

oui le code de Jean-Yvon fonctionne bien

et oui j'avais besoin d'une surface sensible au passage du curseur !

Mais c'est dommage que le label ne soit pas réceptif à _enter et _leave si sa propriété bordure= none ! ça éviterait beaucoup de code
gambix#11 Posté le 26/3/2010 à 08:56:00
Faire simple !en faite la transparence est un bidouillage ... on perd donc la sensibilité du controle
Moins de texte dans une signature c'est agrandir son espace.
spheris#12 Posté le 27/3/2010 à 03:06:00
Et ce ...bidouillage.... sera t il sur tous les contrôles de GB3 ?
;)
gambix#13 Posté le 27/3/2010 à 19:42:00
Faire simple !non !
Moins de texte dans une signature c'est agrandir son espace.
spheris#14 Posté le 28/3/2010 à 18:57:00
Il le faudrait au minimum sur les picturebox et les labels.
Car nos petites applications sont tristounettes avec le carre blanc autour de l'image...
et sans vouloir rentrer dans le detail, peut on savoir sur quel principe fonctionne ce bidouillage ?
Merci de ta reponse Gambix
;)
gambix#15 Posté le 28/3/2010 à 21:02:00
Faire simple !dans v3 drawing area a une propriete transparent
Moins de texte dans une signature c'est agrandir son espace.
12