j 'ai souci avec la structure LVFINDINFO
voici celle de nico
Code : Tout sélectionner
Structure LVFINDINFO
flags.l
psz.s
lParam.l
pt.POINT
vkDirection.l
EndStructure
je passe en PB5.31 et ping,
PB531 me dit Structure existante, très bien, Alors je la commente;;;
maintenant, il ne veut plus de mes caractères pour la variable psz
il dit que la variable psz attend une valeur numérique
je suis allé sur le site Mdsn pour voir où est l'erreur et la structure de nico est identique a celle du site
que se passe t'il avec PB5.31???
quelqu'un est il au courant de ce changement...
" MDSN LVFINDINFO "
Code : Tout sélectionner
typedef struct tagLVFINDINFO {
UINT flags;
LPCTSTR psz;
LPARAM lParam;
POINT pt;
UINT vkDirection;
} LVFINDINFO, *LPFINDINFO;
Code : Tout sélectionner
; Exemple de recherche d'élément dans une ListIconGadget
; La recherche s'effectue soit à partir de l'index 0
; soit à partir de la sélection
; soit à partir du String Gadget
; A noter: La recherche est sensible à la casse
; By Nico
Procedure Recherche(handle.l, ValeurRecherche.s, depart.l)
find.LVFINDINFO
find\flags=#LVFI_PARTIAL
find\psz= ValeurRecherche
index.l=SendMessage_(handle, #LVM_FINDITEM, depart, find)
SetGadgetItemState(4, index, 1)
NbItem = CountGadgetItems(4)
;Message pour récupérer la hauteur d'un item
SendMessage_(handle, #LVM_GETITEMRECT, 0, @prc.RECT)
;Message pour scroller tout au début (item*hauteur)
SendMessage_(handle, #LVM_SCROLL, 0, -NbItem*(prc\bottom-prc\top))
;Message pour scroller sur l'élément recherché
SendMessage_(handle, #LVM_SCROLL, 0, index*(prc\bottom-prc\top))
ProcedureReturn index
EndProcedure
If OpenWindow(0,100,200,380,200,"Recherche ListIcon Example",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
StringGadget(0, 10, 10, 360, 20, "Entrez un ou plusieurs caractères pour la recherche sur la colonne Valeur", #PB_String_ReadOnly|#PB_String_BorderLess)
ButtonGadget(1, 210, 50, 140, 20, "Rechercher depuis le début")
ButtonGadget(2, 210, 30, 140, 20, "Suivant")
StringGadget(3, 20, 40, 150, 20, "")
hlist.l=ListIconGadget(4,20,80,330,100,"Valeur",100,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(4,1,"Donnée",178)
For x= 0 To 120
AddGadgetItem(4,-1,Str(x)+Chr(10)+"Donnée "+Str(x))
Next x
For x= 0 To 120
AddGadgetItem(4,-1,Str(x)+Chr(10)+Str(x))
Next x
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case 1 ;rechercher depuis le début
Texte$ = GetGadgetText(3)
ElementTrouve.l= Recherche(hlist, Texte$, -1)
Case 2 ;suivant
Texte$ = GetGadgetText(3)
ElementTrouve= Recherche(hlist, Texte$, ElementTrouve)
If ElementTrouve < 0
MessageRequester("Info", "Valeur non trouvée")
EndIf
Case 3 ;rechercher depuis le String Gadget
Texte$ = GetGadgetText(3)
If EventType() <> #PB_EventType_Focus
If selection=#False
ElementTrouve= Recherche(hlist, Texte$, -1)
EndIf
EndIf
selection=#False
Case 4 ;retrouve l'index courant pour continuer la recherche
;à partir de l'élément sélectionné
If EventType() = #PB_EventType_LeftClick
#LVM_GETHOTITEM= $1000+61
ElementTrouve=SendMessage_(hlist, #LVM_GETHOTITEM, 0, 0)
Texte$ = GetGadgetText(4)
SetGadgetText(3, Texte$)
selection=#True
EndIf
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
EndIf