ListIconGadget() et detection a vide...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour tout le monde,

Voila j'ai un petit probleme avec les ListIconGadget(), quand on clique dessus et qu'il n'y a pas de valeur ou meme si il y a des valeurs d'ailleur mais que l'on clique en dehors d'une valeur, on ne peut pas detecte ce clique apar si on fait un double-clique.

J'aimerais pouvoir savoir si on peut detecte un clique dans un listicongadget même si celui-ci est vide? est-ce possible?

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: ListIconGadget() et detection a vide...

Message par graph100 »

Es-ce que ça fait le job ?

Code : Tout sélectionner

OpenWindow(0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

ListIconGadget(1, 10, 10, 400, 300, "sqsdf", 120)


Repeat
	event = WaitWindowEvent()
	
	
	
	If EventGadget() = 1 And EventType() = #PB_EventType_LeftClick
		Debug "CLIC"
	EndIf
	
	
Until event = #PB_Event_CloseWindow

_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour graph100,

Oui cela repond parfaitement a ma demande par contre pas du tout la même réaction dans mon logiciel, j'aissais de comprendre pourquoi.

Merci,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour,

Je viens de comprendre d'ou vient mon problème en gros c'est en mettant l'option "#PB_ListIcon_MultiSelect", et dans le cas d'un selection multiple il faut double cliquer pour pouvoir activer le gadget. est-ce normal et y a t'il un moyen de ne plus avoir cela?

Code : Tout sélectionner

Enumeration
  #WINDOWS_0
EndEnumeration
Enumeration
  #LISTIC_0
EndEnumeration

OpenWindow(#WINDOWS_0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LISTIC_0, 10, 10, 400, 300, "sqsdf", 120, #PB_ListIcon_MultiSelect)
AddGadgetColumn  (#LISTIC_0, 1, "Ext.", 50)
AddGadgetColumn  (#LISTIC_0, 2, "Taille", 60)
AddGadgetColumn  (#LISTIC_0, 3, "Date", 100)

Repeat
  event = WaitWindowEvent()
   
  If EventGadget() = #LISTIC_0 And EventType() = #PB_EventType_LeftClick
    Debug "CLIC"
  EndIf
   
Until event = #PB_Event_CloseWindow
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: ListIconGadget() et detection a vide...

Message par Backup »

ton code ne fonctionne pas car ....

lorsque tu cliques en dehors du gadget , par exemple pour bouger la fenetre , ton click est détecté !

hors , il faudrait qu'il le soit seulement ET seulement SI on clique SUR le gagdet !!

pour ça il te faut savoir si ta souris se trouve SUR ou en DEHORs de ton gadget ..

voici comme faire :

Code : Tout sélectionner

Enumeration
	#WINDOWS_0
EndEnumeration
Enumeration
	#LISTIC_0
EndEnumeration


Declare  Callback(WindowID, message, wParam, lParam)




OpenWindow(#WINDOWS_0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LISTIC_0, 10, 10, 400, 300, "sqsdf", 120, #PB_ListIcon_MultiSelect)
AddGadgetColumn  (#LISTIC_0, 1, "Ext.", 50)
AddGadgetColumn  (#LISTIC_0, 2, "Taille", 60)
AddGadgetColumn  (#LISTIC_0, 3, "Date", 100)


SetWindowCallback(@Callback())

Repeat
	event = WaitWindowEvent()
	
	If handle=GadgetID(#LISTIC_0) And EventType() = #PB_EventType_LeftClick
		Debug "CLIC"
	EndIf
	
Until event = #PB_Event_CloseWindow 






Procedure Callback(WindowID, message, wParam, lParam)
	shared handle
	Resultat = #PB_ProcessPureBasicEvents
	Select message
		Case #WM_SETCURSOR
		;;  Debug "Handle= "+Str(wParam)+"   , "+"ID= "+Str(GetDlgCtrlID_(wParam))
		handle=wParam
	EndSelect
	ProcedureReturn Resultat
EndProcedure; EPB
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour Dobro,

Merci pour l'infos que je note bien. Par contre cela m'empeche pas qu'avec l'option "#PB_ListIcon_MultiSelect", il faut double cliquer sur le "ListIconGadget()" pour avoir "CLIC" dans le debugger et j'aimerais qu'un seul clique l'active?

Cordialement,
GallyHC
Dernière modification par GallyHC le dim. 03/févr./2013 14:17, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Re: ListIconGadget() et detection a vide...

Message par cederavic »

Je ne comprend pas pourquoi ça fonctionne (j'ai le debug quand je relache le clic alors que j'utilise LButtonDown) mais ça fonctionne 8O

Code : Tout sélectionner

Enumeration
  #WINDOWS_0
EndEnumeration
Enumeration
  #LISTIC_0
EndEnumeration

OpenWindow(#WINDOWS_0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LISTIC_0, 10, 10, 400, 300, "sqsdf", 120, #PB_ListIcon_MultiSelect)
AddGadgetColumn  (#LISTIC_0, 1, "Ext.", 50)
AddGadgetColumn  (#LISTIC_0, 2, "Taille", 60)
AddGadgetColumn  (#LISTIC_0, 3, "Date", 100)

Repeat
  event = WaitWindowEvent()

  If event = #WM_LBUTTONDOWN
    x = DesktopMouseX()
    y = DesktopMouseY()
    pos.q = y<<32 + x
    If WindowFromPoint_(pos) = GadgetID(#LISTIC_0)
      Debug "CLIC"
    EndIf
  EndIf
   
Until event = #PB_Event_CloseWindow
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour,

cederavic> Bon ben ta solution fonctionne, mais pourquoi en PB avec cette option cela change le fonctionnement du gadget la je ne sais pas?

Merci tout de même pour ta solution.

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: ListIconGadget() et detection a vide...

Message par nico »

C'est bizarre ce qui se passe mais c'est possible que la listicon capture les évènements de la souris ce qui expliquerait ces évènements.

Il faudrait faire des tests en api pure pour être sûr!
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: ListIconGadget() et detection a vide...

Message par graph100 »

le code suivant montre qu'il se passe des choses bizarres au niveau de la gestion du gadget lorsqu'il est en mode multiselect...
Une fois qu'on a cliquer dans le gadget, il continu à s'approprier les événements même si la souris est en dehors.
Pour revenir à la normal il doit soit falloir cliquer sur un autre gadget, soit cliquer sur une autre fenetre et revenir...

Je ne pense pas que ce soit entièrement voulu...

Code : Tout sélectionner

Enumeration
	#WINDOWS_0
EndEnumeration
Enumeration
	#LISTIC_0 = 1
EndEnumeration

OpenWindow(#WINDOWS_0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LISTIC_0, 10, 10, 400, 300, "sqsdf", 120, #PB_ListIcon_MultiSelect)
AddGadgetColumn  (#LISTIC_0, 1, "Ext.", 50)
AddGadgetColumn  (#LISTIC_0, 2, "Taille", 60)
AddGadgetColumn  (#LISTIC_0, 3, "Date", 100)

Repeat
	event = WaitWindowEvent()
	
	Debug "----"
	Debug EventGadget()
	Debug event
	
	If EventGadget() = #LISTIC_0 And Event = #WM_LBUTTONDOWN
		Debug "CLIC"
	EndIf
		
Until event = #PB_Event_CloseWindow
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: ListIconGadget() et detection a vide...

Message par Mesa »

Je trouve normal que le listicon en mode multiselect intercepte le premier clic puisque c'est ça fonction justement.

Mais on peut ruser...

Code : Tout sélectionner

Enumeration
  #WINDOWS_0
EndEnumeration
Enumeration
  #LISTIC_0 = 1
EndEnumeration

;Macro de falsam
;http://forums.purebasic.fr/french/viewtopic.php?f=1&t=13328&view=previous
;Un gadget est il survolé ?
Macro GadgetHoverCheck(x, y, Gadget)
  (((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) &(Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro


OpenWindow(#WINDOWS_0, 0, 0, 500, 400, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LISTIC_0, 10, 10, 400, 300, "sqsdf", 120, #PB_ListIcon_MultiSelect);
AddGadgetColumn  (#LISTIC_0, 1, "Ext.", 50)
AddGadgetColumn  (#LISTIC_0, 2, "Taille", 60)
AddGadgetColumn  (#LISTIC_0, 3, "Date", 100)

Repeat
  event = WaitWindowEvent()
  
  Debug "----"
  Debug EventGadget()
  Debug event
  
  ;#LISTIC_0 est-il survolé ?
  If GadgetHoverCheck(WindowMouseX(#WINDOWS_0), WindowMouseY(#WINDOWS_0), #LISTIC_0)
    Debug "survol" 
    ;Si oui, le bouton gauche est-il enfoncé ?
    If event=#WM_LBUTTONDOWN
      Debug "------========CLIC=========-------"
    EndIf
    
  EndIf
  
  
Until event = #PB_Event_CloseWindow


Mesa.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour,

Mesa> Je suis tout a fait d'accord dans le principe, mais il serait quand même bien que le gadget donne aussi l'info du premier clique (on a peu etre besoin de faire des actions dans le soft par moment et il faut le savoir).

J'ai fait une petit capture (sur XP et 7) pour montre pourquoi je me penche sur cela :)

Image

Image

En gros c'est une sorte de "Total Commander", mais qui va aussi gerer les Navigate3 (Tomtom de nouvelle generation).

Si quelqu'un veut déjà testé l'interface pas de prob :) c'est ici http://www.koakdesign.info/nav3/Nav3explorer.exe, bon c'est quand même qu'un début :)

Cordialement et encore merci pour vos aides,
GallyHC
Dernière modification par GallyHC le mer. 06/févr./2013 11:17, modifié 1 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: ListIconGadget() et detection a vide...

Message par Ar-S »

Sous Windows 8

Image

il a l'air fonctionnel.
Je vais dire ce que je n'aime pas (ça signifiera que j'aime le reste ;) )

- Le petit fond jaune lorsqu'on redimensionne une colonne manuellement. Ton "étiquette" est le bleu, reste avec du bleu.
- la police de caractère grasse. Je ne sais pas laquelle c'est mais elle me donne un arrière goût des années 90.
- Les petites icones seraient plus sympa et plus lisibles si elle faisaient 32x32.
- Ajouter un champ de recherche ce qui éviterait d'avoir à aller dans "Commande" => "Rechercher de fichier"

Voilou.
Sinon c'est propre, comme d'hab ;)


P.S : Votre version du logiciel est non enregistrée
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: ListIconGadget() et detection a vide...

Message par GallyHC »

Bonjour,

Tu n'as pas forcement tors :) je vais voir a faire quelques modifications sur l’interface.

Mais bon j'ai du créer mon splitter car celui de pb et de mémoire ne gere que 2 gadgets (c'est déjà bien qu'il y en a un). alors les couleur ect... ce n'était que pour être lisible. Et je me suis plus penché sur les calculs des positions en cas de redimentionnement que sur les couleurs en fait :).

GallyHC

PS: PT1 c'est moche ce gris avec titre en noir, j'espere que c'est pas par defaut sur 8.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: ListIconGadget() et detection a vide...

Message par blendman »

Salut GallyHC

J'ai testé moi aussi et je trouve que pour le moment c'est très bien.

Petit question : je trouve très sympa le fait que ça n'affiche qu'une petite barre noire quand tu redimensionne tes colonnes (au lieu de voir la fenêtre buguait un peu comme c'est souvent le cas ^^). Tu fais ça comment ?

Bonne continuation ;)
Répondre