Gambas France BETA


Pas de compte ? Incription

récupérer le tracking sur control (en GB3)

1
AuteurMessages
LanoueC#1 Posté le 11/9/2010 à 23:05:00
bonne soirée à tous !

et bon anniversaire à François, parait il ! même si je ne sais qui est cette personne :cheers:

un petit soucis

for i = quelquechose to quelquechose

*==> Je place les newpictureBox sur le panel1, il y en a une vingtaine

Boite = New PictureBox(Panel1)
Boite.W = nombre
Boite.H = nombre
Boite.X = (i * nombre)
Boite.Y = (j * nombre)
next

*====> je voudrais récupérer l'évènement mouseMove sur ces boites : Impossible
j'ai bien essayé boite.tracking = true mais ce n'est pas ok

le panel1 est rempli par ces boites si bien que je n'ai plus le traking du panel1
j'aurais besoin du tracking sur ces boites

est ce possible?
et si oui comment

Merci
LanoueC
gambix#2 Posté le 11/9/2010 à 23:32:00
Faire simple !Boite.move(nombre,nombre, i * nombre, j * nombre)
boite|i].traking = true



Bon la c'est les boite qui on le traking... j'aimerais savoir pour quoi c'est faire ... je pourrait ainsi mieux te guider

Moins de texte dans une signature c'est agrandir son espace.
LanoueC#3 Posté le 11/9/2010 à 23:41:00
bonsoir

le but :

je remplit un panel de pictureBox (boite)
en fonction de la position de la souris sur le panel , donc sur les pictureBox, je change l'image du picture si la souris est à tel ou tel position

j'ai essayé boite.tracking = true mais c pas ok

je ne comprend pas ton Boite.move(nombre,nombre, i * nombre, j * nombre)?
gambix#4 Posté le 12/9/2010 à 00:19:00
Faire simple !
je ne comprend pas ton Boite.move(nombre,nombre, i * nombre, j * nombre)?
emplace tes 4 ligne de positionnement

Maintenant pour tes picturebox :)

for i...
Boite = new Picturebox as "MaBoite"
Boite.tag = i
Boite.move.....

next
'On est dans une boite
Public Sub Maboite_Enter()
'le select case est si tu veut utilisé une image spécifique pour chaque pb
Select case last.tag
case 1
Last.Picture =picture["monimagededans.png"]
case etc
end select

end


'on en sort
Public Sub Maboite_Leave()
'le select case est si tu veut utilisé une image spécifique pour chaque pb
Select case last.tag
case 1
Last.Picture =picture["monimageplusdedans.png"]
case etc
end select

end


c'est plus efficace qu'un traking !
Moins de texte dans une signature c'est agrandir son espace.
LanoueC#5 Posté le 12/9/2010 à 10:04:00
oui gambix ta méthode est bien pour changer le contenu de mes boites : Boite = New PictureBox(Panel1)

mais , je me suis mal expliquée : c'est l'utilisateur qui en cliquant avec la souris sélectionne les boites qu'il veut et donc en change son contenu

il sélection un checkbox correspondant à une image
puis il clic sur le panel contenant toutes les boites, là ou il a envie et la boite change de contenu..

d'ou ma nécessité de recevoir le tracking sur les boites
gambix#6 Posté le 12/9/2010 à 10:23:00
Faire simple !Alors c'est encore plus simple mdr
Private $hCurrentPicture as Picture

Public sub MaBoite_Click()


Last.Picture = $hCurrentPicture


End


Moins de texte dans une signature c'est agrandir son espace.
gambix#7 Posté le 12/9/2010 à 10:26:00
Faire simple !En faite je me rend compte que tu ne doit pas connaitre LAST ? c'est la cas ?


LAST retourne le'objet qui a généré l'evènement en cour ... en faite le dernier evènement ... ce qui peu mettre le bazard si jamais tu déclenche un event dans ces procedure ou si un timer intervien pendant la procedure .... Sinon c'est une solution géniale !
Moins de texte dans une signature c'est agrandir son espace.
LanoueC#8 Posté le 12/9/2010 à 10:39:00
Gambix oui je ne connais pas Last effectivement !!!!!!!!!

mais mon soucis est que maBoite ne récupere pas l'évènement mouseMove ou click!

j'ai DONC changé ma déclaration : boite = New PictureBox(Panel1) ======> : boite = New PictureBox(Panel1) As "receptionImage"

et j'ai appelé avec :
public_sub receptionImage_MouseMove
ou
public sub_receptionImage_click

et là OUI MAINTENANT mes boites ont le tracking ou le click



Merci Gambix

NOTA : Pourquoi dans GB3 quand j'ecris :
public sub receptionImage_MouseMove : rien n'est proposé comme évènement

ou bien boite.with : rien n'est proposé comme propriété, etc..

en fait rien n'apparait dans le menu contectuel automatique à la souris
gambix#9 Posté le 12/9/2010 à 11:01:00
Faire simple !La réponse est simple !

Quant tu dit Boite. en faite je suis certain que tu a dit :

Private Boite as New Object[]

Donc boite retourne un objet inconnu Null ... tu veux complèter avec quoi la ?


La completion pour les event est difficile elle aussi car comme il s'agit d'objet dynamiquement créé on ne peut pas savoir réellement avant l'exécution quel sera le contenu de Boite... mais la question mérite d'être posée ... A savoire stocker en mémoire toute déclaration Classe AS "Nom" pour pouvoir le restituer en completion.

En gambas 3 a présent dès que tu sais que les objet stocké dans un tableau seront d'un type donné uniquement , tu va préfèrer utiliser un tableau typé ... Toute classe peut servir de type a un tableau a présent ..


Dans ton cas


Private Boite as New PictureBox[]


Avec ça tu va réobtenir l'autocompletion ... normalement (et consommer moins de mémoire)



... je comfirme tu aura de l'autocompletion :)



Public sub ReceptionImage_Click()

Ne met pas d'underscore partout :)
Moins de texte dans une signature c'est agrandir son espace.
LanoueC#10 Posté le 12/9/2010 à 11:25:00
voilà ma déclaration : Public boite As New Object[nombre]

dans Form_open :

boite = New PictureBox(Panel1) As "receptionImage"

boite.W = nombre
boite.H = nombre
boite.Tracking = true
boite.Tag = i
etc....



appel pour évènement :
public sub receptionImage_MouseMove()
public sub receptionImage_Click()


je n'ai pas l'auto complétion !


AVEC : déclaration : Public boite As New PictureBox[nombre]

j'ai l'autocomplétion
je n'ai pas l'autocomplétion pour les évènement type public sub receptionImage_MouseMove()
gambix#11 Posté le 12/9/2010 à 11:33:00
Faire simple !
AVEC : déclaration : Public boite As New PictureBox[nombre]

j'ai l'autocomplétion mais sur des propriéts de tableau et non de pictureBox



PArce que tu fait :

'Boite.'
et pas
'Boite[nombre].'

Boite est effectivement un tableau

Boite[nombre] est un picturebox
Moins de texte dans une signature c'est agrandir son espace.
GarulfoUnix#12 Posté le 13/9/2010 à 10:42:00
By the wayl'IDE Gambas est vraiment bien fichue pour l'apprentissage et la productivité. :)
Pour les débutants il permet justement d'obtenir plus rapidement leurs réponses rien qu'en observant l'auto-complétion par exemple.
1