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.


SommaireGadgetsListIcon Gadget (3)
précédent sommaire suivant
 

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

Mis à jour le 30 septembre 2008

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

Mis à jour le 8 décembre 2008

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

Mis à jour le 21 novembre 2009

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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 © 2018 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.

 
Responsable bénévole de la rubrique PureBasic : comtois -