D'accord !!!! Alors Edit ça voudrait dire qu'il a le focus et qu'il est actuellement EDITABLE
Donc il pourrait etre LISTBOX ou EDITABLE selon si il a le focus, je crois que je comprend mieux
En fait, j'ai encore un petit probleme.
J'ai voulu faire simple pour vous donner l'exemple, mais en fait mes Gadgets sont dynamiques.
Et j'ai du mal a adapter ton code, ou bien celui de GNOZAL.
Il faut cliquer plusieurs fois pour que ça marche et parfois ça plante et j'ai pas encore compris pourquoi
Ce que j'essaye de faire, c'est que quand je clic sur un listview ET SEULEMENT sur un listview qui sont a chaque champs a gauche dans l'angle, ça ouvre un petit popup avec des choix que je peux ajouter dedans en le selectionnant.
Si je decommente la ligne 48, ça marche au bout de 2 clics, sinon on reviens a mon probleme du debut
Code : Tout sélectionner
Enumeration
#Form
#FormPopUp
#GadgetArea
#ListPopUp
EndEnumeration
Global Dim IdCellule(100)
Global Dim IdTexteTitre(100)
Global Dim IdListeFormat(100)
Structure QuadPoint ; Detection clic sur ListViewGadget vide
StructureUnion
Q.q
P.Point
EndStructureUnion
EndStructure
Procedure EditerFichier()
Hauteur = 20
RazLongueurCellule = 400
RazLongueurListeFormat = 90
LongueurCellule = RazLongueurCellule
LongueurListeFormat = RazLongueurListeFormat
InterLig = 10
InterCol = 10
X = 10
Y = 10
ControleY = Y
IdRef = 0
ControleX = X
Repeat
IdRef + 1
IdCellule(IdRef) = StringGadget(#PB_Any, ControleX + LargeurCheck + 5, ControleY, LongueurCellule, Hauteur, "")
IdListeFormat(IdRef) = ListViewGadget(#PB_Any, ControleX + LargeurCheck + 5, ControleY + Hauteur, LongueurListeFormat, Hauteur)
IdTexteTitre(IdRef) = ComboBoxGadget(#PB_Any, ControleX + LongueurListeFormat + LargeurCheck + 5, ControleY + Hauteur, LongueurCellule - LongueurListeFormat, Hauteur, #PB_ComboBox_Editable)
ResizeGadget(IdCellule(IdRef), #PB_Ignore, #PB_Ignore, LongueurCellule, #PB_Ignore)
ControleX + LongueurCellule + InterCol
;AddGadgetItem(IdListeFormat(IdRef), - 1, "")
Until IdRef = 5
ControleY + (Hauteur * 2) + InterLig
EndProcedure
Procedure PopUpFormat(Gadget)
a$ = Space(50)
GetClassName_(GadgetID(Gadget), @a$,49)
Debug a$
If Not a$ = "ListBox"
ProcedureReturn
EndIf
OpenWindow(#FormPopUp, DesktopMouseX(), DesktopMouseY(), 100, 100, "", #PB_Window_BorderLess)
ListViewGadget(#ListPopUp, 0, 0, WindowWidth(#FormPopUp), WindowHeight(#FormPopUp))
StickyWindow(#FormPopUp, 1)
p = 0
Repeat
p + 1
AddGadgetItem(#ListPopUp, - 1, Str(p))
Until p = 6
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
If EventGadget() = #ListPopUp
ChoixMenu$ = GetGadgetItemText(#ListPopUp, GetGadgetState(#ListPopUp), 0)
AddGadgetItem(Gadget, - 1, ChoixMenu$)
Break
EndIf
Case #WM_MOUSEMOVE
If DesktopMouseX() < WindowX(#FormPopUp) - 20 Or DesktopMouseY() < WindowY(#FormPopUp) - 20 Or DesktopMouseX() > WindowX(#FormPopUp) + WindowWidth(#FormPopUp) + 20 Or DesktopMouseY() > WindowY(#FormPopUp) + WindowHeight(#FormPopUp) + 20
Break
EndIf
EndSelect
ForEver
CloseWindow(#FormPopUp)
EndProcedure
OpenWindow(#Form, 0, 0, 800, 600, "", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
ScrollAreaGadget(#GadgetArea, 5, 30, WindowWidth(PbIdFenetre) - 10, WindowHeight(PbIdFenetre) - 60, WindowWidth(PbIdFenetre) * 4, WindowHeight(PbIdFenetre) * 4, #PB_ScrollArea_Raised)
SetGadgetColor(#GadgetArea, #PB_Gadget_BackColor, RGB(255, 0, 0))
EditerFichier()
CloseGadgetList()
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #WM_LBUTTONDOWN
Gadget = EventGadget()
If Gadget
If GetCursorPos_(@MousePos.QuadPoint) And ScreenToClient_(GadgetID(Gadget), @MousePos)
If ChildWindowFromPoint_(GadgetID(Gadget), MousePos\Q)
PopUpFormat(Gadget)
EndIf
EndIf
EndIf
EndSelect
Until Evenement = #PB_Event_CloseWindow
End