PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » ListIconGadget разные иконки в разных столбцах


ListIconGadget разные иконки в разных столбцах

Сообщений 1 страница 5 из 5

1

Всех приветствую!

Есть задача разместить в ListIconGadget разные значки в разных колонках.
Рисую картинки, помещаю в список, в итоге в первой колонке отображаются, а в остальные не могу поместить значки.
Как я думаю, что-то со вставкой SUBITEM в ListIconGadget.
Гляньте код, а то я сам уже не догоняю в чем дело  %-)

За ранее спасибо!

Код:
Enumeration
  #MainWindow  
EndEnumeration

Enumeration
  #MC_red
  #MC_blue
  #MC_green
EndEnumeration

;{ рисуем три иконки
;  красный
color=$0000ff
CreateImage(#MC_red,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_red))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()

;  синий
color=$ff0000
CreateImage(#MC_blue,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_blue))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()

;  зеленый
color=$008000
CreateImage(#MC_green,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_green))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()
;}

Hwnd = ImageList_Create_(16,16,#ILC_COLOR32|#ILC_MASK, 0, 100)

; помещаем в список
ImageList_Add_(Hwnd, ImageID(#MC_red), 0)   ; 0
ImageList_Add_(Hwnd, ImageID(#MC_blue), 0)  ; 1
ImageList_Add_(Hwnd, ImageID(#MC_green), 0) ; 2

If OpenWindow(#MainWindow,0,0,405,300,"Окно",#PB_Window_ScreenCentered |#PB_Window_SystemMenu)  
  ; собственно ListIconGadget
  LIG=ListIconGadget(#PB_Any,20,20,365,260,"Колонка 1", 120 ,#PB_ListIcon_MultiSelect|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
  AddGadgetColumn(LIG, 1, "Колонка 2",120) 
  AddGadgetColumn(LIG, 2, "Колонка 3",120) 
  
  SendMessage_(GadgetID(LIG), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd)
  
  For i = 0 To 2
    
    AddGadgetItem(LIG, -1, ""+Chr(10)+ "abc"+Chr(10)+"def")
    
    ; структура с параметрами
    Var.lv_item    
    Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
    Var\iItem    = i  ; номер строки
    Var\iSubItem = 0  ; номер колонки
    Var\pszText  = @""; замена текста
    Var\iImage   = i  ; номер картинки в списке      
    
    ; первая колонка
    SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var) 
    
    ; вторая колонка не рисуется...
    Var\iSubItem = 1
    Var\iImage   = 1
    SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var)     
    
  Next i  
EndIf 

Repeat 
  Select WaitWindowEvent()      
    Case #PB_Event_CloseWindow 
      Quit = 1 
  EndSelect  
Until Quit 
End

Отредактировано nolnolsem (18.01.2013 17:10:57)

0

2

nolnolsem написал(а):

я сам уже не догоняю

Забыл расширенный стиль установить.

Код:
Enumeration
  #MainWindow  
EndEnumeration

Enumeration
  #MC_red
  #MC_blue
  #MC_green
EndEnumeration

;{ рисуем три иконки
;  красный
color=$0000ff
CreateImage(#MC_red,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_red))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()

;  синий
color=$ff0000
CreateImage(#MC_blue,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_blue))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()

;  зеленый
color=$008000
CreateImage(#MC_green,16,16,32|#PB_Image_Transparent) 
StartDrawing(ImageOutput(#MC_green))
Box(0,0,16,16,RGB(255,255,255))
LineXY(8,4,12,8,color)
LineXY(12,8,8,12,color)
LineXY(8,12,4,8,color)
LineXY(4,8,8,4,color)
FillArea(8,8,-1,color) 
StopDrawing()
;}

Hwnd = ImageList_Create_(16,16,#ILC_COLOR32|#ILC_MASK, 0, 100)

; помещаем в список
ImageList_Add_(Hwnd, ImageID(#MC_red), 0)   ; 0
ImageList_Add_(Hwnd, ImageID(#MC_blue), 0)  ; 1
ImageList_Add_(Hwnd, ImageID(#MC_green), 0) ; 2

If OpenWindow(#MainWindow,0,0,405,300,"Окно",#PB_Window_ScreenCentered |#PB_Window_SystemMenu)  
  ; собственно ListIconGadget
  LIG=ListIconGadget(#PB_Any,20,20,365,260,"Колонка 1", 120 ,#PB_ListIcon_MultiSelect|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
  AddGadgetColumn(LIG, 1, "Колонка 2",120) 
  AddGadgetColumn(LIG, 2, "Колонка 3",120) 
  
  SendMessage_(GadgetID(LIG), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd)
  SendMessage_(GadgetID(LIG), #LVM_SETEXTENDEDLISTVIEWSTYLE , #LVS_EX_SUBITEMIMAGES, #LVS_EX_SUBITEMIMAGES)
  Var.lv_item 
  For i = 0 To 2
    
    AddGadgetItem(LIG, -1, ""+Chr(10)+ "abc"+Chr(10)+"def")
    
    ; структура с параметрами
       
    Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
    Var\iItem    = i  ; номер строки
    Var\iSubItem = 0  ; номер колонки
    Var\pszText  = @""; замена текста
    Var\iImage   = i  ; номер картинки в списке      
    
    ; первая колонка
    SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var) 
  Next i  
  
  For i = 0 To 2
  ; структура с параметрами
        
    Var\mask     = #LVIF_IMAGE | #LVIF_TEXT
    Var\iItem    = i  ; номер строки
    Var\iSubItem = 1  ; номер колонки
    Var\pszText  = @""; замена текста
    Var\iImage   = i  ; номер картинки в списке    
     SendMessage_(GadgetID(LIG), #LVM_SETITEM, 0, @Var) 
  Next
  
EndIf 

Repeat 
  Select WaitWindowEvent()      
    Case #PB_Event_CloseWindow 
      Quit = 1 
  EndSelect  
Until Quit 
End

0

3

Точно )))
Спасибо!

0

4

А есть такой же пример но для заголовка колонки?
http://s17.postimg.org/9nyoe0533/Sys_List_View32.png

0

5

Пример. http://www.purearea.net/pb/CodeArchiv/G … tArrows.pb

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » ListIconGadget разные иконки в разных столбцах