Page 1 sur 1

AddGadgetItem texte multiligne

Publié : jeu. 11/juil./2024 14:01
par Print_Fred
Bonjour,

Je cherche une solution pour utiliser un texte multiligne dans les lignes d'un ListIconGadget via la fonction AddGadgetItem(), j'ai fait plusieurs tests et j'ai cherché sur les divers forums mais sans succès.

Code : Tout sélectionner

If OpenWindow(0, 100, 100, 900, 800, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 0, 21, 900, 600, "Source", 299, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(0, 1, "Destination", 299)
  AddGadgetColumn(0, 2, "Port", 299)
  AddGadgetItem(0, -1, "192.168.1.0/24"+Chr(10)+"172.16.0.2" + Chr(10) + "http https")
  AddGadgetItem(0, -1, "192.168.1.0/24"+Chr(10)+"172.18.3.2 172.18.3.3 172.18.3.4" + Chr(10) + "dhcp dns ntp")
  AddGadgetItem(0, -1, "192.168.1.0/24"+Chr(10)+"Internet" + Chr(10) + "http https")
  
  Repeat
    Evenement = WaitWindowEvent()
  Until Evenement = #PB_Event_CloseWindow
EndIf
L'exemple de code ci-dessus (qui n'est pas multiligne) affiche la ligne 2 de la table sous cette forme :

Code : Tout sélectionner

192.168.1.0/24   172.18.3.2 172.18.3.3 172.18.3.4   dhcp dns ntp
et moi j'aimerai l'afficher sous la forme suivante :

Code : Tout sélectionner

192.168.1.0/24	172.18.3.2   dchp
				172.18.3.3   dns 
				172.18.3.4   ntp   
Si vous avez une solution je suis preneur :D

Re: AddGadgetItem texte multiligne

Publié : jeu. 11/juil./2024 15:39
par Mindphazer

Re: AddGadgetItem texte multiligne

Publié : ven. 12/juil./2024 11:02
par Print_Fred
Merci Mindphazer pour ta réponse, j'ai adapté mon code de test en ajoutant la création et la destruction de l'imageList via l'API win32 (sans la fonction de callback pour le moment) et ça fonctionne :D

Ci-dessous le code de test modifier pour gérer le multiligne, si ça peut servir à d'autres :

Code : Tout sélectionner

Window_0 = OpenWindow(#PB_Any, 100, 100, 900, 600, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If Window_0 
  MyList = ListIconGadget(#PB_Any, 0, 21, 900, 600, "Source", 299, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(MyList, 1, "Destination", 299)
  AddGadgetColumn(MyList, 2, "Port", 299)
  
  ; Création d'ume ImageListe via l'API Win32
  ; https://learn.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-imagelist_create
  imageList = ImageList_Create_(1, 45, #ILC_COLOR32, 0, 30)
  SendMessage_(GadgetID(MyList), #LVM_SETIMAGELIST, #LVSIL_SMALL, imageList)
  
  AddGadgetItem(MyList, -1, "192.168.1.0/24"+Chr(10)+"172.16.0.2" + Chr(10) + "http"+Chr(13)+"https")
  AddGadgetItem(MyList, -1, "192.168.1.0/24"+Chr(10)+"172.18.3.2"+Chr(13)+"172.18.3.3"+Chr(13)+"172.18.3.4" + Chr(10) + "dhcp"+Chr(13)+"dns"+Chr(13)+"ntp")
  AddGadgetItem(MyList, -1, "192.168.1.0/24"+Chr(10)+"Internet" + Chr(10) + "http"+Chr(13)+"https")
  
  ; Boucle de traitement des événements
  Repeat
    Event = WaitWindowEvent()
    
    Select EventWindow()
      Case Window_0        
        If Event = #PB_Event_CloseWindow
          ; On fait le ménage avant de partir
          ; https://learn.microsoft.com/en-us/windows/win32/api/commctrl/nf-commctrl-imagelist_destroy
          ImageList_Destroy_(imageList)
          
          End           
        EndIf      
    EndSelect
  ForEver
  
EndIf