450 likes | 615 Views
Chapter 7. Multiple Forms, Standard Modules, And Menus. Chapter 7 Introduction. Chapter 7 Topics. How to add multiple forms to a project How to create a standard module Holds procedures and functions not associated with a specific form Creating a menu system Context menus
E N D
Chapter 7 Multiple Forms, Standard Modules, And Menus
Chapter 7 Topics • How to add multiple forms to a project • How to create a standard module • Holds procedures and functions not associated with a specific form • Creating a menu system • Context menus • With commands and submenus that the user may select from
Section 7.1Multiple Forms Visual Basic Projects May Have Multiple Forms A Form Designated as the Startup Object Is Displayed When the Project Executes Other Forms in a Project Are Displayed by Programming Statements
Form Names • Each form has its specific name • Programs refer to a form by this name • VB assigns a default name Form1 to forms • A form’s Name property allows us to set or change the form name • Standard prefix for form names is frm • Each form also has a file name (.vb extension) • Forms are stored on disk using this name • To change the file name: • Right click in Solution Explorer, select Rename
Adding a New Form to a Project • Click Add New Item on the toolbar • Or Project on menu, then Add Windows Form • Add New Item dialog box appears • Click on Windows Form under Templates • Change the default name if you wish • Click the Open button • New form now appears in: • Design window • Solution Explorer
Switching from Forms to Form Code • Design window has two tabs for each form • One for form design • One for the code associated with a form • For two forms named frmMain and frmError, can select from the following tabs: • frmMain.vb[Design] Main form design • frmMain.vb Main form code • frmError.vb[Design] Error form design • frmError.vb Error form code
Changing the Startup Form • First form created in a project becomes the startup object • The form displayed when application runs • To make another form the startup object • Right-click project name in Solution Explorer • Click Properties • Click down arrow in Startup Form box • Select new startup form from drop-down list • Click Ok
Classes and Instances • The form design is a class • It’s only a design or description of a form • Think of it like a blueprint • A blueprint is a detailed description of a house • A blueprint is not a house • The form design can be used to create one or more instances of the form • Like building a house from the blueprint • In order to use a form in a program, we must first create an instance of it from the design
Creating an Instance of a Form • Dim statement used to create instance of form • To create an instance of frmError: • frmError is the form design name (the class) • NewfrmError creates an instance of the form • Variable errorForm refers to the form instance and is used to perform operations on the form • The form is not yet visible, but it now exists • Show or ShowDialog makes the form visible Dim ObjectVariable As New ClassName() Dim errorForm As New frmError()
Modal Forms & ShowDialog Method • A modal form prevents the user from changing focus to another form in the application as long as it remains open • For example: • Variable errorForm represents an instance of frmError as shown in the previous slide • The ShowDialog method displays the form instance named errorForm as a modal form • Must close errorForm in order to change focus to another form in the application errorForm.ShowDialog()
Modeless Forms & Show Method • A modeless form allows the user to change focus at will to another form in the application while that form remains open • For example: • Variable errorForm represents an instance of frmError as shown previously • The Show method displays the form instance named errorForm as a modeless form • Can change focus to other forms in the application while errorForm remains open errorForm.Show()
Closing a Form • A form may close itself using the Close method and referring to itself as "Me": • As in Me.Close() Private Sub btnClose_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles btnClose.Click Me.Close() End Sub
Hiding a Form • Closing a Form eliminates it from memory • To retain the form in memory but remove it from the display, use the Hide Method: • To redisplay the form use the ShowDialog or Show method Me.Hide()
More on Modal and Modeless Forms • Display of a modal form causes execution of calling statements to halt until form is closed • Display of a modeless form allows execution to continue • Tutorial 7-1 demonstrates these differences statement; messageForm.ShowDialog() ' Statements below will ' not execute until the ' Form is closed statement; statement; messageForm.Show() ' Statements below will ' execute right after the ' Form is displayed statement;
The Form Load Event • The Load event is triggered just before the form is initially displayed • Any code needed to prepare the form prior to display should be in the Load event • If some controls should not be visible initially, set their Visible property in the Load event • Double click on a blank area of the form to set up a Load event as shown below Private Sub frmMain_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load End Sub
The Form Activated Event • The Activated event is triggered when focus switches to the form from another form or application • The Load event is triggered once when the form is initially displayed • The Activated event is also triggered when the form is initially displayed • Occurs immediately after the Load event • The Activated event may be triggered many more times while a form is being displayed
The Form Closing Event • The Closing event is triggered as the form is being closed, but before it has closed • The Closing event can be used to ask the user if they really want the form closed Private Sub frmMain_Closing(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) _ Handles MyBase.Closing If MessageBox.Show(“Are you Sure?”, “Confirm”, _ MessageBoxButtons.YesNo) = DialogResult.Yes Then e.Cancel = False ‘continue, close form Else e.Cancel = True ‘cancel form close End If End Sub
The Form Closed Event • Closed event triggered after a form is closed • Note that it is now too late to prevent the form from being closed (it is already)
Using Objects on a Different Form • When code in a form refers to an object, it is assumed that object is in that same form • You can refer to an object in another form • Simply preface the object name with the variable name associated with that form • frmGreeting has a control named lblMessage • Set Text property to Hello before displaying Dim greetingForm As New frmGreeting() greetingForm.lblMessage.Text = "Hello!" greetingForm.ShowDialog()
Class-level Variables in a Form • Class-level variables are Private by default • This means they are not accessible by code in other forms • If you want to access from other forms, they must be declared with the Public qualifier: Public sngTotal As Single ' Instead of the declaration ' Dim sngTotal As Single
Public/Private Procedures in a Form • Procedures, by default, are Public • They can be accessed by code outside of their Form • To make a procedure invisible outside its own form, declare it to be Private • Tutorial 7-2 provides an opportunity to work with a multiple form application
Section 7.2Standard Modules A Standard Module Contains Code - Declarations and Procedures - That Are Used by Other Files in a Project
Standard Modules • A separate .vb file not associated with a form • Contains no Event Procedures • Used for code to be shared by multiple forms • Procedures or variables used by one form should be declared in that form • Procedures or variables used by many forms should be declared in a standard module
Standard Module Syntax • ModuleName is normally same as .vb file • Module Contents are sub procedures and functions which can be • Private - only used by functions in that module • Public - can be called from outside of the module • If not specified, a procedure is public Module ModuleName [Module Contents] End Module
Adding a Standard Module • Click Add New Item on the toolbar • Or Project on menu, then Add Module • Add New Item dialog box appears • Click on Module under Templates • Change the default name if you choose • Click the Open button • A new empty module now appears in: • Code window • Solution Explorer
Module Level Variables • These are declared within a module • But outside of any functions or sub procedures in that module • If declared Dim or Private, the scope is the module (called module scope) • If declared Public, the scope is the entire application (called global scope) • Tutorial 7-3 demonstrates the use of a standard module in an application
Application with No Startup Form • Must change the startup form to Sub Main • Main must be a public sub procedure • It must be in a standard module • When the application starts • No Form will be displayed • Main will be given control
Section 7.3Menus Visual Basic Allows You to Create a System of Drop-down Menus for Any Form in Your Application You Use the Menu Designer to Create a Menu System
Components of a Menu System • Each drop-down menu has a menu name • Each drop-down menu has a list of actions or commands that can be performed • Some commands may lead to a submenu Menu Name Menu Command Submenu
Components of a Menu System Shortcut Key (F7) • Commands can be performed by • A key or key combination called a shortcut key • A single letter and the Alt key called an access key • Menu must be open to use an access key • Shortcut key works when menu is not displayed Access Key (L)
Components of a Menu System • A disabled menu command can’t be selected at present and shows as a light color (grayed out) • A checked menu command toggles between the checked (if on) and unchecked (if off) states • A separator bar helps group similar commands Checked Menu Command Separator Bar
MainMenu Control • Add to form with double-click on MainMenu control in ToolboxMenus & Toolbars section • The MainMenu control is displayed in the component tray (bottom of Design window) • May have many MenuItem objects with the following key properties: • MenuItem name used by VB to identify it • MenuItem text displayed to the user • Actions in the form of a MenuItem click event • Submenu • Separator bar
MenuItem Object Names • Should begin with mnu • Then by convention are spelled, specifying their hierarchical position: • mnuFile • mnuFileSave • mnuFilePrint
MenuItem Text Properties • The text property holds the item description displayed to the user • If an access key is assigned, that letter must be preceded with an ampersand Object NameText PropertyAccess Key mnuFile &File F mnuFileSave &Save S mnuFileExit E&xit X
Menu Designer • The Menu Designer allows menu creation by filling in a box with the menu text: Enter the next menu name Enter first command in the File menu
Shortcut Keys • Keyboard based shortcuts that execute menu commands without using the menu system • For example, ctrl-c to Copy to the clipboard • These are set via the Shortcut property of each menu item • A shortcut is displayed to the user only if the ShowShortcut property is set to true
Disabled MenuItem Objects • A menu item is grayed out (disabled) with the Enabled property • Paste option is initially disabled and only enabled after something is cut or copied • Code initially disables the Paste option • Following a cut or copy, Paste is enabled mnuEditPaste.Enabled = False mnuEditPaste.Enabled = True
Adding Separator Bars • Right-click menu item, select Insert Separator • Separator inserted above the menu item • Or create a menu item with one hyphen (-) as the text property
Submenus • When selecting a menu item in the designer, a Type Here box appears to its right • Begin a submenu by setting up this menu item • If a menu item has a submenu, a solid right-pointing arrow will be shown for this item
Inserting, Deleting, & Rearranging • To insert a new menu item within the list • Right-click the item to follow the new one • Choose Insert New from the shortcut menu • Use Menu Designer to add new menu items at the end by entering the text to appear • To remove a menu item • Right-click on the item • Choose Delete from the shortcut menu • The Menu Designer can rearrange items using a click and drag approach
MenuItem Click Event Procedures • Menus and submenus require no code • Commands require a click event procedure • Double click on the menu item • Event procedure created in the code window • Programmer supplies the code to execute • Double click the MenuItem object named mnuFileExit to create the following Private Sub mnuFileExit_Click(ByVal sender as System.Object, _ ByVal e as System.EventArgs) Handles mnuFileExit.Click Me.Close() End Sub Programmer supplied code Click event procedure created by VB
Standard Menu Items • In general follow the conventions that most application menu systems use • File is leftmost item with access key Alt-F • File item has Exit command, access key Alt-X • Help is the rightmost item • Help menu has an About command • Tutorial 7-4 demonstrates how to create a menu system
Context Menus • A pop-up menu that appears on a right-click • Context menus are designed for a particular control or set of controls • To set up a Context Menu: • Double-click ContextMenu control in the ToolBox to add it to the component tray • Build menu system using Menu Designer • Build Click event procedures as needed • Use ContextMenu property of form controls to link desired control(s) to the menu
Section 7.4The High Adventure Travel Agency Price Quote Application Build an application with multiple forms, a standard module, and a menu system