ScreenShot
' Demonstration of the MGCELView object by Mark Gamber
' Written using NS Basic. Don't forget to copy the image
' files from the doc directory to the device root ("\")
' before running this program if you want to see them!

' View property values
lvIcon = 0
lvReport = 1
lvSmallIcon = 2
lvList = 3

' ImageLists values
lvSmallImages = 1
lvLargeImages = 2
lvHeaderImages = 4

' Selection values
lvMultipleSelection = 0
lvSingleSelection = 1
lvSelectOnFocus = 0
lvAlwaysSelect = 1

' Sort values
lvSortAscending = 1
lvSortDescending = -1
lvNoSort = 0

' Add and initialize listview control
addobject "MGCEListView.ListView", "LView", 10, 10, 303, 160
addobject "Label", "Label", 10, 170, 400, 18

LView.Border = 1                                          ' We want a border
LView.View = lvReport                                   ' Start out in report view
LView.Selection = lvMultipleSelection             ' Allow multiple selections
LView.SelectionDisplay = lvAlwaysSelect       ' Always display selection
LView.Sort = lvSortAscending                        ' Sort in ascending order
LView.EditItems = 1                                      ' Allow user to edit items

' Add some images to the listview image lists
LView.AddSmImage "\smimg1.bmp"                ' Add a couple small images
LView.AddSmImage "\smimg2.bmp"
LView.AddLgImage "\lgimg1.bmp"                   ' Add a couple large images
LView.AddLgImage "\lgimg2.bmp"

' Specify that we want to use small and large images plus images on the header
LView.ImageLists = lvSmallImages + lvLargeImages + lvHeaderImages

' Add three columns, each 100 pixels wide with no image
LView.InsertColumn 1, "Column 1", 100, 0
LView.InsertColumn 2, "Column 2", 100, 0
LView.InsertColumn 3, "Column 3", 100, 0

LView.InsertItem 1, "Item 1", 1, 0          ' Add a listview item
LView.SetItem 1, 2, "Subitem 1", 1, 0   ' Add two subitems to the item
LView.SetItem 1, 3, "Subitem 2", 2, 0
LView.InsertItem 2, "Item 2", 1, 0          ' Add a second item
LView.SetItem 2, 2, "Subitem 1", 0, 0
LView.SetItem 2, 3, "Subitem 2", 0, 0
LView.InsertItem 3, "Item 3", 2, 0          ' And a third
LView.SetItem 3, 2, "Subitem 1", 0, 0
LView.SetItem 3, 3, "Subitem 2", 0, 0   ' Should have a 3x3 grid now

'  Display the different views
MsgBox "This is the Report View"
LView.View = lvIcon
MsgBox "Now it's the Icon View"
LView.View = lvSmallIcon
MsgBox "And the Small Icon view"
LView.View = lvList
MsgBox "And finally the List View"
LView.View = lvReport

' Show checkboxes
LView.Checkboxes = 1
MsgBox "With Checkboxes"
LView.Checkboxes = 0

' Show gridlines
LView.GridLines = 1
MsgBox "With Grid Lines"
LView.GridLines = 0

' Enable full row selection
LView.FullRowSelect = 1
MsgBox "Full row selection is enabled"

MsgBox "There are " & CStr( LView.Count ) & " items in the object (not including subitems)"

LView.Select( 1 ) = 1
MsgBox "The first item has been selected"

LView.Select( 2 ) = 1
MsgBox "And now the second item (note: multiple selection is ON)"
MsgBox "Which means " & CStr( LView.SelectedCount ) & " items are selected"

LView.Select( 1 ) = 0
LView.Select( 2 ) = 0

LView.BackColor = ( 255 * 256 ) + 255
LView.TextColor = 128 * 65536
MsgBox "Can you take blue text on yellow?"
LView.BackColor = ( 255 * 65536 ) + ( 255 * 256 ) + 255
LView.TextColor = 0
MsgBox "Neither can I"

MsgBox "Column 1 is " & CStr( LView.ColumnWidth( 1 ) ) & " pixels wide"
LView.ColumnWidth( 1 ) = 80
MsgBox "Now it's " & CStr( LView.ColumnWidth( 1 ) ) & " pixels wide"

LView.SetColumn 1, "New Text", 80, 0
ColOrder  = LView.ColumnOrder
iCols = UBound( ColOrder )
s = "There are " & CStr( iCols ) & " columns in the order of "
for i = 1 to iCols
   s = s & ColOrder( i )
   if i <> iCols then s = s & ","
next
MsgBox s

ColOrder = Array( 3, 2, 1 )
LView.ColumnOrder = ColOrder
MsgBox "And now they're in the order of 3,2,1"

ColOrder = Array( 1, 2, 3 )
LView.ColumnOrder = ColOrder
MsgBox "And Back to 1, 2, 3"

i = LView.FindText( 1, "Item 2" )
MsgBox "'Item 2' found as position " & CStr( i )

sub LView_ColumnClick( iCol )
   MsgBox "Column " & CStr( iCol ) & " was clicked"
end sub

sub LView_ItemActivate( iItem, iSubItem )
   MsgBox "Item " & CStr( iSubItem ) & " in row " & CStr( iItem ) & " was double-clicked"
end sub

sub  LView_ItemClick( iItem, iSubItem )
   s = LView.ItemText( iItem, iSubItem )
   i = LView.ItemImage( iItem, iSubItem )
   v = LView.ItemValue( iItem, iSubItem )
   o = "Item:" & CStr( iItem ) & ", Subitem:" & CStr( iSubItem )
   o = o & ", Image:" & CStr( i ) & ", Value:" & CStr( v ) & ", Text:" & s
   Label.Caption = o
end sub

sub LView_EndEdit( iItem, iSubItem, sText )
   if sText <> "" then
      MsgBox "Item " & CStr( iSubItem ) & " in row " & CStr( iItem ) & " wants to be " & sText
      LView.ItemText( iItem, iSubItem ) = sText
   else
      MsgBox "The edit either had no change or was cancelled"
   end if
end sub

sub LView_Keypress( lKey )
   MsgBox "Key " & Chr( lKey ) & " was pressed"
   LView.SetFocus
end sub