Page 1 sur 1

[OK] ExplorerListGadget et couleur...

Publié : ven. 16/avr./2010 8:45
par Ar-S
Y'a t il un moyen de colorer uniquement la ou les lignes des fichiers sélectionnés dans un explorerlistgadget ?

Code : Tout sélectionner

Enumeration
  #Window_0 : #Explorer : #Editor_1
EndEnumeration

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 669, 213, 400, 400, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ExplorerListGadget(#Explorer, 0, 0, 390, 310, "c:\", #PB_Explorer_AlwaysShowSelection|#PB_Explorer_GridLines|#PB_Explorer_HeaderDragDrop|#PB_Explorer_NoDirectoryChange|#PB_Explorer_NoDriveRequester|#PB_Explorer_NoFolders)
    EditorGadget(#Editor_1, 5, 315, 380, 75, #PB_Editor_ReadOnly)
  EndIf
EndProcedure

Procedure ListExplorer()
  NewRep$=GetGadgetText(#Explorer)
  
  Select EventType()
    Case #PB_EventType_LeftClick  
      NumF=GetGadgetState(#Explorer)
      NomF$=GetGadgetItemText(#Explorer,NumF)
      Type = GetGadgetItemState(#Explorer, NumF)
      
      If Type = 5 ; si c'est un fichier
        NomFS$=GetGadgetItemText(#Explorer,NumF)
        SetGadgetText(#Editor_1,NomF$)
        ;SetGadgetColor(#Explorer,#PB_Gadget_BackColor ,#Green) ; ??? Que mettre ici
      EndIf
  EndSelect
  
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Explorer
          ListExplorer()
          
        Case #Editor_1
      EndSelect

    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Window_0
          CloseWindow(#Window_0)
          Break
      EndSelect
  EndSelect
ForEver

Re: ExplorerListGadget et couleur...

Publié : jeu. 22/avr./2010 10:13
par Geo Trouvpatou
Salut.

Je ne t'aiderais hélas pas mais plutôt que de mettre :

Code : Tout sélectionner

If Type = 5 ; si c'est un fichier
Pourquoi ne pas mettre :

Code : Tout sélectionner

If Type = #PB_Explorer_File | #PB_Explorer_Selected
qui est plus explicite et où il n'est même plus la peine de commenter son code.

Ceci étant, je reste caché à l'affût d'une réponse :mrgreen:.
Bye

Re: ExplorerListGadget et couleur...

Publié : lun. 26/avr./2010 17:26
par Ar-S
Geo Trouvpatou a écrit :Salut.

Je ne t'aiderais hélas pas mais plutôt que de mettre :

Code : Tout sélectionner

If Type = 5 ; si c'est un fichier
Pourquoi ne pas mettre :

Code : Tout sélectionner

If Type = #PB_Explorer_File | #PB_Explorer_Selected
qui est plus explicite et où il n'est même plus la peine de commenter son code.
Parce que même avec un commentaire, c'est moins long à écrire :D
Ceci étant, je reste caché à l'affût d'une réponse :mrgreen:.
Bye
:mrgreen:

Re: ExplorerListGadget et couleur...

Publié : lun. 26/avr./2010 21:45
par boddhi
Salut Ar-S

Une réponse (partielle peut-être) à ta demande...

Code : Tout sélectionner

;SetGadgetColor(#Explorer,#PB_Gadget_BackColor ,#Green) ; ??? Que mettre ici
SendMessage_(GadgetID(#Explorer),#LVM_SETTEXTBKCOLOR,0,RGB(255,255,0))
Il faudra peut-être gérer en parallèle les lignes déselectionnées...

Re: ExplorerListGadget et couleur...

Publié : lun. 26/avr./2010 22:14
par GeBonet
Bonsoir,
A tout hasard, il y a l'excellente librairie de Gnozal : "PureCOLOR_SetGadgetColor()"
Et toute ses autres combinaisons... :
PureCOLOR_SetGadgetColor
PureCOLOR_SetGadgetColorEx
PureCOLOR_GetGadgetColor
PureCOLOR_ClearGadgetColor
PureCOLOR_SetButtonColor
PureCOLOR_SetIconButton
PureCOLOR_SetIconToggleButton
PureCOLOR_GetButtonColor
PureCOLOR_ClearButtonColor
PureCOLOR_SetCellColor
PureCOLOR_GetCellColor
PureCOLOR_ClearCellColor
PureCOLOR_SetCellColorCallback
PureCOLOR_ResetCellColorCallback
PureCOLOR_SetColumnColor
PureCOLOR_ClearColumnColor
PureCOLOR_SetRowColor
PureCOLOR_ClearRowColor
PureCOLOR_SetTreeItemColor
PureCOLOR_ClearTreeItemColor
PureCOLOR_SetColumnHeaderColor
PureCOLOR_ClearColumnHeaderColor
PureCOLOR_ClearAllColorsForGadget
PureCOLOR_ClearAllGadgetColors
PureCOLOR_ClearAllButtonColors
PureCOLOR_SetWindowColor
PureCOLOR_ClearWindowColor
PureCOLOR_RedrawGadgetAfterColor
PureCOLOR_MenuItem
PureCOLOR_SetMenuItemText
PureCOLOR_GetMenuItemText
PureCOLOR_ActivateColoredMenu
PureCOLOR_ActivateColoredPopUpMenu
PureCOLOR_SetMenuOptions
PureCOLOR_SetOfficeStyle
PureCOLOR_SetPopUpOfficeStyle
PureCOLOR_SetMenuItemSelectionCallback
PureCOLOR_SetPopupMenuBackColor
PureCOLOR_FreeMenu
PureCOLOR_FreePopUpMenu
PureCOLOR_Version
Mais bon... Est-ce que cela suffira :roll:
A++

Re: ExplorerListGadget et couleur...

Publié : lun. 26/avr./2010 23:13
par boddhi
Je crois me souvenir que cette lib ne gère pas les couleurs pour ce type de gadgets... tout du moins ligne par ligne...

Re: ExplorerListGadget et couleur...

Publié : mar. 27/avr./2010 8:13
par GeBonet
Il faut essayer... Et il me semble que si ! Voir les exemples et celui-ci en particulier
dans le cas d'une ligne, d'une cellule etc. !

Code : Tout sélectionner

; -------------------------------------------
;
;           PureCOLOR test file 14
;
; -------------------------------------------
;
FontID = LoadFont(0, "Courier New", 9, #PB_Font_Bold)
;
Procedure MyCellColorCallback(GadgetNumber.l, CellRow.l, CellColumn.l, *TextColor.Long, *BackColor.Long, *FontID.Long)
  Shared FontID
  If GadgetNumber = 1
    CellText.s = GetGadgetItemText(GadgetNumber, CellRow, CellColumn)
    Debug Str(CellRow) + ":" + Str(CellColumn) + ">" + CellText
    Select CellText
      Case "Red"
        *TextColor\l = #Red
        Debug "-> Red"
      Case "Blue"
        *BackColor\l = #Blue
        *TextColor\l = #White
        Debug "-> Blue"
      Case "Green"
        *TextColor\l = #Green
        Debug "-> Green"
      Default
        *FontID\l = FontID
        Debug "-> Font"
    EndSelect
  EndIf
EndProcedure
; Create Window
OpenWindow(0, 100, 300, 400, 200, "PureCOLOR test : cell callback demo", #PB_Window_SystemMenu) 
  ListIconGadget(1, 1, 1, 300, 160, "0", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  ;
  AddGadgetColumn(1, 1, "1", 100)
  AddGadgetColumn(1, 2, "2", 100)
  AddGadgetItem(1, -1, "0:0" + Chr(10) + "0:1" + Chr(10) + "Red")
  AddGadgetItem(1, -1, "1:0" + Chr(10) + "1:1" + Chr(10) + "1:2")
  AddGadgetItem(1, -1, "Blue" + Chr(10) + "Green" + Chr(10) + "2:2")
  AddGadgetItem(1, -1, "3:0" + Chr(10) + "Red" + Chr(10) + "3:2")
  AddGadgetItem(1, -1, "Red" + Chr(10) + "4:1" + Chr(10) + "Red")
  AddGadgetItem(1, -1, "Green" + Chr(10) + "Blue" + Chr(10) + "5:2")
  AddGadgetItem(1, -1, "6:0" + Chr(10) + "6:1" + Chr(10) + "6:2")
  AddGadgetItem(1, -1, "Red" + Chr(10) + "Blue" + Chr(10) + "7:2")
PureCOLOR_SetCellColorCallback(0, @MyCellColorCallback())
Repeat
  EventID.l = WaitWindowEvent()
  If EventID = #PB_Event_CloseWindow 
    Break
  EndIf
ForEver
;
End
Et il y a 15 exemples déclinant cette librairie sous toutes ses formes ou presque :?
ATTENTION : Il faut la Lib pour que ceci marche :? :wink:
Voilà..

Re: ExplorerListGadget et couleur...

Publié : mar. 27/avr./2010 11:34
par Ar-S
@boddhi
Merci, intéressante façon d'utiliser encore une fois SendMessage_
ça marche, même un peu trop bien, car en cliquant sur un intitulé de colonne par exemple, tout se colore.

@GeBonet
Tiens j'avais loupé ça de la PureColor.
PureCOLOR_SetCellColor qui fonctionne effectivement :D

Code : Tout sélectionner

PureCOLOR_SetCellColor(1, ligne, colonne, Random($FFFFFF), Random($FFFFFF))
Super :)