Uživatelské formuláře v iLogic makrech Inventoru standardně neumožňují výběr více položek najednou. Chování standardního dialogu InputListbox vycházejícího ze systémových dialogů Windows si ale můžete upravit a doplnit možnost vícenásobného výběru.
Položky vybíráte a výběr rušíte prostým kliknutím myší. Pokud je položek hodně a preferujete vícenásobný výběr se stiskem Ctrl nebo Shift, zvolte metodu MultiExtended naznačenou v kódu makra.
Příklad nově vytvořené definice formuláře MultiSelectListBox a příklad jeho použití najdete v následujícím iLogic předpisu:
'multi-selection form for iLogic (www.cadforum.cz)
Sub Main
'set the selection options
Dim oList As New List(Of String) From {"Option 1", "Option 2", "Option 3", "Option 4" }
'or: oList.Add("Option 5")
'perform multiselect
Dim SelectedItems As List(Of String) = MultiSelectListBox("Select multiple", oList, Nothing, "Multi-Select InputListBox", "Option list")
'process selection(s)
If SelectedItems.Count > 0 Then
sSelections = ""
For Each Item In SelectedItems
sSelections = sSelections & vbCrLf & Item.ToString
Next
MessageBox.Show("You selected: " & sSelections, "Selected", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Else
MessageBox.Show("Nothing was selected", "No selection", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If
End Sub
Function MultiSelectListBox(Optional Instruct As String = vbNullString,
Optional Items As List(Of String) = Nothing,
Optional DefaultVal As Object = Nothing,
Optional Title As String = vbNullString,
Optional ListName As String = vbNullString) As List(Of String)
Using oILBD As New Autodesk.iLogic.Runtime.InputListBoxDialog(Title, ListName, Instructions, Items, DefaultVal)
Dim oLB As System.Windows.Forms.ListBox = oILBD.Controls.Item(0).Controls.Item(2)
oLB.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple ' or MultiExtended (shift-select)
Dim oDlgResult As System.Windows.Forms.DialogResult = oILBD.ShowDialog()
Dim oSelected As List(Of String) = oLB.SelectedItems.Cast(Of String).ToList
Return oSelected
End Using
End Function