Attribute VB_Name = "MenuDemoModule" Option Explicit '--------------------------------------------------------- 'MenuDemo 'Shows the use of the different types of menus: 'ButtonMenu, ComboBoxMenu and ListBoxMenu '--------------------------------------------------------- Public wsFactory As New WStFactory Public wsForm As New WStForm Public wsWidget As New WStWidget Public Sub Main() Dim bResult As Boolean Dim sObjectName As String Dim bEnd As Boolean Dim iIntValue As Integer Dim iOptionCount As Integer Dim iSelectedOption As Integer iOptionCount = 4 iSelectedOption = 0 bEnd = False 'Form creation and customization wsFactory.CreateFormByName "myForm" wsForm.SetCoordTypeByName "myForm", WS_FORM_CT_BYPERCENTAGE Randomize 'Widget creation wsFactory.CreateWidget WS_LABEL, 0, "formTittle", 33, 0, 40, 5, "Menu Demo" wsFactory.CreateWidget WS_MENU, 0, "buttonMenu", 5, 7, 50, 60, "Button Menu" wsFactory.CreateWidget WS_LABEL, 0, "listBoxMenuLabel", 65, 7, 30, 5, "ListBox Menu" wsFactory.CreateWidget WS_MENU, 0, "listBoxMenu", 65, 12, 30, 40, "" wsFactory.CreateWidget WS_LABEL, 0, "comboBoxMenuLabel", 65, 55, 30, 5, "ComboBox Menu" wsFactory.CreateWidget WS_MENU, 0, "comboBoxMenu", 65, 60, 30, 30, "" wsFactory.CreateWidget WS_BUTTON, 0, "exitButton", 5, 68, 32, 12, "Exit" wsFactory.CreateWidget WS_BUTTON, 0, "resetButton", 5, 81, 32, 12, "Reset" wsFactory.CreateWidget WS_LABEL, 0, "selectedOptionLabel", 40, 68, 30, 5, "Selected Option" wsFactory.CreateWidget WS_FIELD, 0, "selectedOptionField", 40, 73, 25, 6, "0" wsFactory.CreateWidget WS_CHECKBOX, 0, "enableAutoCompleteCheckBox", 68, 73, 32, 6, "Auto complete" wsFactory.CreateWidget WS_LABEL, 0, "optionCountLabel", 40, 80, 25, 5, "Option Count" wsFactory.CreateWidget WS_FIELD, 0, "optionCountField", 40, 85, 25, 6, "4" wsFactory.CreateWidget WS_BUTTON, 0, "deleteOptionsBtn", 70, 80, 25, 12, "Delete Options" 'Fonts and icons creation wsFactory.CreateCustomFont 1, 14, True, False, False, "Times New Roman", WS_CENTER wsFactory.CreateCustomFont 2, 12, False, False, False, "Arial", WS_LEFT wsFactory.LoadExternalIcon 1, WS_POWER, "iconlib.dll" wsFactory.LoadExternalIcon 2, WS_CONNECT, "iconlib.dll" wsFactory.LoadExternalIcon 3, WS_3BOXES, "iconlib.dll" wsFactory.LoadExternalIcon 4, WS_DOWNLOAD, "iconlib.dll" wsFactory.LoadExternalIcon 5, WS_EXIT, "iconlib.dll" wsFactory.LoadExternalIcon 6, WS_RELOAD, "iconlib.dll" 'Widget customization wsWidget.SetIconByName "exitButton", 5 wsWidget.SetIconByName "resetButton", 6 wsWidget.SetFontByName "formTittle", 1 wsWidget.SetFontByName "exitButton", 1 wsWidget.SetFontByName "resetButton", 1 wsWidget.SetFontByName "deleteOptionsBtn", 1 wsWidget.ChangeMenuTypeByName "listBoxMenu", WS_LIST_BOX_MENU_TYPE wsWidget.ChangeMenuTypeByName "comboBoxMenu", WS_COMBO_BOX_MENU_TYPE wsWidget.EnableAutoCompleteByName "comboBoxMenu", True wsWidget.EnableAutoCompleteByName "listBoxMenu", True wsWidget.SetStateByName "enableAutoCompleteCheckBox", WS_STATE_CHECKED 'Widget attachament wsForm.AddObjectByName "myForm", "formTittle" wsForm.AddObjectByName "myForm", "exitButton" wsForm.AddObjectByName "myForm", "resetButton" wsForm.AddObjectByName "myForm", "selectedOptionLabel" wsForm.AddObjectByName "myForm", "selectedOptionField" wsForm.AddObjectByName "myForm", "enableAutoCompleteCheckBox" wsForm.AddObjectByName "myForm", "optionCountLabel" wsForm.AddObjectByName "myForm", "optionCountField" wsForm.AddObjectByName "myForm", "deleteOptionsBtn" wsForm.AddObjectByName "myForm", "buttonMenu" wsForm.AddObjectByName "myForm", "listBoxMenuLabel" wsForm.AddObjectByName "myForm", "listBoxMenu" wsForm.AddObjectByName "myForm", "comboBoxMenuLabel" wsForm.AddObjectByName "myForm", "comboBoxMenu" 'The focus can be set only after the widget is attached wsForm.SetFocusByName "myForm", "optionCountField" FillOptions "buttonMenu", iOptionCount FillOptions "listBoxMenu", iOptionCount FillOptions "comboBoxMenu", iOptionCount wsWidget.ModifyInputModeByName "optionCountField", 0, WS_FIELD_IM_NUMERIC_ONLY wsWidget.ModifyLenCtrlModeByName "optionCountField", 0, WS_FIELD_LC_FORCE_ENTRY wsWidget.ModifyInputModeByName "selectedOptionField", 0, WS_FIELD_IM_NUMERIC_ONLY wsWidget.ModifyLenCtrlModeByName "selectedOptionField", 0, WS_FIELD_LC_FORCE_ENTRY wsWidget.SetMaxLengthByName "selectedOptionField", 2 ConfigWidgetColors wsWidget.SetSelectedItemByName "listBoxMenu", 0 wsWidget.SetSelectedItemByName "comboBoxMenu", 0 bResult = wsForm.ShowByName("myForm", True, True) 'Form creation and customization While (bEnd = False And bResult) bResult = wsForm.GetEvent() iIntValue = wsForm.GetLastEventIntValue() sObjectName = wsForm.GetLastEventSourceName() If sObjectName = "exitButton" Or iIntValue = WS_ESC Then bEnd = True End If Select Case sObjectName Case "resetButton" wsForm.RestoreInitialState Case "selectedOptionField" iSelectedOption = wsForm.GetLastEventStrValue() wsWidget.SetSelectedItemByName "listBoxMenu", iSelectedOption wsWidget.SetSelectedItemByName "buttonMenu", iSelectedOption wsWidget.SetSelectedItemByName "comboBoxMenu", iSelectedOption Case "optionCountField" iOptionCount = wsForm.GetLastEventStrValue() FillOptions "listBoxMenu", iOptionCount FillOptions "buttonMenu", iOptionCount FillOptions "comboBoxMenu", iOptionCount Case "deleteOptionsBtn" wsWidget.ClearOptionsByName "listBoxMenu" wsWidget.ClearOptionsByName "buttonMenu" wsWidget.ClearOptionsByName "comboBoxMenu" Case "listBoxMenu" wsWidget.SetTextByName "selectedOptionField", iIntValue Case "buttonMenu" wsWidget.SetTextByName "selectedOptionField", iIntValue wsWidget.SetSelectedItemByName "buttonMenu", 1 Case "comboBoxMenu" wsWidget.SetTextByName "selectedOptionField", iIntValue Case "enableAutoCompleteCheckBox" If wsForm.GetLastEventIntValue() = WS_STATE_CHECKED Then wsWidget.EnableAutoCompleteByName "comboBoxMenu", True Else wsWidget.EnableAutoCompleteByName "comboBoxMenu", False End If End Select Wend EndProgram: End Sub Public Sub FillOptions(sMenuName As String, iOptionCount As Integer) Dim i As Integer Dim iIconIndex As Integer Dim sOptionIndex As String wsWidget.ClearOptionsByName sMenuName If iOptionCount < 1 Then Exit Sub End If iIconIndex = 1 For i = 1 To iOptionCount sOptionIndex = i wsWidget.AddOptionByName sMenuName, iIconIndex, "Option " + sOptionIndex iIconIndex = Int((4 - 1 + 1) * Rnd + 1) Next i wsWidget.AddOptionByName sMenuName, 0, "Platano" wsWidget.AddOptionByName sMenuName, 0, "Platita" wsWidget.AddOptionByName sMenuName, 0, "Banana" wsWidget.AddOptionByName sMenuName, 0, "Naranja" wsWidget.AddOptionByName sMenuName, 0, "Mandarina" wsWidget.AddOptionByName sMenuName, 0, "Frutilla" wsWidget.AddOptionByName sMenuName, 0, "Apple" wsWidget.AddOptionByName sMenuName, 0, "Apricot" wsWidget.AddOptionByName sMenuName, 0, "Avocado" wsWidget.AddOptionByName sMenuName, 0, "Banana" wsWidget.AddOptionByName sMenuName, 0, "Bilberry" wsWidget.AddOptionByName sMenuName, 0, "Blackberry" wsWidget.AddOptionByName sMenuName, 0, "Blackcurrant" wsWidget.AddOptionByName sMenuName, 0, "Blueberry" wsWidget.AddOptionByName sMenuName, 0, "Currant" wsWidget.AddOptionByName sMenuName, 0, "Cherry" wsWidget.AddOptionByName sMenuName, 0, "Cherimoya" wsWidget.AddOptionByName sMenuName, 0, "Clementine" wsWidget.AddOptionByName sMenuName, 0, "Date" wsWidget.AddOptionByName sMenuName, 0, "Damson" wsWidget.AddOptionByName sMenuName, 0, "Durian" wsWidget.AddOptionByName sMenuName, 0, "Eggplant" wsWidget.AddOptionByName sMenuName, 0, "Elderberry" wsWidget.AddOptionByName sMenuName, 0, "Feijoa" wsWidget.AddOptionByName sMenuName, 0, "Gooseberry" wsWidget.AddOptionByName sMenuName, 0, "Grape" wsWidget.AddOptionByName sMenuName, 0, "Grapefruit" wsWidget.AddOptionByName sMenuName, 0, "Huckleberry" wsWidget.AddOptionByName sMenuName, 0, "Jackfruit" wsWidget.AddOptionByName sMenuName, 0, "Jambul" wsWidget.AddOptionByName sMenuName, 0, "Kiwi fruit" wsWidget.AddOptionByName sMenuName, 0, "Kumquat" wsWidget.AddOptionByName sMenuName, 0, "Legume" wsWidget.AddOptionByName sMenuName, 0, "Lemon" wsWidget.AddOptionByName sMenuName, 0, "Lime" wsWidget.AddOptionByName sMenuName, 0, "Lychee" wsWidget.AddOptionByName sMenuName, 0, "Mango" wsWidget.AddOptionByName sMenuName, 0, "Mangostine" wsWidget.AddOptionByName sMenuName, 0, "Melon" wsWidget.AddOptionByName sMenuName, 0, "Cantaloupe" wsWidget.AddOptionByName sMenuName, 0, "Honeydew melon" wsWidget.AddOptionByName sMenuName, 0, "Watermelon" wsWidget.AddOptionByName sMenuName, 0, "Rock melon" wsWidget.AddOptionByName sMenuName, 0, "Nectarine" wsWidget.AddOptionByName sMenuName, 0, "Orange" wsWidget.AddOptionByName sMenuName, 0, "Peach" wsWidget.AddOptionByName sMenuName, 0, "Pear" wsWidget.AddOptionByName sMenuName, 0, "Physalis" wsWidget.AddOptionByName sMenuName, 0, "Plum/prune (dried plum)" wsWidget.AddOptionByName sMenuName, 0, "Pineapple" wsWidget.AddOptionByName sMenuName, 0, "Pomegranate" wsWidget.AddOptionByName sMenuName, 0, "Raisin" wsWidget.AddOptionByName sMenuName, 0, "Raspberry" wsWidget.AddOptionByName sMenuName, 0, "Western raspberry (blackcap)" wsWidget.AddOptionByName sMenuName, 0, "Rambutan" wsWidget.AddOptionByName sMenuName, 0, "Redcurrant" wsWidget.AddOptionByName sMenuName, 0, "Salal berry" wsWidget.AddOptionByName sMenuName, 0, "Satsuma" wsWidget.AddOptionByName sMenuName, 0, "Strawberry" wsWidget.AddOptionByName sMenuName, 0, "Tangerine" wsWidget.AddOptionByName sMenuName, 0, "Tomato" wsWidget.AddOptionByName sMenuName, 0, "Ugli Fruit" End Sub Public Sub ConfigWidgetColors() wsForm.SetBackGroundColorByName "myForm", 255, 255, 255 wsWidget.SetBackGroundColorByName "exitButton", 225, 255, 185 wsWidget.SetTextColorByName "exitButton", 119, 226, 0 wsWidget.SetBackGroundColorByName "resetButton", 225, 255, 185 wsWidget.SetTextColorByName "resetButton", 119, 226, 0 wsWidget.SetBackGroundColorByName "deleteOptionsBtn", 225, 255, 185 wsWidget.SetTextColorByName "deleteOptionsBtn", 119, 226, 0 wsWidget.SetBackGroundColorByName "buttonMenu", 225, 255, 185 wsWidget.SetTextColorByName "buttonMenu", 119, 226, 0 wsWidget.SetBackGroundColorByName "listBoxMenu", 225, 255, 185 wsWidget.SetTextColorByName "listBoxMenu", 119, 226, 0 wsWidget.SetBackGroundColorByName "comboBoxMenu", 225, 255, 185 wsWidget.SetTextColorByName "comboBoxMenu", 119, 226, 0 wsWidget.SetTextColorByName "selectedOptionLabel", 119, 226, 0 wsWidget.SetBackGroundColorByName "selectedOptionField", 225, 255, 185 wsWidget.SetTextColorByName "enableAutoCompleteCheckBox", 119, 226, 0 wsWidget.SetBackGroundColorByName "selectedOptionField", 225, 255, 185 wsWidget.SetTextColorByName "selectedOptionField", 119, 226, 0 wsWidget.SetBackGroundColorByName "optionCountField", 225, 255, 185 wsWidget.SetTextColorByName "optionCountField", 119, 226, 0 wsWidget.SetTextColorByName "comboBoxMenuLabel", 119, 226, 0 wsWidget.SetTextColorByName "listBoxMenuLabel", 119, 226, 0 wsWidget.SetTextColorByName "optionCountLabel", 119, 226, 0 End Sub