Image d'une ListIconeGadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Noos88
Messages : 59
Inscription : lun. 14/juin/2010 19:16
Localisation : Belrupt (Vosges)

Image d'une ListIconeGadget

Message par Noos88 »

Pour un essais d'impression de tableau j'ai décidé de créer une image de celui ci
Ci ca peut aidé je laisse le code

Code : Tout sélectionner

Procedure ImageListIcon(x,y,Image,ListID)
      xx = 0
      yy = 0
      Eppaisseur=1
      Font=LoadFont(#PB_Any, "Arial"  ,  7)

  If CreateImage(Image, x, y)
    If StartDrawing(ImageOutput(Image))
 
      DrawingFont(FontID(Font))
      
      Box(0,0,x,y,RGB(255,255,255))

     Nbr_Colonne=2
     
     For Colonne=0 To Nbr_Colonne-1
      Somme_largeur_colonne = Somme_largeur_colonne + GetGadgetItemAttribute( ListID,1,#PB_ListIcon_ColumnWidth, Colonne )       
     Next colonne
     
    For Element=-1 To CountGadgetItems(ListID)-1
      
      For Colonne=0 To Nbr_Colonne-1
        
        Largeur_Element = GetGadgetItemAttribute( ListID,1,#PB_ListIcon_ColumnWidth, Colonne)        
        Largeur_utile = Somme_largeur_colonne  * Largeur_Element/ x
        
        Text$ = GetGadgetItemText(ListID,Element,Colonne)         
        Hauteur_Text = TextHeight(Text$)
        Largeur_Text = TextWidth(Text$)
        
        Box(xx,yy,Largeur_utile,Hauteur_Text+(Eppaisseur*2),RGB(0,0,0));Entourrage 
        
        Couleur_text = GetGadgetItemColor(listID, Element, #PB_Gadget_FrontColor , Colonne)
        Couleur_font = GetGadgetItemColor(ListID, Element, #PB_Gadget_BackColor , Colonne)
        
        If Couleur_text = -1
          Couleur_text = $000000
        EndIf 
        
        If Couleur_font = -1
         
        If Element = -1
          Couleur_font = $C8C8C8
        Else 
           Couleur_font = $FFFFFF
         EndIf
         EndIf        
        If Element = -1
         Box(xx+eppaisseur,yy+eppaisseur,Largeur_utile-(eppaisseur*2),20-(eppaisseur*2),RGB(200,200,200))
      
         Else  
        Box(xx+eppaisseur,yy+eppaisseur,Largeur_utile-(eppaisseur*2),20-(eppaisseur*2),Couleur_font)
        EndIf 

        DrawText(xx+eppaisseur,yy+eppaisseur,Text$,Couleur_text,Couleur_font)
        
        xx+Largeur_utile
        
      Debug Largeur_Element
      
    Next colonne
    xx = 0
    yy = yy + Hauteur_Text+(Eppaisseur*2)
  Next Element
  LineXY(0,yy,Somme_largeur_colonne ,yy,RGB(0,0,0))
  
      StopDrawing()
    EndIf
  EndIf

EndProcedure


;Essais:

If OpenWindow(0, 200, 100, 400, 200, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 390, 90, "Nom", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
   AddGadgetColumn(0, 1, "Adresse", 290)
   AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity"):SetGadgetItemColor(0, 1, #PB_Gadget_FrontColor, $0000FF)
   AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")   
   AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay"):SetGadgetItemColor(0,  3, #PB_Gadget_BackColor,  $00FFFF, -1)
    
   ImageListIcon(390,90,10,0)                    ;Creer l'image du ListIconeGadget
   ImageGadget(10, 5, 100, 390, 90, ImageID(10)) ;Affiche l'image

   
   Repeat
     Evenement = WaitWindowEvent()
   Until Evenement = #PB_Event_CloseWindow
 EndIf
Bonne journée
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Image d'une ListIconeGadget

Message par falsam »

Pas mal du tout. Merci Noos88.
Une suggestion : Une marge gauche pour chaque colonne, afin de ne pas voir le texte collé à la ligne verticale.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre