Page 1 sur 1

MoreListIconGadget

Publié : lun. 07/mars/2005 11:36
par Flype
un problème avec la lib de denis

est ce vraiment un bug - je ne sais pas - toujours est il que la commande SetColumnColor() ne fonctionne pas lorsque le gadget passé en paramêtre est dans un SplitterGadget !
Les autres commandes fonctionnent mais celle là semble ne pas réagir, voir fait planter le programme...

:x vooilà voilà denis :wink:

Re: MoreListIconGadget

Publié : lun. 07/mars/2005 11:47
par Anonyme2
Flype a écrit :un problème avec la lib de denis

est ce vraiment un bug - je ne sais pas - toujours est il que la commande SetColumnColor() ne fonctionne pas lorsque le gadget passé en paramêtre est dans un SplitterGadget !
Les autres commandes fonctionnent mais celle là semble ne pas réagir, voir fait planter le programme...

:x vooilà voilà denis :wink:
Flype, tu n'as pas un morceau de code pour que je teste (j'ai recomplilé ma lib avec PB 3.93 et toutes les updates). :D

Tu as fait un essai avec Setrowcolor :?: , ça ne doit pas marcher car j'appelle la même routine qui se charge de faire la différence entre les lignes et les colonnes .

Publié : lun. 07/mars/2005 11:54
par Flype
je te prépare un truc...

dis moi est ce que je peux telecharger la nlle version que tu as recompilée ?

Publié : lun. 07/mars/2005 12:01
par Anonyme2
Voici un lien pour la télécharger (uniquement le fichier librairie)

ici

Publié : lun. 07/mars/2005 14:19
par Flype
bon voilà, j'ai essayé d'isoler au maximum le pb...

dans cet exemple, je créé, entre autres, 2 listicon

le 1er ds un splitter
le 2eme en dehors du splitter

si je 'colorise' le 1er sans 'coloriser' le 2ème çà marche pas.
si je 'colorise' le 1er et le 2ème çà marche.

idem donc pour SetRowColor()
idem pour la nlle version recompilé

il faudrait aussi verifier dans un panel et un frame, bref, dès lors que le listicon dépends d'une autre fenetre que la principale...

j'espere que çà t'aidera denis.

ps: j'adore ta lib, je peux pas m'en séparer alors fait en sorte qu'elle marche :D

Code : Tout sélectionner

;------------------------------------
;- Bug MoreListIconGadget - SetColumnColor()
;------------------------------------

Enumeration
  
  #gadListeA
  #gadListeB
  #gadEditor
  #gadSplitter
  
EndEnumeration

;------------------------------------

If OpenWindow(0,0,0,400,450,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"test")
  
  If CreateGadgetList(WindowID())
    
    ; dans le splitter
    
    ListIconGadget(#gadListeA,0,0,0,0,"col1",120,#PB_ListIcon_FullRowSelect)
    EditorGadget(#gadEditor,0,0,0,0)
    SplitterGadget(#gadSplitter,10,10,380,300,#gadListeA,#gadEditor)
    
    ; hors du splitter
    
    ListIconGadget(#gadListeB,10,315,380,125,"col1",100,#PB_ListIcon_FullRowSelect)
    
    ; remplissage des gadgets
    
    AddGadgetColumn(#gadListeA,1,"col2",120)
    AddGadgetColumn(#gadListeA,2,"col3",120)
    AddGadgetColumn(#gadListeB,1,"col2",120)
    AddGadgetColumn(#gadListeB,2,"col3",120)
    
    SetGadgetText(#gadEditor,"ligne1"+Chr(10)+"ligne2"+Chr(10)+"ligne3")
    
    For i=0 To 100
      AddGadgetItem(#gadListeA,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
      AddGadgetItem(#gadListeB,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
    Next

  EndIf
  
EndIf

;------------------------------------

; couleur du listicon dans le splitter

SetColumnColor(#gadListeA,0,$FFFFFF,$808080)
SetColumnColor(#gadListeA,1,$FFFFFF,$008080)
SetColumnColor(#gadListeA,2,$FFFFFF,$000080)
SetRowColor   (#gadListeA,5,$FFFFFF,$00FF00)

; couleur du listicon hors du splitter

;SetColumnColor(#gadListeB,0,$FFFFFF,$000080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeB,1,$FFFFFF,$008080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeB,2,$FFFFFF,$808080)  ; **** décommentez pour voir ***
;SetRowColor   (#gadListeB,5,$FFFFFF,$00FF00)  ; **** décommentez pour voir ***

;------------------------------------

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End
pire encore dans cet exemple :
le splittergadget pose pb - et là je ne sais si purebasic ou ta lib qui provoque un gros bug quand on essaye certains mouvements ds l'interface.

Code : Tout sélectionner

;------------------------------------
;- Bug MoreListIconGadget - SetColumnColor()
;------------------------------------

Enumeration
  
  #gadListeA
  #gadEditor
  #gadSplitter
  
  #gadFrame
  #gadListeB
  
  #gadListeC
  
EndEnumeration

;------------------------------------

If OpenWindow(0,0,0,400,600,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"test")
  
  If CreateGadgetList(WindowID())
    
    ; dans le splitter
    
    ListIconGadget(#gadListeA,0,0,0,0,"col1",120,#PB_ListIcon_FullRowSelect)
    EditorGadget(#gadEditor,0,0,0,0)
    SplitterGadget(#gadSplitter,10,10,380,300,#gadListeA,#gadEditor)
    
    ContainerGadget(#gadFrame,10,315,380,125,#PB_Frame3D_Flat)
    ListIconGadget(#gadListeB,5,5,370,115,"col1",100,#PB_ListIcon_FullRowSelect)
    CloseGadgetList()
    
    ; hors gadget 'contenant'
    
    ListIconGadget(#gadListeC,10,450,380,125,"col1",100,#PB_ListIcon_FullRowSelect)
    
    ; remplissage des gadgets
    
    AddGadgetColumn(#gadListeA,1,"col2",120)
    AddGadgetColumn(#gadListeA,2,"col3",120)
    AddGadgetColumn(#gadListeB,1,"col2",120)
    AddGadgetColumn(#gadListeB,2,"col3",120)
    AddGadgetColumn(#gadListeC,1,"col2",120)
    AddGadgetColumn(#gadListeC,2,"col3",120)
    
    SetGadgetText(#gadEditor,"ligne1"+Chr(10)+"ligne2"+Chr(10)+"ligne3")
    
    For i=0 To 100
      AddGadgetItem(#gadListeA,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
      AddGadgetItem(#gadListeB,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
      AddGadgetItem(#gadListeC,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
    Next

  EndIf
  
EndIf

;------------------------------------

; couleur du listicon dans le splitter

SetColumnColor(#gadListeA,0,$FFFFFF,$808080)
SetColumnColor(#gadListeA,1,$FFFFFF,$008080)
SetColumnColor(#gadListeA,2,$FFFFFF,$000080)
SetRowColor   (#gadListeA,3,$000000,$00FF00)

; couleur du listicon dans le container

;SetColumnColor(#gadListeB,0,$FFFFFF,$000080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeB,1,$FFFFFF,$008080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeB,2,$FFFFFF,$808080)  ; **** décommentez pour voir ***
;SetRowColor   (#gadListeB,4,$000000,$00FF00)  ; **** décommentez pour voir ***

; couleur du listicon hors du splitter

;SetColumnColor(#gadListeC,0,$FFFFFF,$808080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeC,1,$FFFFFF,$008080)  ; **** décommentez pour voir ***
;SetColumnColor(#gadListeC,2,$FFFFFF,$000080)  ; **** décommentez pour voir ***
;SetRowColor   (#gadListeC,5,$000000,$00FF00)  ; **** décommentez pour voir ***

;------------------------------------

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End

Publié : lun. 07/mars/2005 14:33
par Anonyme2
Mercy Flype,

je vais regarder :D

Pour les Panel, je pense que ça ne marche pas, on intercepte pas de la même façon (Merci Erix14 :wink: ), il faudrait que je recode la lib, il ya déjà 63 fichiers asm, ça m'embêterait qu'elle ne fonctionne plus :roll:

Publié : lun. 07/mars/2005 14:38
par Flype
ah tiens on s'est croisé... regarde les exemples 'buggés' ci dessus. :wink:

Publié : lun. 07/mars/2005 19:14
par Anonyme2
FLype,

j'ai corrigé le bug, mes tests semblent être concluants.
Ca fonctionne avec les containergadget, les splittergadget et les panelsgadgets lorsque le niveau d'imbrication est de 1.

je n'ai pas fait de tests si on imbrique des containers dans des panels etc.
Uniquement si une listicongadget ext dans splittergadget ou dans un container ou dans un panelgadget.

C'est déjà ça, ça doit couvrir 90% des utilisations

La lib est au même endroit ici

Publié : mar. 08/mars/2005 7:47
par Flype
raahh merci denis.
je vais regardé de suite...

Publié : mar. 08/mars/2005 9:16
par Flype
yeah ca marche :D

c cool - tu as bien bossé denis :wink:

je vais pouvoir mettre à jour 2dev News en intégrant un SplitterGadget ce qui sera plus joli et pratique...

Publié : mar. 08/mars/2005 10:28
par Anonyme2
Merci Flype :D

Je vais retravailler cette lib depuis le temps.
Je ne sais plus mais si c'est dans la doc mais on peut ajouter un parametre à toutes les commandes qui est le handle d'une font et 0 si on veut revenir à la font système.

voici un exemple avec les font et je viens de trouver un bug avec la commande SetColumnFont (problème de priorité d'affichage, je vais corriger ) mais qui ne plante pas le prog.

J'ai toujours pas trouvé comment augmenter la taille des lignes sans changer le mode de la listicon.

Si quelqu'un a une idée, je prend

Code : Tout sélectionner

;------------------------------------
;SetColumnColor()
;------------------------------------

Enumeration
 
  #gadListeA
  #gadListeB
  #gadEditor
  #gadSplitter
 
EndEnumeration

;------------------------------------

If OpenWindow(0,0,0,400,450,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"test")
 
  If CreateGadgetList(WindowID())
   
    ; dans le splitter
   
    ListIconGadget(#gadListeA,0,0,0,0,"col1",120,#PB_ListIcon_FullRowSelect)
    EditorGadget(#gadEditor,0,0,0,0)
    SplitterGadget(#gadSplitter,10,10,380,300,#gadListeA,#gadEditor)
   
    ; hors du splitter
   
    ListIconGadget(#gadListeB,10,315,380,125,"col1",100,#PB_ListIcon_FullRowSelect)
   a$ = Space(256)
    GetClassName_(GetParent_(GadgetID(#gadListeA)), a$, 256)
   Debug a$
    
    GetClassName_(GetParent_(GadgetID(#gadListeB)), a$, 256)
   Debug a$
    ; remplissage des gadgets
   
    AddGadgetColumn(#gadListeA,1,"col2",120)
    AddGadgetColumn(#gadListeA,2,"col3",120)
    AddGadgetColumn(#gadListeB,1,"col2",120)
    AddGadgetColumn(#gadListeB,2,"col3",120)
   
    SetGadgetText(#gadEditor,"ligne1"+Chr(10)+"ligne2"+Chr(10)+"ligne3")
   
    For i=0 To 100
      AddGadgetItem(#gadListeA,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
      AddGadgetItem(#gadListeB,-1,"test"+Str(i)+Chr(10)+"test"+Chr(10)+"test")
    Next

  EndIf
 
EndIf

;------------------------------------

FontGras   = LoadFont(1000, "Verdana", 9, #PB_Font_HighQuality| #PB_Font_Bold )
FontItalic = LoadFont(1001, "Verdana", 9, #PB_Font_HighQuality| #PB_Font_Italic )
FontGI     = LoadFont(1002, "Verdana", 9, #PB_Font_HighQuality| #PB_Font_Italic| #PB_Font_Bold  )
FontBig    = LoadFont(1003, "Verdana", 11, #PB_Font_HighQuality )


; couleur du listicon dans le splitter

 SetColumnColor(#gadListeA,0,$FFFFFF,$808080, FontGras)
 SetColumnColor(#gadListeA,1,$FFFFFF,$008080, FontItalic)
 SetColumnColor(#gadListeA,2,$FFFFFF,$000080)
 SetRowColor   (#gadListeA,5,$FFFFFF,$00FF00, FontGI)
 SetColumnFont(#gadListeA, 2, FontBig)

; couleur du listicon hors du splitter

SetColumnColor(#gadListeB,0,$FFFFFF,$000080)
SetColumnColor(#gadListeB,1,$FFFFFF,$008080)
SetColumnColor(#gadListeB,2,$FFFFFF,$808080)
SetRowColor   (#gadListeB,5,$FFFFFF,$00FF00)

;------------------------------------

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End 

Publié : mar. 08/mars/2005 20:04
par Flype
tiens c marrant que tu en parles...

le parametre 'font' je m'en étais apercu grace à jaPBe qui affiche la syntaxe des fonctions en bas.
et je m'en sert meme dans mon programme du boulot...
et je confirme c'est pas ds la doc.

Publié : mar. 08/mars/2005 20:07
par Anonyme2
Je vais mettre à jour tout ça un de ces 4 matins :D