FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» 2D_fill_color
Position de la souris sur un objet à travers d'autres objets Emptypar Marc Hier à 14:25

» Consommation gaz électricité
Position de la souris sur un objet à travers d'autres objets Emptypar leclode Mer 17 Avr 2024 - 11:07

» trop de fichiers en cours
Position de la souris sur un objet à travers d'autres objets Emptypar lepetitmarocain Mer 17 Avr 2024 - 10:19

» on_key_down (résolu)
Position de la souris sur un objet à travers d'autres objets Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Position de la souris sur un objet à travers d'autres objets Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

» Bataille-navale
Position de la souris sur un objet à travers d'autres objets Emptypar jjn4 Mer 3 Avr 2024 - 14:08

» Minimiser une fenêtre Panoramic.
Position de la souris sur un objet à travers d'autres objets Emptypar Pedro Mar 2 Avr 2024 - 13:50

» Récapitulatif ludothèque panoramic jjn4
Position de la souris sur un objet à travers d'autres objets Emptypar jjn4 Lun 1 Avr 2024 - 18:04

» demande explication KGF pour imprimer en mm
Position de la souris sur un objet à travers d'autres objets Emptypar JL35 Jeu 28 Mar 2024 - 17:28

» Petit passage furtif
Position de la souris sur un objet à travers d'autres objets Emptypar Froggy One Mer 27 Mar 2024 - 14:26

» SPIN et aide langage (résolu)
Position de la souris sur un objet à travers d'autres objets Emptypar leclode Sam 23 Mar 2024 - 15:20

» Aide-mémoire des mots-clés Panoramic
Position de la souris sur un objet à travers d'autres objets Emptypar papydall Mer 20 Mar 2024 - 21:23

» Je ne comprend pas pourquoi la largeur de la scene 3d change
Position de la souris sur un objet à travers d'autres objets Emptypar Marc Mar 12 Mar 2024 - 20:06

» Comment télécharger panoramic?
Position de la souris sur un objet à travers d'autres objets Emptypar lepetitmarocain Sam 9 Mar 2024 - 13:31

» @lepetitmarocain <==> KGFGrid
Position de la souris sur un objet à travers d'autres objets Emptypar Klaus Dim 3 Mar 2024 - 9:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment : -34%
-34% LG OLED55B3 – TV OLED 4K 55″ 2023 ...
Voir le deal
919 €

 

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

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyMer 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
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

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

Position de la souris sur un objet à travers d'autres objets Bravo10
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyJeu 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
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyJeu 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
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: re   Position de la souris sur un objet à travers d'autres objets EmptyVen 14 Juil 2017 - 20:16

Position de la souris sur un objet à travers d'autres objets Captur17
scratch
Revenir en haut Aller en bas
Klaus

Klaus


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

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

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

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 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
http://klauspanoramic.comxa.com/index.html
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 27 Avr 2018 - 19:41

Je fais remonter le post.
Je suis aussi pour une fonction qui permettrait de connaître la position de la souris sur le FORM en cours, indépendamment des objets affichés.
Revenir en haut Aller en bas
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 27 Avr 2018 - 20:54

Ca, je peux te le faire aisément par une fonction dans KGF.dll si cela t'intéresse... il suffira de fournir le handle de la form (ou de tout autre objet par rapport auquel tu voudrais avoir les coordonnées...) et je peux te fournir les coordonnées de la souris, relativement à cet objet.

En attendant, tu peux déjà le faire en Panoramic, en utilisant une fonction déjà existante dans KGF.dll:
la fonction
Code:
res% = dll_call2("GetAbsoluteMousePosition",adr(x%),adr(y%))
retourne les coordonnées "écran" du curseur. Il suffit d'en soustraire les valeurs de LEFT(0) et TOP(0), ainsi que les valeurs de la largeur de bordure pour la position horizontale et de la hauteur de la barre de titre pour la position verticale, et tu as la position que tu cherches.

Tout cela, c'est de l'arithmérique très siimple, et je peux le faire facilement dans KGF.dll. Au cas où tu chercherais à connaître la largeur de bordure et la hauteur de la barre de titre, sache que c'est simple:
puisque chaque fenêtre est entourée de 3 bordures identiques (gauche, bas et droite) et d'une bordure plus épaisse (haut), tu as les équations suivantes:
Code:
LeftBottomRightBorder% = (width(0)-width_client(0))/2
TopBorder% = height(0)-height_client(0)-LeftBottomRightBorder%

Ainsi, tu obtiens:
Code:
LocalCursorX% = AbsoluteCursorX - left(0) - LeftBottomRightBorder%
LocalCursorY% = AbsoluteCursorY% - top(0) - TopBorder%
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 27 Avr 2018 - 22:03

En fait, en relisant ma doc, je me suis rendu compte que cette fonction existe déjà:
Code:
res% = dll_call3("GetMousePosition",hnd%,adr(x%),adr(y%))
Elle retourne la position relative du curseur par rapport à l'objet désigné par son handle, même si en réalité, le curseur se trouve dans un autre objet, enfant de celui désigné par la handle (mémo dans une form, etc.)

Donc, inutile de se précipiter - ça existe dans KGF.dll.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 27 Avr 2018 - 22:36

Regarde ce que l'on peut faire, actuellement, avec KGF.dll:
Code:
 label tick
dim res%, x0%, y0%, x1%, y1%, x2%, y2%

top 0,200 : left 0,100
panel 1 : top 1,40 : left 1,30 : width 1,400 : height 1,300
memo 2 : parent 2,1 : top 2,30 : left 2,20

alpha 3 : top 3,400 : left 3,10

dll_on "KGF.dll"
timer 10 : timer_interval 10,100 : on_timer 10,tick

end

tick:
  timer_off 10
 
  res% = dll_call3("GetMousePosition",handle(0),adr(x0%),adr(y0%))
  res% = dll_call3("GetMousePosition",handle(1),adr(x1%),adr(y1%))
  res% = dll_call3("GetMousePosition",handle(2),adr(x2%),adr(y2%))
 
  caption 3,"Sur Form 0: "+str$(x0%)+","+str$(y0%)+"  sur Panel 1: "+str$(x1%)+","+str$(y1%)+"  sur Memo 2: "+str$(x2%)+","+str$(y2%)

  timer_on 10
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

Position de la souris sur un objet à travers d'autres objets Empty
MessageSujet: Re: Position de la souris sur un objet à travers d'autres objets   Position de la souris sur un objet à travers d'autres objets EmptyVen 27 Avr 2018 - 22:50

Merci beaucoup Klaus pour toutes ces infos très précieuses et ton ton travail de programmation Very Happy ...
Revenir en haut Aller en bas
Contenu sponsorisé





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

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
-
» Objets réagissant au survol de la souris, sans clic !
» Lire position souris sur un scene2D ?
» Position des objets les uns par rapport aux autres
» Création d'objets par clic de souris
» Position des objets d'un conteneur dans FBPano et Panoramic

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: