Scope of procedure Variable entire project

Download Report

Transcript Scope of procedure Variable entire project

Scope of Variables and Constants
A Variable or Constant may exist and be Visible for
an entire project, for only one form, or for only one
procedure
Therefore, the visibility of a variable or constant is
referred to as its Scope
Visibility means that “can this variable be seen” in
this location
The scope of a variable or constant is said to be
Global, Module (Form) Level, or Local
Module Level variables or constants are accessible from all
procedures of a Form
A Local variable or constant may be used only within the
procedure in which it is declared
The Scope of a Variable declared with a DIM statement is
determined by where the declaration statement is made
The Lifetime of a Variable is the period of time that the variable
exists
The Lifetime of a Local variable is normally one execution of the
procedure
The Lifetime of a Module Level variable is the entire time the
Form is Loaded (generally the lifetime of the entire project)
Local Declarations
• Any variable you declare inside a procedure
• The lifetime of the variable is one execution of
the procedure
• Each time you execute (e.g. click on a command
button) a procedure, the local DIM statements
are executed.
• Each variable is created as a “fresh” new one
with an initial value of 0 for numeric datatypes or
“” for string
• When the procedure finishes, its variables
disappear, their memory locations are released
Local Declarations
Module-Level Declarations
• When you need to use a variable or
constant in more than one procedure of a
form
• Declare at module-level
[General] [Declarations]
Module-Level Declarations
Global Variables
• Though you can declare global variables anywhere,
convention dictates that public variables be placed only
in the standard code module.
• Examples of global and module level declarations in a
SCM:
– Public gcurTotalSalary as Currency
'global variable
– Public Const gcurTAX_RATE as Single = .082 'global
constant
– Dim mcurMySalary as Currecy 'module-only variable
• If a procedure were to contain a variable declared locally
whose name is the same as a global variable (a violation
of unwritten convention for variable naming), then the
local variable takes precedence. A local variable, when
in scope, always preempts use of a global variable.
• The Private statement is rarely used, because that is
the default (for “Dim”)
Static Variables
• Static variables are local to a procedure but
retain their value for the life of a project. They
are often used inside a procedure that counts
things and must maintain that count. Static
variables are initialized once only. Thereafter
they are not initialized during the project:
– Private Sub Something()
–
Static intCount as Integer
'initialized
to 0 once
–
intCount = intCount + 1 'remembered across
invocations
–
···
– End Sub
Standard Code Modules
•
•
•
•
•
Public procedures are“visible” to all forms
Public variables are visible to all forms
SCM has the extension .BAS
Create SCM: Project, Add Module
DIM variables in the code module are visible to
all procedures in the module, but not to
procedures in the form modules.
• SCM modules do not have any event
procedures because SCM has no events to
which it can react. The SCM only has code and
procedures.
Identifiers
• When you use variables and constants, it
is important that you know their scope.
Good programming practice to include
scope information in naming conventions
• Use ‘m’ as a prefix to identify module-level
declarations
• Use ‘g’ to identify variables with global
scope
Multi-Form Projects
Working with more than one form in a project
The first form that VB displays is called the STARTUP
FORM
To add another form; Project Menu/Add Form or select
the icon from the shortcut toolbar
This form will be added to the project, and cam be
viewed from the Project Explorer Window
Each form is a separate entity, and the code exists
and is related only to the specific form
To move between each form:
FORMNAME.SHOW
FORMNAME.HIDE
Form style can be 1 (modal) or the default value 0
(nonmodal)
Variables & Constants in Multiform Projects
• Scope of variables:
– Local: available inside a procedure
– Static: inside procedure, but remembered
– Module level: available anywhere in a form
– Global: available across forms--anywhere
• Global variables declared with Public
• Variable prefix naming conventions: m for
module, g for global
• Scope a variable as narrowly as possible
Referring to Other Forms’
Objects
• You can refer to txtName in another form
called frmSummary this way:
frmSummary!txtName = …
or frmSummary!txtName.Font.Name = ...
• This implies that control names are unique
within a form but need not be unique
across forms.
An About Box
• Acts like a Windows Help|About box
• Often displays information about the
programmers, designers, and so on
• An about box is simply a modal form with
an OK button and label boxes displaying
information
• You can use VB’s About Dialog template
A Splash Screen
• Splash screen displays while product
loads
• Create: Project, Add Form, then select
Splash Screen
• Splash screen loads first instead of main
form
• Place splash screen load statement in Sub
Main procedure in Standard Code Module