FAQ PureBasicConsultez toutes les FAQ
Nombre d'auteurs : 7, nombre de questions : 68, dernière mise à jour : 3 janvier 2013 Ajouter une question
Bienvenue dans la F.A.Q. PureBasic !
Celle-ci va tenter de répondre aux questions les plus fréquemment posées sur le langage PureBasic et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le PureBasic, et ne demande qu'à être enrichie par vos expériences personnelles.
Bien entendu, malgré toute l'attention qui a pu être portée à cette F.A.Q., des erreurs ont toujours pu s'y glisser. Prenez donc toutes les précautions qui s'imposent avant d'essayer un exemple.
Nous vous souhaitons une bonne lecture ! Et n'oubliez pas qu'en cas de problème, vous pourrez toujours poser votre question sur le forum PureBasic !
L'équipe PureBasic de Developpez.
Valable uniquement pour Windows (utilisation de l'API). Ce code permet de fixer la taille de la première colonne d'une ListIconGadget().
Pour fixer la taille de la seconde colonne , remplacez 0 par 1 dans le test suivant :
If *nmh\iItem = 1 : ProcedureReturn 1 : EndIf
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | Procedure WindowCallback(hWnd,uMsg,wParam,lParam) Select uMsg Case #WM_NOTIFY *lpnm.NMHDR = lParam If *lpnm\hwndFrom = SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0) And *lpnm\code = #HDN_BEGINTRACK *nmh.NMHEADER = lParam If *nmh\iItem = 0 : ProcedureReturn 1 : EndIf ProcedureReturn 0 EndIf EndSelect ProcedureReturn #PB_ProcessPureBasicEvents EndProcedure OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) ListIconGadget(0,0,0,320,240,"Name",160) AddGadgetColumn(0,1,"Type",80) AddGadgetColumn(0,1,"Size",60) SetWindowCallback(@WindowCallback()) While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend |
Les éléments sont stockés dans un tableau , et affichés à la demande.
Cette méthode permet d'occuper beaucoup moins de mémoire qu'en ajoutant réellement les éléments à la ListIconGadget.
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | ;... Utilisation de 1.000.000 éléments #ItemCount = 1000000 #LVSICF_NOINVALIDATEALL = 1 #LVN_ODCACHEHINT = #LVN_FIRST - 13 ;... Array to hold data Global Dim myItems.s(#ItemCount,1) Procedure WinCallback(hwnd, msg, wParam, lParam) result = #PB_ProcessPureBasicEvents Select msg Case #WM_NOTIFY *pnmh.NMHDR = lParam Select *pnmh\code Case #LVN_ODCACHEHINT result = 0 Case #LVN_GETDISPINFO *pnmlvdi.NMLVDISPINFO = lParam If *pnmlvdi\item\mask & #LVIF_TEXT ;... Item text is being requested *pnmlvdi\item\pszText = @myItems(*pnmlvdi\item\iItem,*pnmlvdi\item\iSubItem) EndIf EndSelect EndSelect ProcedureReturn result EndProcedure If OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) SetWindowCallback(@WinCallback()) ; left column list=ListIconGadget(#PB_Any,10,10,620,280,"ID",50,#LVS_OWNERDATA) ;... Set desired number of ListIconGdaget items SendMessage_(GadgetID(list), #LVM_SETITEMCOUNT, #ItemCount, #LVSICF_NOINVALIDATEALL) AddGadgetColumn(list,2,"Name",100) For i=0 To #ItemCount myItems(i,0) = Str(i) myItems(i,1) = "Name"+Str(i) Next i ; Here we change the ListIcon display to large icons and show an image Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf |
Valable pour windows uniquement.
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | OpenWindow(0,0,0,355,240,"") ListIconGadget(0, 10,0,335,180,"Col 1",80) AddGadgetColumn(0,1,"Col 2", 50) AddGadgetColumn(0,2,"Col 3", 50) AddGadgetColumn(0,3,"Col 4", 50) AddGadgetColumn(0,4,"Col 5", 50) AddGadgetColumn(0,5,"Col 6", 50) TextGadget(1, 10,185,300,20,"") ; Compte le nombre de colonnes headerctrl = SendMessage_(GadgetID(0), #LVM_GETHEADER, 0, 0) columncount = SendMessage_(headerctrl, #HDM_GETITEMCOUNT, 0, 0) SetGadgetText(1, "Nombre de colonnes : "+Str(columncount)) Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.