PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как определить номер строки в ListIcon в которой кликнут CheckBox?


Как определить номер строки в ListIcon в которой кликнут CheckBox?

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

1

есть
ListIconGadget(#ListIcon_0, 8, 60, 660, 332, "", 100, #PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines)

Как определить номер строки в ListIcon  в которой кликнут CheckBox не выделяя строку?
Да она и не выделяется.
Если пробовать так то nItem всегда -1

Код:

 Case #ListIcon_0
   If EventType=#PB_EventType_Change
      nItem=GetGadgetState(#ListIcon_0)
      Debug "column index="+Str(nItem)
      Debug "EventType="+Str(#PB_EventType_Change)
      If Not (nItem=-1)
         Debug "GetGadgetItemState(#ListIcon_0, nItem)="+Str(GetGadgetItemState(#ListIcon_0, nItem))
         Debug GetGadgetItemState(#ListIcon_0, nItem)&#PB_ListIcon_Checked
         If GetGadgetItemState(#ListIcon_0, nItem)&#PB_ListIcon_Checked
            SetGadgetItemColor(#ListIcon_0, nItem, #PB_Gadget_BackColor, #Yellow , 1)
         Else
            SetGadgetItemColor(#ListIcon_0, nItem, #PB_Gadget_BackColor, #PB_Default, 1)
         EndIf
      EndIf
   EndIf
   Debug "== CheckBoxes =="
   For i=0 To CountGadgetItems(#ListIcon_0)-1
      Debug GetGadgetItemState(#ListIcon_0, i)
   Next

0

2

Код:
; English forum: http://www.purebasic.fr/english/viewtopic.php?t=14457&highlight=
; Author: Sparkie (updated for PB 4.00 by Andre)
; Date: 20. March 2005
; OS: Windows
; Demo: Yes


; ListIcon - realtime detection of the state of a checkbox when an item 
; becomes checked or unchecked.

#LVN_ITEMCHANGED = #LVN_FIRST-1 
#MyWindow = 0 
#MyGadget = 1 
Procedure myWindowCallback(hWnd, msg, wParam, lParam) 
  result = #PB_ProcessPureBasicEvents 
  Select msg 
    Case #WM_NOTIFY 
      *pnmhdr.NMHDR = lParam 
      Select *pnmhdr\code 
        Case #LVN_ITEMCHANGED 
          *lvChange.NMLISTVIEW = lParam 
          Debug *lvChange\uNewState >>12 &$FFFF 
          ;--> Read the State image mask value ( 1 = un-checked   2 = checked )
          Select *lvChange\uNewState >>12 &$FFFF 
            Case 1 
              StatusBarText(0, 0, "Item " + Str(*lvChange\iItem) + " has been un-checked") 
            Case 2 
              StatusBarText(0, 0, "Item " + Str(*lvChange\iItem) + " has been checked") 
          EndSelect 
      EndSelect 
  EndSelect 
  ProcedureReturn result 
EndProcedure 
If OpenWindow(#MyWindow, 100, 100, 350, 140, "ListIcon Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(#MyWindow)) 
  CreateStatusBar(0, WindowID(#MyWindow)) 
  AddStatusBarField(#PB_Ignore)
  ListIconGadget(#MyGadget, 5, 5, 340, 110, "Name", 100, #PB_ListIcon_CheckBoxes | #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection) 
  AddGadgetColumn(#MyGadget, 1, "Address", 250) 
  AddGadgetItem(#MyGadget, -1, "Harry Rannit" + Chr(10) + "12 Parliament Way, Battle Street, By the Bay") 
  AddGadgetItem(#MyGadget, -1, "Ginger Brokeit" + Chr(10) + "130 PureBasic Road, BigTown, CodeCity") 
  SetWindowCallback(@myWindowCallback()) 
  Repeat 
    Event = WaitWindowEvent() 
  Until Event = #PB_Event_CloseWindow 
EndIf 

0

3

Спасибо. Заработало.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Как определить номер строки в ListIcon в которой кликнут CheckBox?