gambas-source-code/app/examples/Control/TreeView/.src/TreeViewExample.class
2019-05-21 09:02:05 +03:00

184 lines
4.1 KiB
Text

' Gambas class file
Public intEventNumber As Integer
Public Sub Form_Open()
Dim picMale As Picture
Dim picFemale As Picture
picFemale = Picture["Female.png"]
picMale = Picture["Male.png"]
'This will populate our treeview with our starting entries
'Note: I'll just keep the entries text and its key the same to keep it simple
TreeView1.Add(("Bill"), ("Bill"), picMale)
TreeView1.Add(("Ted"), ("Ted"), picMale, ("Bill"))
TreeView1.Add(("Sally"), ("Sally"), picFemale, ("Bill"))
TreeView1.Add(("Frank"), ("Frank"), picMale, ("Sally"))
'TreeView1.MoveCurrent
'TreeView1.Item.Selected = TRUE
'TreeView1.Item.Expanded = TRUE
TreeView1[("Bill")].Expanded = True
End
Private Sub RefreshInfo()
'This little check just updates our label so that we know how many
'children an entry has.
Dim sText As String
If Not TreeView1.Current Then
Textlabel1.Text = ""
Return
Endif
With TreeView1.Current
If .Children > 1 Then
sText = Subst(("&1 has &2 children."), .Text, .Children)
Else If .Children = 0 Then
sText = Subst(("&1 has no children."), .Text)
Else
sText = Subst(("&1 has 1 child."), .Text)
End If
sText &= "<br>" & ("Item rect is") & " (" & .X & "," & .Y & "," & .W & "," & .H & ")"
End With
TextLabel1.Text = sText
End
Public Sub TreeView1_Click()
'This just updates our event stack
AddLog(("Click"))
End
Public Sub Button1_Click()
Dim sIcon As String
Dim sParent As String
If Textbox1.Text <> Null Then
If RadioButton1.Value Then
sIcon = "Male.png"
Else
sIcon = "Female.png"
End If
'Gets the parent item: the current item, or nothing is the treeview is void
sParent = TreeView1.Key
'Now we will add a new entry with a key and a name of what was in the text box
'We will place it as a child of the currently selected entry
TreeView1.Add(Textbox1.Text, Textbox1.Text, Picture[sIcon], sParent).EnsureVisible
TreeView1.Item.EnsureVisible 'This will make sure that the item we just added to the list is in the visable area of the control. (Scrolling if necessary)
TextBox1.Text = "" 'This empties out textbox
RefreshInfo ' This will update our label and reflect the new number of kids
End If
End
Public Sub Button2_Click()
If Not TreeView1.Key Then Return
'Lets remove the current cursor item
TreeView1.Remove(TreeView1.Key)
'Now move the cursor to the current item (since we are now pointing at a deleted item)
'But first we check the count to make sure we didn't delete the last item in the list
'if we did then we obviously don't run this part.
If TreeView1.Count > 0 Then
'TreeView1.MoveCurrent
'This selects or 'highlights' our current item
'TreeView1.Current.Selected = TRUE
'This will update our label and reflect the new number of kids
RefreshInfo
End If
End
Public Sub TreeView1_Collapse()
'This just updates our event stack
AddLog(("Collapse"))
End
Public Sub TreeView1_DblClick()
'This just updates our event stack
AddLog(("DblClick"))
End
Public Sub TreeView1_Select()
'This just updates our event stack
RefreshInfo
AddLog(("Select"))
End
Public Sub TreeView1_Delete()
'This just updates our event stack
AddLog(("Delete"))
End
Public Sub TreeView1_Expand()
'This just updates our event stack
AddLog(("Expand"))
End
Public Sub Button3_Click()
TextArea1.Text = ""
'IntEventNumber = 0
End
Public Sub About_Click()
Message.Info(("TreeView example written by C. Packard and Fabien Hutrel."))
End
Public Sub TreeView1_Activate()
'This just updates our event stack
AddLog(("Activate"))
End
Public Sub TreeView1_Rename()
'This just updates our event stack
AddLog(("Rename"))
End
Private Sub AddLog(anevent As String)
'This updates our event stack, this sub is used by all events... it display the current node key.
Dim sKey As String
Try sKey = TreeView1.Item.Key
TextArea1.Text = ("Event") & "(" & intEventNumber & "): " & anevent & " " & ("Item:") & " '" & sKey & "'\n" & TextArea1.Text
TextArea1.Pos = 0
Inc intEventNumber
End
Public Sub TreeView1_Cancel()
AddLog(("Cancel"))
End