;Autor: Fluid Byte EnableExplicit Define EventID Define i Define Result Procedure FindListItem(GadgetID.w,Expression.l,fMode.b=0,Column.b=0,iStart.l=0) Protected hwndListbox.l, Position.l, ItemCount.l, Length.l, i.l, Label.s If Not IsGadget(GadgetID) : ProcedureReturn -1 : EndIf hwndListbox = GadgetID(GadgetID) : Position = -1 If fMode Position = Expression Else ItemCount = CountGadgetItems(GadgetID) - 1 Length = lstrlen_(Expression) For i=iStart To ItemCount Label = GetGadgetItemText(GadgetID,i,Column) If CompareMemoryString(Expression,@Label,0,Length) = 0 Position = i : Break EndIf Next EndIf SendMessage_(hwndListbox,#WM_VSCROLL,#SB_TOP,0) SendMessage_(hwndListbox,#LVM_ENSUREVISIBLE,Position,1) If Position > SendMessage_(hwndListbox,#LVM_GETCOUNTPERPAGE,0,0)-1 SendMessage_(hwndListbox,#WM_VSCROLL,#SB_PAGEDOWN,0) SendMessage_(hwndListbox,#WM_VSCROLL,#SB_LINEUP,0) EndIf SetGadgetItemState(GadgetID,Position,#PB_ListIcon_Selected) SetActiveGadget(GadgetID) ProcedureReturn Position EndProcedure If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) ListIconGadget(1,10,10,WindowWidth(0)-20,WindowHeight(0)-20,"Index",50,0) AddGadgetColumn(1,1,"Name",200) AddGadgetColumn(1,2,"Random",200) For i=1 To 100 AddGadgetItem(1,-1,Str(i) + Chr(10) + "List-View Control Item #" + Str(i) + Chr(10) + Str(Random(10000))) Next Result = FindListItem(1,@"List-View Control Item #73",0,1) FindListItem(1,@"List-View Control Item #78",0,1,Result) Repeat EventID=WaitWindowEvent() If EventID = #PB_Event_CloseWindow End EndIf ForEver EndIf