ListIconGadget et la couleur de fond ou des items [RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

ListIconGadget et la couleur de fond ou des items [RESOLU]

Message par MLD »

Bonjour a tous
Pourquoi par exemple
SetGadgetItemColor(#lists,x,#PB_Gadget_BackColor,$F4DEC8)
ne color pas a partir du bord gauche immédiat de la grille, mais quelques pixels sur la droite :?: bug :?:
Remède :?:
Pour des applications pros ce n'est pas trés chouette :(
A mon avis ce gadget est complètement a revoir dans une version future :oops:
Dernière modification par MLD le sam. 27/mars/2010 10:10, modifié 1 fois.
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: ListIconGadget et la couleur de fond ou des items

Message par venom »

Bonjour,

non c'est tout a fait normale car un ListIconGadget ou un TreeGadget ne commence jamais au bord donc la couleur s'applique au niveau du texte ajouté pas au fond :wink:

Âpres je ne sais pas le rendu que tu veut mais peut être que SetGadgetColor() peut être utile :?

Code : Tout sélectionner

  If OpenWindow(0, 0, 0, 300, 300, "SetGadgetItemColor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    ListIconGadget(0, 10, 10, 280, 280, "Colonne 0", 100)
    AddGadgetColumn(0, 1, "Colonne 1", 100)
    For i = 1 To 10
      AddGadgetItem(0, -1, "Texte "+Str(i)+Chr(10)+"Texte "+Str(i))
    Next 

    SetGadgetItemColor(0, -1, #PB_Gadget_FrontColor, $0000FF,  1)
    SetGadgetItemColor(0,  3, #PB_Gadget_BackColor,  $00FFFF, -1)
    SetGadgetItemColor(0,  9, #PB_Gadget_BackColor,  $FFFF00,  1)
    SetGadgetColor(0, #PB_Gadget_BackColor, RGB(0,255,0))
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: ListIconGadget et la couleur de fond ou des items

Message par MLD »

Bonsoir venom

Heu! As tu déja vu la grille de VB? DataGrid. Les couleurs sont bien au bord de la grille
Rien a voir avec celle-ci :mrgreen:
Bon W E
Michel
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: ListIconGadget et la couleur de fond ou des items

Message par kernadec »

bonjour MLD

Voila un l'exemple de Netmaestro
ça semble correspondre à ta recherche, si tu retire la grille.
si tu utilise Windows!

Cordialement

Code : Tout sélectionner

; forum anglais auteur :  Netmaestro  ..

#LVM_SUBITEMHITTEST = #LVM_FIRST + 57 

Global oldlist,lv 

 

Procedure SubClass_LV(hwnd, msg, wparam, lparam) 

 result = CallWindowProc_(oldlist, hwnd, msg, wparam, lparam) 

 If msg = #WM_LBUTTONDOWN 

  HitInfo.LVHITTESTINFO 

  Hitinfo\pt\x = WindowMouseX(0) 

  HitInfo\pt\y = WindowMouseY(0) 

  SendMessage_(lv,#LVM_SUBITEMHITTEST,0,@HitInfo) 

  SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(181, 225, 241),hitinfo\iSubItem) 

  Debug GetGadgetItemText(0,hitinfo\iitem,hitinfo\iSubItem) 

 EndIf 

 ProcedureReturn result 

EndProcedure 

 

OpenWindow(0,0,0,640,480,"ListIcon Gadget Mischief: Get Selected Item",$CF0001) 

CreateGadgetList(WindowID(0)) 

lv = ListIconGadget(0,0,0,640,480,"",0,#PB_ListIcon_GridLines) 
 
 
AddGadgetColumn(0,1,"Column 1",210) 

AddGadgetColumn(0,2,"Column 2",210) 

AddGadgetColumn(0,3,"Column 3",215) 

SetGadgetColor(0, #PB_Gadget_BackColor, RGB(0,200,180))

For i = 1 To 32 

 linestr.s = LSet(Str(i),3," ") 

 AddGadgetItem(0, -1, Chr(10)+"Text on Line "+linestr+" in Column 1"+Chr(10)+"Text on Line "+linestr+" in Column 2"+Chr(10)+"Text on Line "+linestr+" in Column 3") 

Next 

oldlist=SetWindowLong_(lv, #GWL_WNDPROC, @SubClass_LV()) 

 

Repeat:Until WaitWindowEvent()=#WM_CLOSE 

 
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: ListIconGadget et la couleur de fond ou des items [RESOL

Message par MLD »

Bonjour kernadec
Merci a toi, et aussi a Netmaestro s'il passe sur ce forum.
Je suis passé a coté sur le forum US. :oops:
C'est exactement ce que je cherche. :lol:
Pour info, la DataGrid de VB a aussi les traits de séparation en 3D
:twisted: Pourquoi ce n'est pas en natif dans PB :?:

Bon WE
Michel
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: ListIconGadget et la couleur de fond ou des items [RESOL

Message par kernadec »

bonjour MLD

il manquait la fonction de dé-sélection dans l'exemple,
Je l'ai mise avec le clic droit
et pour le fun des couleurs de sélection


cordialement

Code : Tout sélectionner

; forum english auteur Netmaestro  ..

#LVM_SUBITEMHITTEST = #LVM_FIRST + 57 

Global oldlist,lv 

 

Procedure SubClass_LV(hwnd, msg, wparam, lparam) 

 result = CallWindowProc_(oldlist, hwnd, msg, wparam, lparam) 

 If msg = #WM_LBUTTONDOWN 

  HitInfo.LVHITTESTINFO 

  Hitinfo\pt\x = WindowMouseX(0) 

  HitInfo\pt\y = WindowMouseY(0) 

  SendMessage_(lv,#LVM_SUBITEMHITTEST,0,@HitInfo) 

 If hitinfo\iSubItem=1
  SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(220, 75,75),hitinfo\iSubItem) 
 EndIf
 
 If hitinfo\iSubItem=2
  SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(75, 220, 75),hitinfo\iSubItem) 
 EndIf
 
 If hitinfo\iSubItem=3
  SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor,RGB(0, 150, 220),hitinfo\iSubItem) 
 EndIf

 Debug GetGadgetItemText(0,hitinfo\iitem,hitinfo\iSubItem) +" mouse clic gauche"

EndIf
If msg = #WM_RBUTTONDOWN 

  HitInfo.LVHITTESTINFO 

  Hitinfo\pt\x = WindowMouseX(0) 

  HitInfo\pt\y = WindowMouseY(0) 

  SendMessage_(lv,#LVM_SUBITEMHITTEST,0,@HitInfo) 
  

  SetGadgetItemColor(0,hitinfo\iitem,#PB_Gadget_BackColor, RGB(190,220,240),hitinfo\iSubItem) 
  
  Debug GetGadgetItemText(0,hitinfo\iitem,hitinfo\iSubItem) +" mouse clic droit"

  
 EndIf 

 ProcedureReturn result 

EndProcedure 

 

OpenWindow(0,0,0,640,480,"ListIcon Gadget Mischief: Get Selected Item",$CF0001) 

CreateGadgetList(WindowID(0)) 

lv = ListIconGadget(0,0,0,640,480,"",0) 
 
 
AddGadgetColumn(0,1,"Column 1",210) 

AddGadgetColumn(0,2,"Column 2",210) 

AddGadgetColumn(0,3,"Column 3",215) 

SetGadgetColor(0, #PB_Gadget_BackColor, RGB(190,220,240))

For i = 1 To 32 

 linestr.s = LSet(Str(i),3," ") 

 AddGadgetItem(0, -1, Chr(10)+"Text on Line "+linestr+" in Column 1"+Chr(10)+"Text on Line "+linestr+" in Column 2"+Chr(10)+"Text on Line "+linestr+" in Column 3") 

Next 

oldlist=SetWindowLong_(lv, #GWL_WNDPROC, @SubClass_LV()) 

 

Repeat:Until WaitWindowEvent()=#WM_CLOSE 

 
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: ListIconGadget et la couleur de fond ou des items [RESOL

Message par MLD »

Bonjour kernadec

Ok Merci, c'est top :lol:
Répondre