David,
You had mentioned a huge list, besides the dictionary I mentioned. If you
have a list no longer than 999 items per level, you can have 1000 lists of 1000
items and that would ring the number to one million. As I did below, when doing
a mod and coming up with 0 if mod 1000 you are at the top of a sub level if the
result is 0. And if you divide by 1000 you get the value from 0 to 999 of the
column number, using 0 as the base value.
So, you can have a million items, or 999 items inside of 999 columns. So,
you have lots of data possible.
Below are the tree view events which also look at the ID tag I made for the
data and the mod function is used based on the sub level.
I commented out some test stuff while making the checks. Also at the end
before the Main Proc select statements I exit if the treeview events are
triggered.
Function MainDialogProc(dObj, dEvent, dId, dControl)
' The main menu for the Uninstall program.
' Below are all the events to watch to make any changes.
' First we must notify the event queue that no event processing has taken
place.
MainDialogProc = False
' Speak " dId: " & dId
' Speak " dId: " & dId
' Speak " dEvent: " & dEvent
If dEvent = treeviewKeyDown Then
' Set TV_Obj = myMainDialog
TV_KeyDown = True
myTV_KeyConnection = ConnectEvent( Keyboard, "OnKeyProcessedUp",
"OnKeyProcessedUp")
End If
If dEvent = treeviewClicked Then
' Set TV_Obj = myMainDialog
TV_MouseDown = True
myTV_MouseConnection = ConnectEvent( Mouse, "OnButtonUp", "OnButtonUp")
End If
If dEvent = treeviewSelectionChange Or dEvent = treeviewClicked Then 'Or
dEvent = treeviewItemExpanded Then
Set TV_Obj = dControl.selected
Set TV_ObjControl = dControl
TV_Name = TV_Obj.Text
TV_Data = TV_Obj.Data
' Store all data into an array for later use:
TV_Array(1) = TV_Data
If TV_Data < 1000 Then
TV_Array(0) = " Program Name: " & TV_Name
If TV_Data > 0 Then myMainDialog.Control( "btn_add").Enabled = True
If TV_Data > 1 Then myMainDialog.Control( "btn_delete").Enabled = True
' Only use this if you want to expand the item when selected.
If TV_Data = 0 Then
If Not TV_Obj.Expanded Then TV_Obj.Expanded = True
Set TV_Items = TV_Obj.Children
'Speak " Item: " & TV_Items.Item(1).Text, speakerVoice
TV_Items.Item(1).ScrollTo
TV_Items.Item(1).Selected = True
End If
Else
'TV_Data > 1000
myMainDialog.Control( "btn_add").Enabled = False
myMainDialog.Control( "btn_delete").Enabled = False
'Note: this is the top of the sub level, or first node in a branch, a parent.
' So to get any sub level you have to get's it children.
' If not the parent, find the parent to get that child.
If TV_Data Mod 1000 = 0 Then
Set TV_Items = TV_Obj.Children
Else
Set TV_Items = TV_Obj.ParentItem.Children
End If
' Assuming the name is second child.
' The call below is referencing a known position, in a fixed list of known
items.
Set TV_ItemsChild = TV_Items.Item( TV_DisplayNameItemNum)
TV_Array(0) = TV_ItemsChild.Text
' Fetch the property count.
TV_Count = TV_Items.Count
' Fetch the name of item selected.
If TV_Data Mod 1000 > 0 Then Set TV_ItemsChild = TV_Items.Item( TV_Data Mod
1000)
TV_Name = TV_ItemsChild.Text
' Fetch the uninstall program in position 6.
Set TV_ItemsChild = TV_Items.Item( TV_UninstallItemNum)
TV_UnInstall = TV_ItemsChild.Text
TV_Array(2) = TV_UnInstall
' Fetch the quiet uninstall program in position 7.
Set TV_ItemsChild = TV_Items.Item( TV_QuietUninstallItemNum)
TV_QuietUnInstall = TV_ItemsChild.Text
TV_Array(3) = TV_QuietUnInstall
'Speak " Uninstall: " & TV_Array(2) & " quiet: " & TV_Array(3), speakerVoice
' Set the UnInstall and QuietUninstall buttons to enabled.
If TV_UnInstall <> "" Then
myMainDialog.Control( "btn_uninstall").Enabled = True
Else
myMainDialog.Control( "btn_uninstall").Enabled = False
End If
If TV_QuietUnInstall <> "" Then
myMainDialog.Control( "btn_quietuninstall").Enabled = True
Else
myMainDialog.Control( "btn_quietuninstall").Enabled = False
End If
End If
' Only use this if you want to expand the item when selected.
If dEvent = treeviewClicked And TV_Data Mod 1000 = 0 Then TV_Obj.Expanded =
Not TV_Obj.Expanded
dControl.selected.ScrollTo
dControl.Visible = True
MainDialogProc = True
Exit Function
End If
If dEvent = treeviewClicked Or dEvent = treeviewKeyDown or dEvent =
treeviewSelectionChanging Or dEvent = treeviewItemExpanded Then
MainDialogProc = True
Exit Function
End If