AddGadgetItem texte multiligne

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Print_Fred
Messages : 6
Inscription : jeu. 04/avr./2024 13:55

AddGadgetItem texte multiligne

Message 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
Windows 10 Professionnel 64bits
PureBasic 6.11 LTS (Windows - x64)
Avatar de l’utilisateur
Mindphazer
Messages : 694
Inscription : mer. 24/août/2005 10:42

Re: AddGadgetItem texte multiligne

Message par Mindphazer »

Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Print_Fred
Messages : 6
Inscription : jeu. 04/avr./2024 13:55

Re: AddGadgetItem texte multiligne

Message 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

Windows 10 Professionnel 64bits
PureBasic 6.11 LTS (Windows - x64)
Répondre