Lesson 3 — Menus, MDIs, and Simple Loops Microsoft Visual Basic .NET, Introduction to Programming Objectives Design a menu bar with menus and submenus. Plan and document an application. Use MDI forms. Use For loops to write programs. Vocabulary Access keys Cascade Definite loop Indefinite loop Loop MainMenu tool Multiple document interface (MDI) Separator bar Shortcut key Tile Menus Menus are a common Windows tool that make it easy to access commonly used commands. It is not hard to imagine a Windows application with no menu bar: all of your applications to this point have used buttons. Menus are a more natural interface than buttons because they allow you to group related actions. Therefore, menus are an important part of most Windows applications. The menu bar is found at the top of the application window directly under the title bar. Visual Basic lets you create menus quickly and easily. Planning a Menu To what commands and options do users need access? In what order should the commands and options appear? What forms are required? What information needs to be included on each form? From where will this information come? Do the forms need to transfer information elsewhere? Basic Elements of a Menu Menus are made up of the menu bar, menu titles, menu commands, submenu titles, and submenu commands. Menu titles appear on the menu bar at the top of the form. When you click a menu title, its menu opens and displays a list of menu commands or submenu titles. Menu items usually have associated access keys that allow the user to quickly access them through the keyboard. Often, menu items also have shortcut key combinations that let the user execute the command without using the mouse. Basic Conventions Start all menu titles and menu commands with a capital letter. File and Edit are usually the first menu titles on a menu bar, and Help is usually the last one. Use short, specific captions, preferably no more than two words each. Start the names of all menu items with the three-letter prefix "mnu." The MainMenu Tool Did You Know? In the early days of computers, the industry almost died because of a lack of programmers. In the late 1950s and early 1960s, programmers used assembly language, which is the obscure code-like language one level above machine language, or binary. It quickly became apparent that if something did not happen to make programming easier, the industry was doomed. To fill this need, high-level languages, more easily understood by humans than computers, were developed. The computers helped themselves interpret these new languages. Creating a Menu in a Windows Application Note There are a number of properties of the menu item shown in the Properties window: The Checked property, when True, displays a check mark in front of the menu item. This is often used to show that the menu item has already been selected. This property can be set to True or False by program code. The Enabled property, when False, displays the item grayed out, so the user cannot select it. The Visible property, when False, makes the menu item invisible to the user. The Text property reflects the text entered in the Type Here box on the form. Menu Building in Progress Tip To reorder a menu, click and drag the item to a new position. The other items will make room as you drag. Access Keys You are probably familiar with access keys and shortcut keys. Access keys allow you to open a menu by pressing the Alt key and then the designated letter. Access keys also allow the user to access a menu command once the menu is open by continuing to hold the Alt key and pressing its designated letter. Shortcuts Shortcut keys are different. They run a menu command immediately after the shortcut key sequence is pressed. Shortcut keys with which you may be familiar are Ctrl+C for Copy and Ctrl+V for Paste. You cannot assign a shortcut key to a menu title. Step-by-Step 3.3 Select the Open entry by clicking it. Click again to edit the entry. Position the cursor with the arrows and key an ampersand in front of the word Open. This makes the letter O the special access key. Step-by-Step 3.3 In the Properties window, click the Shortcut property. Click the list arrow to the right of the entry and select CtrlO from the list. This sets the shortcut for this menu command to Ctrl+O. With the shortcut set, the user can execute this command from the keyboard without using the mouse or the access keys to select and open the menu. Menu Changes in Progress Tip Remember to name your objects as you create them. Use short meaningful names that start with the correct prefix. For menu items, use the mnu prefix. Adding Code to a Menu When a user clicks a menu control, a Click event occurs. All menu controls, with the exception of the separator bar, recognize the Click event. Coding for a menu Click event works the same as coding for any other event procedure. You open the Code window, choose the menu control from the Class Name box on the left, and enter the code between the Protected Sub and End Sub statements. Another way to open a menu item’s Code window is to double-click the menu item in the MainMenu tool. Step-by-Step 3.4 'Change the color of the text in txtMenuTest to Black Dim NewColor As New Color() txtMenuTest.ForeColor = NewColor.Black() 'Check the Black submenu control mnuEditColorBlack.Checked = True 'Uncheck the Blue submenu control mnuEditColorBlue.Checked = False 'Uncheck the Red submenu control mnuEditColorRed.Checked = False Step-by-Step 3.4 'Change the color of the text in txtMenuTest to Blue Dim NewColor As New Color() txtMenuTest.ForeColor = NewColor.Blue 'UnCheck the Black submenu control mnuEditColorBlack.Checked = False 'Check the Blue submenu control mnuEditColorBlue.Checked = True 'Uncheck the Red submenu control mnuEditColorRed.Checked = False Step-by-Step 3.4 'Change the color of the text in txtMenuTest to Red Dim NewColor As New Color() txtMenuTest.ForeColor = NewColor.Red 'Uncheck the Black submenu control mnuEditColorBlack.Checked = False 'Uncheck the Blue submenu control mnuEditColorBlue.Checked = False 'Check the Red submenu control mnuEditColorRed.Checked = True Running a Program Run the program by selecting Debug | Start Without Debugging or pressing Ctrl+F5. Colors Visual Basic’s handling of colors is very convenient for the programmer. When you click the list arrow in the ForeColor property in the Properties window, you get to choose between three different color management systems: you may select a color from among System Colors, custom colors from a palette of colors, or one of many predefined Web colors. Multiple Document Interface (MDI) The multiple document interface (MDI) is another common item found in Windows applications. The MDI allows you to create an application that has many forms that are contained within one main form. Applications like Microsoft Word, where you can open several different documents within the main Word program, are MDIs. The forms that make up an MDI (em-dee-eye) project are referred to as parent and child forms. The main application is referred to as the parent, and all of the forms contained within the application are called the children. Parents and Children There can be only one MDI parent form per application. This cuts down on the possible confusion that could result from having more than one form in charge of the rest. You create an MDI parent form by setting the appropriate property of the form in the Properties window. When you create an MDI form, the Properties window refers to it specifically as an MDI form rather than just a form. To have the application recognize that the other forms are children of the MDI form, you set their MDIChild property to True. Programming Skills A major problem that programmers run into is that they tend to design for their own use. It may seem obvious to you or another programmer how a program should process data and how a user accesses and enters that data. However, the end-user typically does not have the same perspective. Therefore, when designing a program, it is essential that you plan for alternate approaches. Murphy's law here is, “If there is one thing that would crash a program, users will find it." Creating an MDI Application In order to create an MDI application, you must create an MDI form. Creating an MDI form is similar to creating any other new form. You populate the form with controls from the Toolbox and build a menu. Then change the form’s IsMDIContainer property to True. After the MDI container or parent form is created, you create a template from which child forms are created. You add a second form to the project and populate it with controls from the Toolbox and provide a menu. This second form is the template used to create child forms while the application is running. Me While the application is running, the parent form can be referred to by the name Me. This is a special variable in Visual Basic. Me holds the name of the form that is currently active. Thus, the Me takes different values depending on the active form. Step-by-Step 3.5 'Create a new instance (copy) of Form2 Dim NewMDIChild As New Form2() 'Designate the Child form's parent NewMDIChild.MDIParent = Me 'Display the new form. NewMDIChild.Show() Cascaded Child Forms Child Forms Tiled Horizontally Child Forms Tiled Vertically Child Form Icons Arranged on the Parent Form Step-by-Step 3.6 Form1.LayoutMDI(MDILayout.Cascade) Form1.LayoutMDI(MDILayout.TileHorizontal) Form1.LayoutMDI(MDILayout.TileVertical) Form1.LayoutMDI(MDILayout.ArrangeIcons) Adding a Form A unique form is created in the design phase of the project. Even though you work with the form in the design phase, the form must be called into existence by program code. If the name of the added form is About.vb, the code to create a new instance of the form is Dim NewAbout As New About(). The New Form Once a new form is added, the Show method of the form is called to display it. The Hide method hides the form without unloading it from memory. If necessary, the form’s Unload method is used to unload the form from memory. Unlike the child forms that appear wholly contained within the parent form, the new form is displayed independently. Simple Loops Executing the same statements over and over at almost inconceivable speeds is what makes computers so powerful. Visual Basic has a number of statements designed to control this repetition. The first is the For loop. A loop is any program statement that causes the repetition of a group of statements. This is called a definite loop because its starting value, the upper limit, and the number of repetitions is generally known before the loop begins. For loop The syntax of the For loop is: For control variable = starting value To upper limit Step increment body of the loop Next An example is: For x = 1 To 100 Step 2 'The statements that make up the body of the loop go here. Next x Examples For x = LowerLimit To 5 * LowerLimit … Next x For Item = 1 to 25 … Next Item Examples For x = -5 To 5 Step 0.01 … Next x For Pounds = 8 to 24 Time = Pounds * 17 … Next Pounds Backward Loops can count forward or backward. For x = 10 To 1 Step -1 … Next x Important The value of the control variable should not be changed in the body of a For loop. The value is controlled by the For loop itself. Step-by-Step 3.8 'Declare the necessary variables. Dim StartingValue, UpperLimit, Increment As Integer Dim ControlVariable As Integer Dim DirectCost, FixedCost, TotalCost As Decimal 'Collect information from the TextBoxes. DirectCost = txtDirectCost.Text.ToDecimal FixedCost = txtFixedCost.Text.ToDecimal Step-by-Step 3.8 'Collect information from the user. StartingValue = CInt(InputBox("Enter the starting value:")) UpperLimit = CInt(InputBox("Enter the upper limit:")) Increment = CInt(InputBox("Enter the increment:")) For ControlVariable = StartingValue To UpperLimit Step Increment TotalCost = DirectCost * ControlVariable + FixedCost MessageBox.Show("The cost at " & ControlVariable.ToString _ & " items is:" & CrLf & TotalCost.ToString) Next ControlVariable Communication Skills In creating and editing programs, you will often forget why you did things a certain way or why a particular "fix" was used. That is why it is essential that you document your programs with explanations and dates for later reference. You may have already noticed that you have been using internal comments. This helps later when revisions are made and when the final documentation is done. Summary Menus make it easier for users to execute commands in their programs. The MainMenu tool makes creating professional-looking menus easy. Shortcut keys and access keys help speed up access to commonly used menu commands. The multiple document interface is made up of one parent form that contains many child forms. Summary Previously created forms can be added from other projects. The MDILayout method provides flexibility to the user to display child forms in different ways. The For statement is used to build definite loops that repeat statements a fixed number of times.