FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Découpe dans une image
par JL35 Hier à 23:03

» FNC IsDateValide(d$) pour vérifier la validité d'une date
par Marc Hier à 21:51

» Pour faire plaisir à Marc37.
par Marc Hier à 21:46

» Couleur d'une variable qui n'est pas un mot-clé
par bignono Hier à 14:03

» Un catalogue de photos de fleurs, avec KBDD, affichage HTML
par Klaus Mer 21 Fév 2018 - 22:44

» KGF_dll - nouvelles versions
par Klaus Mer 21 Fév 2018 - 22:30

» Mah-Jong anglais
par jjn4 Mer 21 Fév 2018 - 14:22

» Partie fractionnaire d'un flottant
par silverman Mer 21 Fév 2018 - 14:19

» bug CREATE_HIDE : corruption de form
par silverman Mer 21 Fév 2018 - 13:32

» Racine carrée d’un nombre par l’algorithme de Héron
par Ouf_ca_passe Mer 21 Fév 2018 - 9:52

» Méthode manuelle d'extraction de la racine carrée
par pascal10000 Mer 21 Fév 2018 - 7:47

» [annulé]ON_MOVE n,l ne fonctionne que sur le form 0
par silverman Mar 20 Fév 2018 - 16:52

» Ludothèque Panoramic
par jjn4 Mar 20 Fév 2018 - 15:42

» Calculus
par Ouf_ca_passe Mar 20 Fév 2018 - 9:06

» 6 (en analyse):confusion de variable locale entre SUB et FNC
par Jack Mar 20 Fév 2018 - 8:18

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Février 2018
LunMarMerJeuVenSamDim
   1234
567891011
12131415161718
19202122232425
262728    
CalendrierCalendrier

Partagez | 
 

 Position de la souris sur un objet à travers d'autres objets

Aller en bas 
AuteurMessage
Klaus

avatar

Nombre de messages : 10575
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Position de la souris sur un objet à travers d'autres objets   Mer 12 Juil 2017 - 22:42

Les fonctions MOUSE_X_POSIITON(N) et MOUSE_Y_POSIITON(N) retournent la position de la souris, relative à l'objet N. Ca marche très bien.

Mais il y a un problème: si l'objet N est une form, un panel, un container etc, et si cet objet en contient d'autres (ce qui est en général le cas), cette fonction ne tient pas compte du déplacement de la souris tant que le curseur est dans un de ces objets, et ne réagit à nouveau que lorsque la souris survole le fond de l'objet N.

Ca peut être voulu, mais dans certains cas, on peut vouloir avoir les coordonnées du curseur, même si l'objet se trouve sur un des autres objets contenus dans la form, le container etc. La fonction GetMousePosition de KGF.dll fait ce travail.

Dans le petit code ci-dessous, une combo en haut à gauche permet de choisir le mode de détection "Panoramic" ou "KGF.dll", à tout moment. Puis,on peut observer le résultat dans la barre de titre du programme:
Code:
' SurveillerLaSouris.bas

label tick

dim x%, y%, res%

dll_on "KGF.dll"

combo 10 : width 10,150
  item_add 10,"Survol avec Panoramic"
  item_add 10,"Survol avec KGF.dll"
  item_select 10,1

memo 1 : top 1,30 : left 1,100
alpha 2 : top 2,150 : left 2,10 : caption 2,"Alpha 2"

timer 99 : timer_interval 99,100 : on_timer 99,tick

end

tick:
  if item_index(10)=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
  else
    res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  end_if
  caption 0,str$(x%)+","+str$(y%)
  return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5744
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Jeu 13 Juil 2017 - 3:26

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

Nombre de messages : 10575
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Jeu 13 Juil 2017 - 14:42

Avec la nouvelle version de KGF.dll (publiée il y a quelques minutes), le code devient plus simple, et on obtient, en-dehors du numéro Panoramic de l'objet survolé, également son type (en notation Delphi). Voici e code, avec un Picture à survoler en plus:
Code:
' SurveillerLaSouris.bas

label tick

dim x%, y%, res%,Numero%
dim txt$ : txt$ = string$(100," ")

dll_on "KGF.dll"

combo 10 : width 10,150
  item_add 10,"Survol avec Panoramic"
  item_add 10,"Survol avec KGF.dll"
  item_select 10,2

memo 1 : top 1,30 : left 1,100
alpha 2 : top 2,150 : left 2,10 : caption 2,"Alpha 2"
picture 3 : top 3,150 : left 3,200

res% = dll_call2("DeclarePanoramicObject",object_internal(10),10)
res% = dll_call2("DeclarePanoramicObject",object_internal(1),1)
res% = dll_call2("DeclarePanoramicObject",object_internal(2),2)
res% = dll_call2("DeclarePanoramicObject",object_internal(3),3)
res% = dll_call2("DeclarePanoramicObject",0,0)

timer 99 : timer_interval 99,100 : on_timer 99,tick

end

tick:
  if item_index(10)=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
  else
    res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  end_if
'  Numero% = dll_call2("FindPanoramicObject",x%,y%)
'  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)
  Numero% = dll_call3("FindPanoramicObject",x%,y%,adr(txt$))
  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)+" = "+trim$(txt$)
  return
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10575
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Jeu 13 Juil 2017 - 21:24

Et voici une version finale (recharger KGF.dll...) avec des containers, panels...:
Code:
' SurveillerLaSouris.bas

label tick

dim x%, y%, res%,Numero%
dim txt$ : txt$ = string$(100," ")

dll_on "KGF.dll"

combo 10 : width 10,150
  item_add 10,"Survol avec Panoramic"
  item_add 10,"Survol avec KGF.dll"
  item_select 10,2

memo 1 : top 1,30 : left 1,100
alpha 2 : top 2,150 : left 2,10 : caption 2,"Alpha 2"
picture 3 : top 3,150 : left 3,200

container 20 : top 20,100 : left 20,350 : width 20,200 : height 20,300
  caption 20,"Un container"
button 21 : parent 21,20 : top 21,20 : left 21,40
panel 30 : parent 30,20 : top 30,50 : left 30,20 : width 30,150 : height 30,200

check 31 : parent 31,30 : caption 31,"Check 31" : top 31,20 : left 31,10
check 32 : parent 32,30 : caption 32,"Check 32" : top 32,50 : left 32,10

res% = dll_call2("DeclarePanoramicObject",object_internal(10),10)
res% = dll_call2("DeclarePanoramicObject",object_internal(1),1)
res% = dll_call2("DeclarePanoramicObject",object_internal(2),2)
res% = dll_call2("DeclarePanoramicObject",object_internal(3),3)

    res% = dll_call2("DeclarePanoramicObject",object_internal(31),31)
    res% = dll_call2("DeclarePanoramicObject",object_internal(32),32)
    res% = dll_call2("DeclarePanoramicObject",object_internal(30),30)

  res% = dll_call2("DeclarePanoramicObject",object_internal(21),21)
  res% = dll_call2("DeclarePanoramicObject",object_internal(20),20)

res% = dll_call2("DeclarePanoramicObject",0,0)

timer 99 : timer_interval 99,100 : on_timer 99,tick

end

tick:
  if item_index(10)=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
  else
    res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  end_if
'  Numero% = dll_call2("FindPanoramicObject",x%,y%)
'  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)
  Numero% = dll_call3("FindPanoramicObject",x%,y%,adr(txt$))
  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)+" = "+trim$(txt$)
  return
 
Promenez le curseur sur la fenêtre et survolez les objets - la barre de titre va indiquer en permanence, non seulement les coordonnées, mais également le numéro de l'objet survolé et ton type !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8015
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 14 Juil 2017 - 20:16


scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10575
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Ven 14 Juil 2017 - 20:53

Eh bien, télécharge la bonne version de KGF.dll...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10575
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Ven 14 Juil 2017 - 20:55

Suite à l'information de Papydall, j'ai pu modifier mo programme de démo en gérant la form 0 comme n'importe quel autre objet:
Code:
' SurveillerLaSouris.bas

label tick

dim x%, y%, res%,Numero%
dim txt$ : txt$ = string$(100," ")

dll_on "KGF.dll"

combo 10 : width 10,150
  item_add 10,"Survol avec Panoramic"
  item_add 10,"Survol avec KGF.dll"
  item_select 10,2

memo 1 : top 1,30 : left 1,100
alpha 2 : top 2,150 : left 2,10 : caption 2,"Alpha 2"
picture 3 : top 3,150 : left 3,200

container 20 : top 20,100 : left 20,350 : width 20,200 : height 20,300
  caption 20,"Un container"
button 21 : parent 21,20 : top 21,20 : left 21,40
panel 30 : parent 30,20 : top 30,50 : left 30,20 : width 30,150 : height 30,200

check 31 : parent 31,30 : caption 31,"Check 31" : top 31,20 : left 31,10
check 32 : parent 32,30 : caption 32,"Check 32" : top 32,50 : left 32,10

res% = dll_call2("DeclarePanoramicObject",object_internal(10),10)
res% = dll_call2("DeclarePanoramicObject",object_internal(1),1)
res% = dll_call2("DeclarePanoramicObject",object_internal(2),2)
res% = dll_call2("DeclarePanoramicObject",object_internal(3),3)

    res% = dll_call2("DeclarePanoramicObject",object_internal(31),31)
    res% = dll_call2("DeclarePanoramicObject",object_internal(32),32)
    res% = dll_call2("DeclarePanoramicObject",object_internal(30),30)

  res% = dll_call2("DeclarePanoramicObject",object_internal(21),21)
  res% = dll_call2("DeclarePanoramicObject",object_internal(20),20)

res% = dll_call2("DeclarePanoramicObject",object_internal(0),0)

timer 99 : timer_interval 99,100 : on_timer 99,tick

end

tick:
  if item_index(10)=1
    x% = mouse_x_position(0)
    y% = mouse_y_position(0)
  else
    res% = dll_call3("GetMousePosition",handle(0),adr(x%),adr(y%))
  end_if
'  Numero% = dll_call2("FindPanoramicObject",x%,y%)
'  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)
  Numero% = dll_call3("FindPanoramicObject",x%,y%,adr(txt$))
  caption 0,str$(x%)+","+str$(y%)+"  objet "+str$(Numero%)+" = "+trim$(txt$)
  return
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   

Revenir en haut Aller en bas
 
Position de la souris sur un objet à travers d'autres objets
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Passer un objet devant les autres (ou derrière)
» Affichier une infobulle au pointage d'un contrôle
» Position de la souris.
» Faire bouger un objet au passage de la souris [ RESOLU ]
» Modifier la position d'un objet

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: