Gestion des clic EplorerTreeGadget & ExplorerListGadget [Ok]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Gestion des clic EplorerTreeGadget & ExplorerListGadget [Ok]

Message par DarkIchigo »

Salut à tous !

j'ai encore un problème (pour changer :? ).

Cette fois ci je n'arrive pas a faire marcher le EventType() qui doit
me permettre de récupérer les clic de la souris.

Je pense ne pas l'avoir placé au bon endroit, d'après mon manque d'expérience
je dirai qu'il entre en "conflit" avec la mise a jour auto du chemin affiché par les
gadgets, de plus le fait d'avoir plusieurs fenêtres filles possibles complique encore
la chose pour mon petit niveau.

J'ai pourtant bien essayé avec l'aide mais la description est très simpliste et
ayant beaucoup de "merdier" dans mon programme, je n'arrive pas à le faire
cohabiter avec le reste du programme.

J'ai aussi effectué une recherche mais je n'ai pas trouvé de quoi régler mon problème
:(

De plus j'ai une réaction étrange de la part du ExplorerListGadget si je sélectionne
un fichier dans le ExplorerTreeGadget adjacent, a savoir que seul le fichier sélectionné
est affiché à présent :

avant :
Image

après :
Image

La je ne sais pas si c'est normal ou si c'est un bug.

Si quelqu'un passant par là peux me donner un petit coup de main, ce serait avec
grand plaisir!

Code : Tout sélectionner

ExamineDesktops()

T_x_Window = DesktopWidth(0)
T_y_Window = DesktopHeight(0)

#Flag = #PB_Window_MaximizeGadget | #PB_Window_Maximize | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_WindowCentered
#Flag_EG = #PB_Explorer_AlwaysShowSelection | #PB_Explorer_NoDriveRequester

Enumeration
   #Window
   #Window_Lov
    
   #Editor_Menu = 20
   #Editor_Menu_Lov
   #Editor_Menu_Fermer
   #Editor_Menu_Quit
   
   #Editor_Lov_Web = 200
   #Editor_Lov_ETG
   #Editor_Lov_ELG
EndEnumeration

Procedure Editor_Lov()
T_x_Window = DesktopWidth(0)
T_y_Window = DesktopHeight(0)  
P_x_ETG = 0
P_y_ETG = 0
T_x_ETG = T_x_Window/3
T_y_ETG = T_y_Window/2
P_x_ELG = T_x_Window/3
P_y_ELG = 0
T_x_ELG = (T_x_Window/3)*2
T_y_ELG = T_y_Window/2

P_x_Web = 0
P_y_Web = T_y_Window/2
T_x_Web = T_x_Window-2
T_y_Web = T_y_Window/2
  MDIGadget(0, 0, 0, 0, 0, 1, 1, #PB_MDI_BorderLess | #PB_MDI_AutoSize)
    AddGadgetItem(0, #Window_Lov, "Lovable")
      SetWindowState(#Window_Lov, #PB_Window_Maximize)
    WebGadget(#Editor_Lov_Web, P_x_Web,P_y_Web, T_x_Web, T_y_Web, "www.google.fr")
    EG_Lov$ = "C:\"
    ExplorerTreeGadget(#Editor_Lov_ETG, P_x_ETG, P_y_ETG, T_x_ETG, T_y_ETG, EG_Lov$)
    ExplorerListGadget(#Editor_Lov_ELG, P_x_ELG, P_y_ELG, T_x_ELG, T_y_ELG, EG_Lov$)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 455, 0)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 100, 1)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 160, 2)
      SetGadgetItemAttribute(#Editor_Lov_ELG, 0, #PB_Explorer_ColumnWidth, 120, 3)
    
  UseGadgetList(WindowID(#Window)) 
EndProcedure


If OpenWindow(#Window, 0, 0, T_x_Window, T_y_Window, "Programme_main", #Flag)
    
  CreateMenu(#Editor_Menu, WindowID(#Window))
  
    MenuTitle("Fichier")
      MenuItem(#Editor_Menu_Lov, "Lovable" + Chr(9) + "Ctrl+2")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_2, #Editor_Menu_Lov)
      MenuBar()
      MenuItem(#Editor_Menu_Fermer, "Fermer" + Chr(9) + "Ctrl+W")
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_W, #Editor_Menu_Fermer)
      MenuBar()
      MenuItem(#Editor_Menu_Quit, "Quitter" + Chr(9) + "Crtl+Q") 
      AddKeyboardShortcut(#Window, #PB_Shortcut_Control | #PB_Shortcut_Q, #Editor_Menu_Quit)
    
Quit = 0
Repeat
  Event = WaitWindowEvent()
  Select EventWindow()
  
  Case #Window_Lov  
    Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Editor_Lov_ETG : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG , Chemin_ETG_Lov_0$)
        Select EventType()
        Case #PB_EventType_LeftClick 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ETG,0 ,0) : OpenFile(0, Chemin_ETG_Lov_0$ + File$)
        EndSelect
      Case #Editor_Lov_ELG : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG , Chemin_ELG_Lov_0$)
        Select EventType()
        Case #PB_EventType_LeftClick 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ELG,0 ,0) : OpenFile(0, Chemin_ELG_Lov_0$ + File$)
        EndSelect
      EndSelect
    EndSelect
              
  Case #Window
    Select Event
    Case #PB_Event_CloseWindow : Quit = 1
      
    Case #PB_Event_Menu
      Select EventMenu()
      Case #Editor_Menu_Lov : Editor_Lov()
      Case #Editor_Menu_Fermer : NumeroFenetre = GetActiveWindow() : FenetreActive = GetGadgetState(NumeroFenetre) : CloseWindow(FenetreActive)
      Case #Editor_Menu_Quit : Quit = 1
      EndSelect
    EndSelect
  EndSelect
Until Quit = 1
EndIf
Dernière modification par DarkIchigo le mar. 27/avr./2010 15:35, modifié 2 fois.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par Jacobus »

Comme ça...

Code : Tout sélectionner

Case #Window_Lov  
    Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Editor_Lov_ETG
        Select EventType()
        Case #PB_EventType_LeftClick  : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG , Chemin_ETG_Lov_0$)
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ETG,0 ,0) : OpenFile(0, Chemin_ETG_Lov_0$ + File$)
        EndSelect
      Case #Editor_Lov_ELG
        Select EventType()
        Case #PB_EventType_LeftClick : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG , Chemin_ELG_Lov_0$) 
        Case #PB_EventType_RightClick : ;menu a mettre
        Case #PB_EventType_LeftDoubleClick : File$ = GetGadgetItemText(#Editor_Lov_ELG,0 ,0) : OpenFile(0, Chemin_ELG_Lov_0$ + File$)
        EndSelect
      EndSelect
    EndSelect
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par DarkIchigo »

Merci de la réponse, mais j'avais testé et ça ne marche toujours pas, aucune différence chez moi.

Et pour le "comportement étrange" des ExplorerTree & ListGadget c'est normal ou j'ai un pb dans mon code qui fais bugguer?
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par Jacobus »

J'ai testé avec PB 4.41
Plantage avec ton code, aucun blème après correction ou bien je n'ai pas saisi ce que tu voulais dire....
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par DarkIchigo »

Chez moi les 2 codes ont exactement le même comportement, le double clic n'a aucun effet et un clic simple "filtre" et ne laisse affiché que l'élément sélectionné comme montré sur les screen du 1er post.

Comprends pas :?
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par Jacobus »

Pour ouvrir le fichier, OpenFile() est très bien, mais je pense que ce n'est pas ce que tu veux.
Utilises plutôt ceci :

Code : Tout sélectionner

RunProgram(Chemin_ETG_Lov_0$ + File$)
à la place de cela :

Code : Tout sélectionner

OpenFile(0, Chemin_ETG_Lov_0$ + File$)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par DarkIchigo »

Merci Jacobus pour le RunProgram() je pensais qu'il fallait obligatoirement lui donner le programme à utiliser, mais en fait il est bien plus simple que ça :D

Et du coup j'avais un pb dans mon code à la selection du nom du fichier à lancer, du coup j'ai apporté une petite modif et ça roule pour le moment.

Code : Tout sélectionner

 Case #Window_Lov   
  Select Event 
  Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
  Case #PB_Event_Gadget
   Select EventGadget()
   Case #Editor_Lov_ETG
    Select EventType()
    Case #PB_EventType_LeftClick       : Chemin_ETG_Lov_0$ = GetGadgetText(#Editor_Lov_ETG) : SetGadgetText(#Editor_Lov_ELG, Chemin_ETG_Lov_0$) 
    Case #PB_EventType_RightClick      : ;menu a mettre 
    Case #PB_EventType_LeftDoubleClick : File_ETG$ = GetGadgetItemText(#Editor_Lov_ETG, GetGadgetState(#Editor_Lov_ETG), 0) : RunProgram(Chemin_ETG_Lov_0$ + File_ETG$) 
    EndSelect 
   Case #Editor_Lov_ELG
    Select EventType() 
    Case #PB_EventType_LeftClick       : Chemin_ELG_Lov_0$ = GetGadgetText(#Editor_Lov_ELG) : SetGadgetText(#Editor_Lov_ETG, Chemin_ELG_Lov_0$) 
    Case #PB_EventType_RightClick      : ;menu a mettre 
    Case #PB_EventType_LeftDoubleClick : File_ELG$ = GetGadgetItemText(#Editor_Lov_ELG, GetGadgetState(#Editor_Lov_ELG), 0) : RunProgram(Chemin_ELG_Lov_0$ + File_ELG$) 
    EndSelect 
   EndSelect 
  EndSelect
Par contre toujour le comportement étrange du ExplorerListGadget() quand ilest mis à jour par le ExplorerTreeGadget().


En gros Merci Jacobus
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par DarkIchigo »

Ca y est, j'ai compris pourquoi le ELG se comporte comme ça quand je sélectionne un fichier dans le ETG, en fait la fonction
GetGadgetText() pour le ETG renvoi le "Chemin:\Nom.Extention" du fichier et non juste le chemin du répertoire.

Du coup je dois voir comment contourner le pb.

Et puis des fois que je sois pas le seul à avoir le pb si ça peux aider, tant mieux !
DarkIchigo
Messages : 62
Inscription : lun. 22/mars/2010 11:34

Re: Gestion des clic dans EplorerTreeGadget & ExplorerListGa

Message par DarkIchigo »

Voila du coup j'ai fait comme ça pour contourner le pb au cas ou d'autres débutants aient le même problème :

Code : Tout sélectionner

Select Event
    Case #PB_Event_CloseWindow : CloseWindow(#Window_Lov)
    Case #PB_Event_Gadget
      Select EventGadget()
      Case #Gadget_Lov_ETG
        Select EventType()
        Case #PB_EventType_LeftClick : State_Lov_ETG = GetGadgetState(#Gadget_Lov_ETG) : If State_Lov_ETG = 2 : Chemin_Lov_ETG_0$ = GetGadgetText(#Gadget_Lov_ETG) : SetGadgetText(#Gadget_Lov_ELG, Chemin_Lov_ETG_0$) : EndIf
        Case #PB_EventType_RightClick : ;menu a mettre 
        Case #PB_EventType_LeftDoubleClick : State_Lov_ETG = GetGadgetState(#Gadget_Lov_ETG) : If State_Lov_ETG = 1 : Chemin_Lov_ETG_0$ = GetGadgetText(#Gadget_Lov_ETG) : RunProgram(Chemin_Lov_ETG_0$) : EndIf
        EndSelect 
      Case #Gadget_Lov_ELG : Chemin_Lov_ELG_0$ = GetGadgetText(#Gadget_Lov_ELG) : SetGadgetText(#Gadget_Lov_ETG, Chemin_Lov_ELG_0$)
        Select EventType()
        Case #PB_EventType_LeftClick
        Case #PB_EventType_RightClick : ;menu a mettre 
        Case #PB_EventType_LeftDoubleClick : File_ELG$ = GetGadgetItemText(#Gadget_Lov_ELG, GetGadgetState(#Gadget_Lov_ELG), 0) : RunProgram(Chemin_Lov_ELG_0$ + File_ELG$) 
        EndSelect 
      EndSelect
    EndSelect
Répondre