ajouter un nombre illimité d'élément sur ListIconGadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
celtic88
Messages : 309
Inscription : sam. 12/sept./2015 14:31
Localisation : Alger

ajouter un nombre illimité d'élément sur ListIconGadget

Message par celtic88 »

8)
Bon-Jour

Seulement Windows
ajouter un nombre illimité d'élément sur ListIconGadget Tréééés rapidement.

Code : Tout sélectionner

;By Celtic88 (c) 2017
;More info about Virtual List-View:https://msdn.microsoft.com/en-us/library/windows/desktop/bb774735(v=vs.85).aspx#Virtual_ListView_Style

Procedure.s RandomString(len=10)
  Protected Ranstr.s,oklm
  For oklm=1 To len
    Ranstr + Chr(Random(90,64))
  Next
  ProcedureReturn Ranstr
EndProcedure

Global Dim ItemInfo.s(1,100000)
Global LvHwnd

Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
  
  Select uMsg
    Case #WM_NOTIFY
      Protected *tNMHDR.NMHDR = LParam
      Select *tNMHDR\hwndFrom
        Case LvHwnd
          Select *tNMHDR\code
            Case #LVN_GETDISPINFO
              Protected *tNMLVDISPINFO.NMLVDISPINFO = LParam
              With *tNMLVDISPINFO
                If \item\mask & #LVIF_TEXT
                  \item\pszText = @ItemInfo(\item\iSubItem,\item\iItem)
                  \item\cchTextMax = Len(ItemInfo(\item\iSubItem,\item\iItem))
                EndIf
              EndWith
          EndSelect
      EndSelect
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

If OpenWindow(0, 100, 100, 500, 600, "Test Virtual List-View", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 5, 5, 490, 590, "Nom", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection|#LVS_OWNERDATA)
  LvHwnd = GadgetID(0)
  AddGadgetColumn(0, 1, "Adresse", 250)
  
  SetWindowCallback(@WinCallback(),0)
  
  Debug "preparing list.."
  For u=0 To 100000
    For ii=0 To 1
      ItemInfo(ii,u) =  Str(u) + " " + RandomString(5)
    Next
  Next
  Debug "End preparing list.."
  
  SendMessage_( LvHwnd, #LVM_SETITEMCOUNT, 100000+1, 0 )
  
  Repeat
    Evenement = WaitWindowEvent()
  Until Evenement = #PB_Event_CloseWindow
EndIf


amusez vous bien :D
.....i Love Pb :)
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: ajouter un nombre illimité d'élément sur ListIconGadget

Message par Shadow »

Hyper rapide :D
Merci !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: ajouter un nombre illimité d'élément sur ListIconGadget

Message par Kwai chang caine »

Oui c'est vraiment une méthode géniale pour blinder une ListIcon en quelques secondes, je m'en sert assez souvent 8)
C'est RASHAD qui m'a fait découvrir ça 8O
http://www.purebasic.fr/english/viewtop ... ec#p469076

Maintenant y'a pas que des avantages, ce serait trop beau :mrgreen:
La ListIcon est reliée corps et âme au tableau myItems()
L'avantage c'est que des qu'on modifie myItems() immédiatement la ListIcon se modifie comme un mirroir, et ça c'est le premier effet Kiss tres cool
Le second effet Kiss pas cool, c'est que certaines fonctions native PB, ne peuvent plus gérer la dite LisIcon, c'est ce que j'ai découvert à mes dépends :cry:

Donc, à réfléchir avant de tout axer un programme sur ce code :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre