A typical database is made of forms (and reports) and these
objects are equipped with Windows controls that allow a user to interact with
the computer. To create such a database, you add forms and reports to it. Then
you populate them with the necessary objects. This is the essence of application
design and you should know how to
design the controls.

Form and report design consists of populating them with the
necessary controls that would allow a person to use your database. To perform
this design, you first open the form or report in Design View.

Practical
Learning: Introducing Control Design

Start Microsoft Access and create a Blank Database named GCS2

To create a new form, on the main menu, click Insert -> Form

In
the New Form dialog box, click Design View and click OK

Save the form as Employees

Form Design Accessories

When designing a form, one of the most usual actions you will perform consists of
adding the necessary controls to it. To do this, on the Toolbox, you can
click the desired control and click a section of the form.

During form design, there are accessories you will
display and dismiss at will. These are the Field List, the Toolbox, and
the Properties window. All of these objects are modeless windows.
Therefore, you can display one at a time or all of them at the same time
and continue designing your form. The Field List is a small window that
displays a list of items that are related to the form you are building.
These items are from the data source that could be a table or a query.

The Toolbox

The Toolbox presents a
list of some of the most common window controls, Some of these controls
can be associated with fields of your Field List; some others can be
configured to relate to another existing control on the form. Yet, another
control can behave independently of anything else that is on the form.

To display the Toolbox, on the Form Design toolbar, click the Toolbox
button
. You can also close it using either the same button on the toolbar,
or clicking its own Close button . You can also use the menu under View.

The Properties Window

Made of five property pages, this Properties window displays the characteristics associated with the object or the control that is selected on the form. To get the Properties
window of the properties associated with a control, right-click that control and click Properties.

To display the Properties window for the form, double-click the button that is at the intersection of both
rulers . You can also click the Properties button
on the Form Design toolbar to toggle the Properties windows.

Practical
Learning: Adding Controls

To add a control, in the Toolbox, click Text Box and click the form

Again, on the Toolbox, click Option Group and click the form

Rulers and Dimensions

To perform your design, a form is equipped with two rulers, one horizontal on the top section of the form, and one vertical on the left section, to help you
with more precise with dimensions. To assist with controls design, you can use a toolbox equipped with buttons, text boxes and other items to give a lot of flexibility to your application.

Since the rulers are dimensionally configured, there
are divisions inside of the rulers to help you be more precise. Between
two numbered dimensions, there are 7 marks that create 8 divisions. The
mark in the middle, a little taller than the others, represents the middle
of two dimensions. In this site, the middle division will be referred to
as ½. The first division on the right side of a number represents 1/8 of
a dimension, the 2nd represents 2/8 = ¼ of a dimension, the 3rd
represents 3/8, and that is why the 4th represents 4/8 = ½. This is how
we will refer to these dimensions.

Control Creation

As mentioned already, to design a form (or report), to
typically click the desired control in the Toolbox and click the form (or
report). To programmatically create a control, you can call the CreateControl()
method (of the Application object). Its syntax is:

The first argument is the name of the form (or report)
on which the control would be positioned.

The second argument must correspond to one of the
controls available in Microsoft Access but you must use one of the
following constants to represent it:

Control Name

Toolbox

Control Type

Bound Object Frame

acBoundObjectFrame

Check box

acCheckBox

Combo box

acComboBox

Command button

acCommandButton

ActiveX control

acCustomControl

Image

acImage

Label

acLabel

Line

acLine

List box

acListBox

Unbound object frame

acObjectFrame

Option button

acOptionButton

Option group

acOptionGroup

Page

acPage

Page break

acPageBreak

Rectangle

acRectangle

Subform

acSubform

Tab control

acTabCtl

Text box

acTextBox

Toggle button

acToggleButton

The third argument specifies in what section of the
form or report the new control would be positioned. The default val;ue of
this argument is acDetail. This argument can have one of the
following values:

Section Name

Constant

Detail

acDetail

Header

acHeader

Footer

acFooter

Page Header

acPageHeader

Page Footer

acPageFooter

Group Level 1 Header on a Report

acGroupLevel1Header

Group Level 1 Footer on a Report

acGroupLevel1Footer

Group Level 2 Header on a Report

acGroupLevel2Header

Group Level 2 Footer on a Report

acGroupLevel2Footer

The fourth argument to this method is the name of the
control that would serve as the parent of the new control. If the control
will not have a parent, then you can pass it as an empty string
"".

The fifth argument has to do with actual databases,
which we haven't covered.

The sixth and the seventh arguments specify the
location of the control.

The eighth and the ninth arguments specify the
dimensions of the new control.

Here is an example that first opens a form named
Specials and then creates a text box control in the Detail section of the
form:

While or after creating a control, you can either
specify its location or change it. This is easily done when designing a
form or report. To position a control, first select it. When the mouse moves over a selected control, its pointer displays a different cursor. Two of these cursors can be used to move a control:

Pointer

Role

Moves the (one) selected control

Moves the control and includes its dependent, if
any.
Also moves a group of selected controls

You can use one of the cursor shapes to specify the desired location of the
control. The distance from the left border of the container to the left border
of a control is represented by its Left property. Based on this, to
programmatically move a control horizontally, assign a numeric value to its Left
property. Here is an example:

Private Sub cmdMove_Click()
cmdRename.Left = 450
End Sub

In the same way, the distance from the top border of a host to the top border of
a control is its Top property.

Control Dimensions

The dimensions of a control or a section of a container are the distance from
its left to its right borders and from its top to its bottom borders. These
dimensions are represented by the Height and the Width properties respectively. To
manually change
the dimensions of a control, first display it in Design View. To change the width of a form or a report, position the mouse on its right border until the cursor turns into a vertical beam with a double-horizontal arrow:

Then click and drag left or right until you are satisfied.

The height of a form or report is controlled by its sections. For this reason, each section controls its
own height. The total heights of all sections constitute the height of the form.
Based on this, to resize a form, you must actually resize one or some of its sections. To heighten a section on a form or a report, position the mouse on the lower portion of the section. For the headers or the Detail sections, that will be the upper border of the lower bar. For the lowest section, the mouse must be positioned on the lower border. The cursor turns into a narrow horizontal line with a vertical double-arrow:

To change the width of the form or report and the height of the lowest section at the same time, you can position the mouse on the lower-right corner. The cursor would change into a small square with 4 arrows:

You can then click and drag left, right, up, down, or diagonally.

When the mouse moves over a selected control and reaches one of the handles, the mouse pointer displays a double-arrow cursor. The possible mouse pointers are:

Pointer

Role

Shrinks or heightens the control

Resizes the control in North-East <-> South-West direction

Narrows or widens the control

Resizes the control in North-West <-> South-East direction

Although these pointers can be used to resize one control, they can also be applied to a group of controls.

To programmatically change the height of a control, assign a numeric value to
its Height property. In the same way, to heighten a control, assign the desired
numeric value to its Width property. Here is an example:

Private Sub cmdMove_Click()
cmdRename.Width = 2450
End Sub

Form and Report Design: Controls Deletion

If you have added a control or it was created by the Form Wizard or the Report Wizard, you can delete it. You can also delete a group of controls in one step.

To remove a control from the form or report, first click it and press Delete. If you click a text box or a control that is accompanied by a label and delete it, its label is deleted also.

To remove a group of controls, select them and press Delete.

Tab Order

The controls on a form are aligned in the order you desire for their sequence. Unfortunately, when you add a control on the form that already has other controls, regardless of the section or area you place the new control, it is sequentially positioned at the end of the existing controls. If you don't fix it, the data entry personnel could have a hard time figuring out how the sequence should be followed. When writing Visual Basic code, you will also find out that the sequence of navigation of controls on a form is very important.

The sequence of controls navigation is set using the Tab Order dialog box. The Tab Order dialog box is available when the form is opened in Design View. Once in Design View, either (1) on the menu bar, click View -> Tab Order; or (2) right-click on the form and click Tab Order.

The simplest and quickest way to rearrange the order of items is to click the Auto Order button. Sometimes, you will not like the arrangement made by the Tab Order dialog box. To rearrange items manually, move a row or a group of rows using the same technique we used to move field names on a table's Design View.

Practical
Learning: Designing Controls

Based on the common properties of the controls, design the Employees form as follows:

The essence of a database relies on its table(s). Even
if you consider that the forms present the friendlier link between the
user and your application, most of the information in your database is
stored in one or more tables, and table(s) is(are) made of columns. After
creating a table and its columns, you can directly create the forms and/or
other objects, such as reports or Access Data Pages, that are based on the
table(s) and get their data from a table's column(s).

Remember
that, after creating a table, to generate a form based on it, you can
first select that table in the Tables section of the Database window.
Then, on the Database toolbar, click the arrow of the New Object button
and click AutoForm.

The Names of Columns and Controls

If you generate a form, a report, or a Data Access Page that
is bound to a table, each control added to the container has a name that is the
same as the column it is bound to. If you add an unbound text box or control to
a form or report, it receives a default name that is cumulative. Whether a
control of a form or a report is bound or not to a column of a table, the name
of that control doesn't have anything to do with that of a column. This means
that you can easily set or change the name of a control.

We reviewed how to name a control and how to
change it. You should refrain from programmatically changing the name of a
control.

If the form or report has already been created but its
controls are not bound to the columns of a table, you should first specify the Record Source of the form or
report. After doing this, to associate or link a control to a column of the
Record Source, first select the column and, in the Properties window, set its
Control Source to the name of the column. To do this programmatically, assign
the name of the column to the name of the control. Here are two examples:

Right-click the title bar of the Employees
table and click Design View

Double-click StateOrProvince to select it and type State

In the lower section of the view, click Caption and press Delete to remove
the caption

Change PostalCode to ZIPCode

In the lower section of the view, click Caption and type ZIP Code

Save and close the table

In the Forms section of the Database window, right-click Employees and click Design View

Click the button at the intersection of the rulers and, in the
Properties window, change its Record Source to Employees

On the form, click each control and change its Control Source in the
Properties window as follows:

Control

Control Source

txtSalary

Salary

txtEmployeeID

EmployeeID

txtDateHired

DateHired

txtEmployeeNumber

EmployeeNumber

txtFirstName

FirstName

txtLastName

LastName

txtAddress

Address

txtCity

City

txtState

State

txtZIPCode

ZIPCode

txtWorkPhone

WorkPhone

txtNotes

Notes

Save the form and close it

To create a new table, on the main menu, click Insert -> Table and, in
the New Table dialog box, double-click Table Wizard

In the Sample Tables list, double-click OrderID

While OrderID is still selected in the Fields In My New Table, click
Rename Field

Change the name to CleaningOrderID and press Enter

In the Sample Fields list, double-click ShipPhoneNumber and click Rename
Field

Change the name to CustomerPhone and click OK

In the Sample Fields list, double-click ShipName and click Rename Field

Change the name to CustomerName and click OK

In the Sample Fields list, double-click RequiredByDate and click Rename
Field

Change the name to DateLeft and click OK

In the Sample Fields list, double-click PromisedByDate and click Rename
Field

Change the name to DateExpected and click OK

In the Sample Tables list, click Events

In the Sample Fields, double-click StartTime and click Rename Field

Type TimeLeft as the name of the column and click OK

In the Sample Fields, double-click EndTime and click Rename Field

Type TimeExpected as the name of the column and click OK

Click Next

Change the table name to CleaningOrders and click Finish

Switch the table to Design View

Under the existing columns in the Field Name section, add the following
fields:

Field Name

Data Type

UnitPriceShirts

Currency

QtyShirts

Number

UnitPricePants

Currency

QtyPants

Number

Item1

Text

UnitPriceItem1

Currency

QtyItem1

Number

Item2

Text

UnitPriceItem2

Currency

QtyItem2

Number

Item3

Text

UnitPriceItem3

Currency

QtyItem3

Number

Item4

Text

UnitPriceItem4

Currency

QtyItem4

Number

TaxRate

Number

Save the table and close it

To create a new table, on the main menu, click Insert -> Form

In the New Forms dialog box, click Design View. In the combo box, select
CleaningOrders and click OK

Save the form as CleaningOrders and close it

The Names of Columns and Controls

If you generate a form, a report, or a Data Access Page that
is bound to a table, each control added to the container has a name that is the
same as the column it is bound to. If you add an unbound text box or control to
a form or report, it receives a default name that is cumulative. Whether a
control of a form or a report is bound or not to a column of a table, the name
of that control doesn't have anything to do with that of a column. This means
that you can easily set or change the name of a control.

In Lesson 10, we reviewed how to name a control and how to
change it. You should refrain from programmatically changing the name of a
control.

If the form or report has already been created but its
controls are not bound to the columns of a table, you should first specify the Record Source of the form or
report. After doing this, to associate or link a control to a column of the
Record Source, first select the column and, in the Properties window, set its
Control Source to the name of the column. To do this programmatically, assign
the name of the column to the name of the control. Here are two examples:

In this case, the CustomerPhone column of a table named
CleaningOrders would be bound to a text box named txtPhoneNumber of the current
table.

The Captions of Columns and Controls

If you generate a form or report that is based on a table,
its Windows controls would use default captions on their accompanying labels. If
the originating column has a caption, that caption would be used. If the column
doesn't have a caption, its name would be used as the caption of the
accompanying label.

Form and Report Design: Controls Selection

To manipulate controls on the form, you will regularly need to
select them. When one control is selected, you can change only its characteristics.
When many controls are selected, you can make a change that would impact all of them.

To select a control, you can just click it. A control that is selected displays 8 handles around
it:

To select more than one control, at random, click one, then press
and hold Shift. While holding Shift, click each of the desired controls. After selecting
the controls, release Shift.

To select controls aligned vertically, click inside of the horizontal ruler
above the highest positioned control: everything that would be touched by the fake line will be
selected. In the same way, you can select controls that are horizontally aligned by clicking
inside the vertical ruler.

To select many controls in the same area on the form, click next to one of
them and draw a fake rectangle that covers each of the desired controls. All controls touched
by the fake rectangle would be selected when you release the mouse.

To select all controls on the form, press Ctrl + A. You can also click
inside of one of the rulers on one end and drag to the other end.

Common Methods of Windows Controls

Setting Focus

The focus is the visual aspect that indicates the control
that would receive a change if the user types a new value. This also means that
a control must receive focus before it can receive a value. A user usually gives
focus to a control by clicking it or pressing Tab continuously until the control
indicates that it has focus.

To programmatically give focus to a control, you can call
its SetFocus() method. Here is an example:

An application is usually made of various and
different objects. Still, just like properties, there are some events that
many types of objects can fire. For example, may objects accept that you
use the mouse with them. Some other objects allow the keyboard.

To interact with the computer, one of the most usually performed actions is to click. The mouse is equipped with two buttons.
The most clicked button is the left one. Because the action simply consists of clicking, when
the user presses this button, a simple event, called Click is sent or
fired. When the user presses the (left) button on the mouse, the mouse pointer
is usually on a Windows control. Based on this, the control that is
clicked "owns" the event and must manage it. Therefore, no
detailed information is provided as part of the event. The operating
system believes that the control that fired the event knows what to do and
should take care of everything. For this reason, whenever you decide to
code a Click event, you should make sure you know what control sent or
fired the event. This is (one of) the most common events of Windows
controls.

Double-Click

To make the mouse more useful and to verify its role, another action can
be performed on it. This consists of pressing the left button very fast
twice. This action initiates an event known as DblClick.

By default, the DblClick event provides a simple
structure to the programmer. You must know what control has been
double-clicked and what you want to do. This means that the operating
system relies on the control that "owns" the event.

Focus Events

Microsoft Windows operating systems allow the user of your database to work
with more that one object in the database. In fact, they allow the user to work
on as many objects as the computer can handle, but only one object can
receive input at a given time. An object that can receive values or input
at one particular moment is said to have focus.

When an object has focus,
Microsoft Visual Basic applies the GotFocus
event to it. If the focus shifts to
another object, the control that had focus fires a LostFocus
event and sends it to
the operating system.

Keyboard Events

Besides allowing the user to enter text into objects made for it, the keyboard is
also used to perform various other actions such as accepting what a dialog
box displays or dismissing it. When the user presses the keys
on a keyboard, the object on which the characters are being typed
sends one or more messages to the operating system.

There
are three main events that Microsoft Windows associates to the keyboard:

KeyDown: When the user presses a key on the keyboard,
an event called KeyDown is fired

KeyUp: When the user releases a key that was pressed,
an even called KeyUp is fired.
These
previous two
events apply to almost any key on the keyboard, even if the user is not
typing; that is, even if the result of pressing a key did not display
a character on the document

KeyPress: The KeyPress event fires if the key
the user pressed is recognized as a character key, that is, a key that would
result in displaying a character

When programming your database, you will need to know what result you are expecting, then choose the right event. Some keys on
the keyboard do not display anything on an object. Instead, they perform
(only) an action. Examples of such keys are Enter, Tab, Esc. Therefore, if
you mean to find out what key the user pressed, use the KeyDown event
and not the KeyPress event, even though the user will have pressed a
key.

Mouse Events

A mouse is equipped with buttons, usually two, that the user presses to
request an action. Compared to the keyboard, the mouse claims many more events
that are directly or indirectly related to pressing one of its buttons.

When
the user presses one of the buttons on the mouse, an event called MouseDown
fires. This event carries enough
information through three parameters. It appears as follows:

Private Sub txtFirstName_MouseDown(Button As Integer, Shift As Integer,
X As Single, Y As Single)
End Sub

The operating system needs to know what button was pressed; this is
represented as the left or the right button. The left button is known
as vbLeftButton. The right button is referenced as vbRightButton. If
the mouse is equipped with a middle button, it would be recognized as vbMiddleButton.
In reality, these buttons have (constant) numeric values of 0, 1, and
2 respectively

Secondly, the operating system needs to know whether a special key, Shift, Ctrl, or Alt, was
pressed. These buttons are called vbShiftMask, vbCtrlMask, and
vbAltMask respectively. In reality, they are represented with 1, 2,
and 4 respectively

Lastly, the operating system needs to know the screen
coordinates of the mouse pointer, that is, the coordinates of the
point where the mouse landed. X represents the distance from the left
border of the screen to the point where the mouse landed. Y represents the
distance from the top border of the screen to the point where the
mouse landed

When the user releases a button that was pressed on the mouse, the MouseUp
event fires. It provides
the same types of information as the MouseDown event:

Private Sub txtFirstName_MouseUp(Button As Integer, Shift As Integer,
X As Single, Y As Single)
End Sub

The MouseMove event fires while the user is moving the mouse on an
object. It provides the same pieces of information as the MouseDown and
the MouseUp events:

Private Sub txtFirstName_MouseMove(Button As Integer, Shift As Integer,
X As Single, Y As Single)
End Sub

Windows Controls: The Label

Introduction

A label is a static control that displays fixed text to the user. The user cannot change
the text of a label but can only read it. A label can be used by itself to
display text. In many other cases, a label is used to display text about another control
next to it.

To add a label to your project, on the Toolbox, click Label ,
click the form or the report, type the text that the label will display and press Enter (as we will see, most controls add their own label to the form).
The label control is an object of type Label.

Properties of a Label

Probably the most important and the most obvious characteristic of a label is the text it
displays. The text is the label's Caption. If you click the Label on the Toolbox and click on the form, you must first define its caption. If a label already has a caption, there are various ways you can edit it. For example, use the same techniques we reviewed for editing text-based properties. On the other hand, to edit the caption of a label, on the form, click inside the label. That would put it into edit mode and you can edit it as you wish.

The appearance of a label is visibly controlled by its font characteristics. The Font name, also called its face, is the name of the font as defined by the operating system.
There are various ways you can define the font characteristics of a control like the label. The Formatting toolbar is equipped with appropriate combo boxes and buttons. These characteristics can also be modified using their corresponding properties from the Properties window.

The dimensions of a label control its Width and Height. Although the dimensions are closely related to the font characteristics, they can be independently defined. There are two main ways you can resize a label, which is equivalent to changing its dimensions. To set your own dimensions, in the Format tab of the Properties window of the label, change the values of the Width and Height properties. Unless you plan to show the background color of a label, probably the best way to resize a label is to make it adjust to the dimensions depending on the font size and the total characters width. To do this, position the mouse on one of the label's handle and double-click. The label's width and height would be set to accommodate its caption.

The position of a label is controlled by its Top and Left properties. The
Top property defines the measure from the top left corner of the section where the label is positioned, to the top left corner of the label itself. There are two main ways you can set the position of a label. On the Properties window, you can change the values of the Top and Left properties. On the other hand, you can place your mouse on the top left corner of the label until the mouse pointer turns into a pointing finger. Then click and drag in the desired direction.

Practical Learning: Using Labels

In the Forms section of the Database window, double-click CleaningOrders
to open it

A group box is a rectangle that is used to group a set of control in a section.
There may not be any relationship among the controls. The main idea might simply
be to indicate that the controls go together, for any reason. As you may guess,
this is sometimes done for aesthetic reasons.

To create a group box, you can use the the
Option Group control
from the Toolbox. When you add it to a form or report, if the Control Wizards button
is down, the Option Group Wizard would start. If you only want to create a
simple group box, you should cancel the wizard.

Properties of the Group Box

As far as Microsoft Windows is concerned, a group is a
static control, like a label. This means that its appearance and the
string it displays are its most important features. The group box is
equipped with a rectangle that sets the area of its body. To enhance its
appearance, you can set its Back Style, its Border Style, its Back Color,
and its Border Color properties.

Besides the rectangle around it, a group box is also
equipped with a label. If you want to use the label, you can specify its
Caption property as you see fit. If you don't want to use its label, you
can either delete it or set its caption empty.

Practical Learning: Using Group Boxes

To create a group box, on the Toolbox, click Option Group and click under
the Detail bar of the form. If/when the wizard starts, click Cancel

Enlarge the group box to occupy the width of the form

Click the body of the form to deselect the group. Click the label on top
of the group box to select it

In the Properties window, change its Caption to Order
Identification

Save the form

Windows Controls: The Text Box

Introduction

A text box is a Windows control used to get or display text. At its most regular use, a text box serves as a place to fill out and provide information. You can also use it only to display
text without allowing the user to change its content.

Like most other controls, the role of an edit box is not obvious at first glance; that is why it should be accompanied by a label that defines its purpose. From the user’s standpoint, a text box is named after the label closer to it. Such a label is usually on the left or the top side of the corresponding edit box.

To add a text box to your project, from the Toolbox, you can click the Text Box control
and click a section of the
form or report. The text box control is an object of type TextBox.

Unless you have a good alternate reason, most of your text boxes will be placed in the Detail section. Some text boxes used in expressions can be placed in another section. By default, placing a text box on the form also adds a corresponding label to its left.

Properties of a Text Box

Like every control on a form or a report, the dimensions of the text box are controlled by its
Width and Height properties. The position of a text box is controlled by its
Top and Left properties.

To make a text box read-only, that is, if you don't want the user to enter text in an edit box, there are various alternatives. If you change the
Enabled property from Yes to No, the text box would have a gray background and cannot receive focus. If you set the
Locked property from No to Yes, the control would appear with a normal (white) background.

The Special Effects property of the text box is expanded as compared to
that available on a label. Besides the ability to raise or sink a text box, you can give it a thick, etched, or shadow border.

Practical Learning: Using Text Boxes

In the Toolbox, click Text Box and click inside the group box on the form

While the text box is selected, in the Properties window, change its Name
to txtCustomerPhone

Change the Control Source value to CustomerPhone

On the form, click its accompanying label to select it

In the Properties window, change the Caption to Customer Phone:

Once again, in the Toolbox, click Text Box and click inside the group box
on the form

While the text box is selected, in the Properties window, change its Name
to txtCustomerName

Change the Control Source value to CustomerName

On the form, click its accompanying label to select it

In the Properties window, change the Caption to Customer Name:

Save the form

Windows Controls: The Month Calendar

Introduction

Microsoft Windows provides a control used to select dates on
a colorful calendar:

The dates used and the way they display are based on the
Regional Settings of the Control Panel. It may also depend on the operating
system used. This convenient control is called Month Calendar. The title bar of
the control displays two buttons and two labels. The left button allows the user
to select the previous month by clicking the button. The left label displays the
currently selected month. The right label displays the year of the displayed
date. The right button is used to get to the next month.

The calendar can be configured to display more than one
month. Here is an example that displays two months:

If the control is displaying more than one month, the
buttons would increment or decrement by the previous or next month in the list.
For example, if the control is displaying April and May, if the user clicks the
left button, the control would display March and April. If the control is
displaying April and May and the user clicks the right button, the control would
display May and June.

To select any month of the current year, the user can click
the name of the month, which displays the list of months and this allows the
user to click the desired month:

To select a year, the user can click the year number. This
changes the year label into a spin button:

To change the year, the user can click the up or down arrows
of the spin button. As the spin button is displaying, the user can also use the
arrow keys of the keyboard to increase or decrease the value.

Under the title bar, the short names of week days display,
using the format set in Control Panel.

On the control, the currently selected date has a circle
around. To select a date on the control, the user can click the desired date,
which changes from the previous selection.

In the main area, the numeric days of the month display on a white background
(this color and any color on the control can be changed). To select a date, the
user can click it in the list.

By default, the calendar opens with today's day circled with
a hand-drawn-look-alike ellipse. Using the buttons of the title bar, the month
label, and/or the year, the user can change the date. If at one time the
calendar is displaying a date other than today, and if the user wants to return
to today's date, he or she can click the bottom label that displays Today (you
as the programmer can hide the Today label if you want).

To create a Month Calendar control, on the Toolbox, click
More Controls. In the list of controls, you can click the Microsoft MonthView
Control 6.0 (SP4).

Properties of a Month Calendar Control

The Month Calendar control is a rectangular object without a
border. After placing it on a form or a report, it displays the current month
and only one month. This is because, by default, its width and height are set
enough to accommodate only one month. To display more than one month
horizontally, change the MonthColumns property to 2 or more and increase
its width. To display more than one month vertically, change the MonthRows
property to 2 or more and increase its height.

To make it a highly visual object, a Month Calendar control uses different
colors to represent the background, week days, the background of the title bar,
the text of the title bar, the text of the days of the previous month, and the
text of the days of the next month.

As mentioned already, the top section of the Month Calendar
control displays buttons and labels. The background color of this section
is controlled by the TitleBackColor property.

By default, the labels on the title bar display in a black color
defined by the ActiveCaptionText system color. The color used to
paint the text of the labels of the title bar is controlled by the TitleForeColor
property

As mentioned already, to change the month and subsequently
the year of the calendar, the user can click the buttons continuously. By
default, the user can navigate from 1/1/1753 to 12/31/9999. If you want to limit
the allowable dates beyond which the user should not navigate, use the MinDate
and the MaxDate properties.

Under the title bar, the short names of weekdays display,
using the format set in Control Panel. If you want to start with a different
day, set the value using the StartOfWeek property. The names of weekdays
use the same color as the TitleBackColor property. Under the names of the
week, there is a horizontal line used as the separator. By default, this line
separator is painted in black but it uses the same color as the numeric values
of the days of the selected month.

Under the line separator, the numeric days of the
month are listed. By default, the numeric days of the control display
above a white background which is the Window system color of
Control Panel. This color is controlled by the overridden MonthBackColor
property.

The numbers of the days of the month display in two
colors. The real days of the selected month display, by default, in a
black color as the WindowText system color. The color of these days
is controlled by the ForeColor property.

Besides the days of the current month, the other days on the
calendar are those that don't belong to the currently selected month. These days
display in a different color controlled by the TrailingForeColor
property.

Of course, you can change all mentioned colors. Although any
color is allowed in any category, you should make sure that the calendar is
still reasonably appealing and usable.

The Month Calendar control is used to let the user know
today's date in two ways. On the calendar, today's date is circled by an almost
hand-drawn ellipse. In the bottom section of the calendar, today's date is also
displayed as a sentence. If you want to display or hide the bottom label, set
the ShowToday Boolean property accordingly. For example, to hide it, set
this property to No.

When a new Month Calendar control is added to an
application, it assumes today's date. If you want to change this date, use the Value
property.

When the user clicks the Month Calendar control, one date is
selected. To select more than one date, the user can click one date and drag
left, right, up or down:

By default, the user can select only up to 7 days at a time.
If you want the user to be able to select more or less days than that, change
the value of the MaxSelCount property.

After selecting the days, the starting date is stored in the
SelectionStart property. The last date of the selection is stored in the SelectionEnd
property. Both properties are of DateTime type. The range of the selected
dates is stored in a SelectionRange value. SelectionRange is
simply a class that can give you information about the beginning and the end of
a selected range of dates.

Windows Controls: The Date Picker

Introduction

The Date and Time Picker is a control that allows the user to select either a date or a time value.
One of the advantages of the Date and Time Picker control is that it allows the user to select a time or a date value instead of typing it. This tremendously reduces the likelihood of mistakes.

To create a Date or Time Picker control, in the Toolbox,
click More Controls. In the list of controls, click Microsoft Date and Time Picker
6.0 (SP4), and click the form.

After adding the DateTimePicker control to the form, to allow the user to set the dates and not the times on the control, set its
Format property either to 0 - dtpLongDate or to 1 - dtpShortDate.

Characteristics of the Date Picker

After adding a Date Time Picker control and setting its Format to either
0 (the
default) or 1, the control becomes a combo box (the default). If you don't like the combo box, you can display a spin button
instead. This characteristic is controlled by the UpDown Boolean property.
When its value is set to No (the default), the control appears as a combo
box. It you set it to Yes, it appears as a spin button:

If the control displays a combo box, if the user clicks the arrow on the Date control, a calendar object similar to the
Month Calendar control displays:

This calendar displays to the bottom-left or the bottom-right side of the combo box.

The displayed Month Calendar object allows the user to select a date using the same techniques we described for the
Month Calendar control. The Month Calendar
part of the DateTimePicker control displays using the same colors and other properties as we saw with the
Month Calendar control. After the user has selected a date, the date value displays in the
text box section of the combo box and the calendar disappears.

In some cases, you may want to decide when to allow the user
to select a date or when to disable it. There are two ways you can do this. You can
use the Control's Enabled property that all other controls have.
Another technique you can use is to display a check box on the left side of the
text box section of the control. The presence or absence of the check box is
controlled by the CheckBox Boolean property whose default value is No. If
you set it to Yes, a check box appears:

When the check box is checked, the user can change the
displayed date. When the check box is unchecked, the control is displayed and
the user cannot change the date. The user must first put a check mark in the
check box in order to be able to change the date.

If the control displays a spin button, the object is divided in different sections that can each
can be changed individually. To change either the day, the month, or the year, the user must click the desired section and use either the arrows of the button or the arrow keys on the keyboard to increase or decrease the selected value.

If you want to control the range of dates the user can select, use the
MinDate and the MaxDate properties as we mentioned them from the
Month Calendar control.

When you add the Date Time Picker control to your form or
your report, it displays the date of the computer at the time the control was added. If you want the control to display a different date, set the desired value in the
Value field of the Properties window. At any time, you can find out what value the Date Picker has by retrieving the value of the
Value property.

If you set the Format property to 0, the date displays using the Long Date
format of Control Panel.
If you set the Format to 1, the control uses the Short Date
value of Control Panel. If you want to customize the way the date is displayed, set the
Format property to 3 - dtdCustom. After setting the Format to
3, use
the Custom property to create the desired format. The format is
created by combining the following characters:

Format

Used For

Description

d

Days

Displays the day as a number from 1 to 31

dd

Days

Displays the day as a number with a leading 0 if the number is less than 10

ddd

Weekdays

Displays a weekday name with 3 letters as Mon, Tue, etc

dddd

Weekdays

Displays the complete name of a week day as Monday, etc

M

Months

Displays the numeric month from 1 to 12

MM

Months

Displays the numeric month with a leading 0 if the number is less than 10

MMM

Months

Displays the short name of the month as Jan, Feb, Mar, etc

MMMM

Months

Displays the complete name of the month as January, etc

yy

Years

Displays two digits for the year as 00 for 2000 or 03 for 2003

yyyy

Years

Displays the numeric year with 4 digits

This means that you should be reluctant to let the users type whatever they want. The less they type, the less checking you need to do.

Practical Learning: Using the Date Picker

To add a Date Time Picker control, on the Toolbox, click the More Controls
button

Scroll down in the list of controls, click Microsoft Date and Time Picker
6.0 (SP4), and click the form.
If you don't see Microsoft Date and Time Picker 6.0 (SP4) (meaning if you
don't have it), press Esc. When designing the form, you will use the
TextBox control instead

Click the new Date Time Picker control and, in the Properties window, change
the following properties:
Name: dtpDateLeft
CheckBox: Yes

Right-click the DateTimePicker control and click Copy

Right-click the form and click Paste

Change the properties of the second control as follows:
Name: dtpDateExpected
CheckBox: Yes

Save the form

Windows Controls: The Time Picker

Overview

Besides allowing to use a calendar, the Date and Time Picker
control allows the user to select time value. As mentioned previously, to create
a Date or Time Picker control, add a Microsoft Date Time Picker control to a
form or report.

After adding a Date Time Picker control to a container, to
make it a Time Picker control, change its Format property to 2 -
dtpTime. This makes it a true Time Picker control:

Characteristics of the Time Picker

The Time Picker control is a spin button made of different
sections: the hours value, the minutes value, the optional seconds value, and
the optional AM/PM string. To change the time, the user clicks a section and
uses either the mouse or the keyboard to increase or decrease that particular
value. To change another value, the user must first click it and then use the
spin button.

By default, the time displays using the H:M:SS AM/PM format.
This means that the time uses 1 digit for the hours from 0 to 9, 1 digit for the
minutes from 0 to 9, 1 digit for the seconds from 0 to 9 and the AM or PM for
morning or afternoon.

To customize the way the time displays, first set the Format
property to 3 - dtpCustom. Then, in the Custom property, use a
combination of the following characters to create a custom format:

Format

Used For

Description

h

Hour for 12-hour basis

Used to display the hour with one digit
if the value is less than 10

hh

Hour for 12-hour basis

Used to display the hour with a leading
0 if the value is less than 10

H

Hour for 24-hour basis

Used to display the hour with one digit
if the value is less than 10

HH

Hour for 24-hour basis

Used to display the hour with a leading
0 if the value is less than 10

m

Minute

Used to display the minute with one
digit if the value is less than 10

mm

Minute

Used to display the minute with a
leading 0 if the value is less than 10

t

AM/PM

Displays the letter A or P for the AM or
PM section

tt

AM/PM

Displays the letters AM or PM for the
last section

You can set the format at design time using the Format field on the
Properties window.

By default, after adding the control to the form or report,
it assumes the time of the computer when the control was added. If you want to
set a different time, apply a Format combination to the Value
property. In the same way, at any time, you can retrieve the time value on the
control by accessing the Value property.

Practical Learning: Using the Date Picker

To add a Date Time Picker control, on the Toolbox, click the More Controls
button

Scroll down in the list of controls, click Microsoft Date and Time Picker
6.0 (SP4), and click the form.
If you don't see Microsoft Date and Time Picker 6.0 (SP4) (meaning if you
don't have it), press Esc. When designing the form, you will use the
TextBox control instead

Click the new Date Time Picker control and, in the Properties window, change
the following properties:
Name: dtpTimeLeft
Format: 2 - dtpTime

Right-click the newly added Time Picker control and click Copy

Right-click the form and click Paste

For the new control, in the Properties window, set its properties as
follows:
Name: dtpTimeExpected
Format: 2 - dtpTime

Save the form

Windows Controls: The Command Button

Introduction

A command button is a rectangular object that allows the user to dismiss a dialog box or to initiate an action. This is done through a decision making process based on what a form or a dialog box is displaying. This could be an acknowledgement, such as a form displaying a simple message to the user. A user could also be asked to choose one button from a group of buttons on a form or a dialog box.

Depending on how the button is implemented, it should be obvious to the user what to do with it. To indicate what a button is used for or what action it would lead to, a button can display a string on its top. This string is also referred to as the button's caption. The caption should be explicit enough to let the user know what the button is used for. A caption
such as OK usually means the user accepts what message the form or dialog box is displaying. A caption like Cancel is usually accompanied by another OK button on the form. When a button has a Cancel button, the user would usually click it as if saying, "Never Mind" or "I change my mind", etc.

To create a button, you can click the Command Button control
on the Toolbox and click on the desired section of the
form or report. On the Toolbox, if the Control Wizard button was down or clicked, the Command Button Wizard would start to help you create a fully functional button. If you do not want to use the wizard, you can click Cancel on the first page of the Command Button Wizard. Also, if you do not want to use the wizard, on the Toolbox, you can click the Control Wizards button
to have it up.

The button is an object of type CommandButton.

Characteristics of Command Buttons

Like all other “visual” controls, a command button has
a Name property, a location (Left and Top), and dimensions
(Width and Height). Because of their anticipated behavior,
command buttons are the most commonly used objects to initiate an action.
As such, they are used to open other forms, reports of the same database,
or simply to display a message box.

A command button in Microsoft Access can display either
a string or a (small) picture on top. Microsoft Access ships with dozens of
pictures you can use, specially made for buttons. If none of these pictures
suits your need, you can design your own. To display a picture on a button,
after selecting it in the Design View of the form or report, click the
ellipsis button of the Picture field in the Format tab of the Properties
window, locate the picture, and select it.

When a dialog box is equipped with an OK and a Cancel
button, it is suggested that the user be able to press Enter to perform
the same action as if he or she had clicked OK. To apply this behavior,
if you create a button and give it an OK Caption, you can set its
Default property to Yes. It is also suggested that, if a
button has a Cancel Caption, the user should be able to press Esc and
produce the same behavior as if the Cancel button was clicked. To apply
this feature, after creating the button with a Cancel caption, set its
Cancel property to Yes. Never set the Default and
the Cancel properties both to Yes for the same button.

Windows Controls: Combo and List Boxes

Introduction to Combo Boxes

A combo box is a Windows control made of two parts: a text portion and a list. A text box is used to display a selection made from a list of items. On the right side of the text box, there is a down-pointing arrow that allows the user to know that the control holds a list. The user displays the list by clicking the arrow. To use a combo box, the most basic operation the user can perform is to click the arrow and select an item. Once an item is selected, the list retracts back.

The combo box is one of the highly praised features of Microsoft Access. As the application makes it particular easy to create, it performs all necessary basic behind-the-scene jobs.
Like every control, a combo box uses a name that allows you, the database application, or the operating system to identify it.

When we think of a list box, we usually assume that it is made of one column of items. A list box can be made of various columns. In this case, it is sometimes called a list view:

Most of the time, when a multi-column list displays, the user may not be able to identify the items under each column. In this case, you can display a column header on its column. This column header would display a label that categorizes the items under it.

One of the main reasons for using a combo or a list box is to provide a list of items to the user. Sometimes the list would be very large. If the list is long, the control would provide a vertical scroll bar that allows the user to navigate up and down to access all items of the list. The database developer decides how many items to display in the list.

To create a combo box or a list box, on the Toolbox, you can click either the
Combo Box button
or the List Box button
and click the form or the report. When you do this, if the Control Wizards
button is down, a wizard would start. If you want to create a list manually, you
can click Cancel. Otherwise, you can continue with the wizard. The combo box is
an object of type ComboBox. The list box is an object of type ListBox.

Properties of Combo and List Boxes

As mentioned already, the primary purpose for having a
combo or a list box is to display a list of items. There are various ways
you can specify this list. When adding a combo or a list box to a form or
report, if you use the wizard, it would assist you with creating and even
configuring the list of items. If you don't use the wizard, you will need
to create and configure the list yourself. Before creating the list of
items of a combo or a list box, you must first specify how the list would
be created. The property that allows you to specify the type of list is
called RowSourceType. As it happens, the combo and the list box of
Microsoft Access provide three ways to specify the origin of the list. Two
options require a table, a query, or a statement. When we study tables and queries, we will see
how to use or apply them. If you want to create a list of strings to
display in a combo box or list box, set the RowSourceType property
to "Value List". This would be done as follows:

A radio button is a Windows control made of a round box O. In practical usage, a radio button is usually (if not always) accompanied by other radio buttons. In other words, radio buttons come as a group. The user makes his or her decision by selecting or clicking one of the round boxes. Once clicked, the round box is partially filled with a dot. When one button in the group is selected, the other round boxes of the (same) group are empty
O. The user can select another button by clicking a different choice, which empties the previous selection. This technique of selecting is referred to as mutually-exclusive.

There are two main ways you add a radio button to your form or report. While in Design View, if you add an
Option Group control
to a form or a report and if the Control Wizards button
is down, the Option Group Wizard would start, allowing you to create a list of items where each item would be later converted into a radio button. If the radio button must be linked to a column of the data source, you will need to specify it. Such a column should have a natural number as data type
(Byte, Integer, Long Integer).

The Option Group control allows you to create a list of items that would become
radio buttons. Instead of using the Option Group control, you can create each
radio button separately. To do this, on the Toolbox, you can click the Option
Button and
click the form or report. When using the Option Button, it is better to include
it inside an Option Group or a Rectangle control.

Properties of Radio Buttons

Because the round box of a radio button does not indicate what it is used for, it is usually (if not always) accompanied by a label. The label can be positioned anywhere (to the left, the top, the right,
or the bottom sides) close to the round box but it is usually positioned to the left or the right side. To move or position the round box, click it to select it. Then position your mouse on it to get a pointing finger arrow and drag in the desired direction:

Like most (if not all) other controls, when you include a radio button, Microsoft Access adds a label to the control. If you don't like the string displayed by the label, you can click it twice to put it into edit mode and change the string.

Check Boxes

Introduction

A check box is a control that allows the user to validate or invalidate an option. A check box appears as a little square box. The user makes his or her decision by clicking in the square, which toggles a check mark. Toggling means, that if the square box
was empty, after clicking it, a check mark would appear in it:

Although it can appear by itself, a check box can come in a group with others, allowing the user to select as many choices as are available, as opposed to radio buttons where only one in the group can be selected:

Check boxes provide a non-exclusive choice, which means that if they come as a group, each can behave independently with regards to the other check boxes of the same group. Therefore you can create check boxes anywhere on the
form or report. It is recommended that, when they act as an ensemble, you should include check boxes in a group so their belonging to the same group would be obvious to the
user.

Toggle Buttons

Introduction

A toggle button is a type of control that behaves like a check box. The first difference is that it displays like a command button but behaves like a check box. The second difference is that, while a check box should be accompanied by a label that indicates what the check box is used for, a toggle button, like the command button, can display a string on its “face”.

To create a toggle button, you can click the Toggle Button control on the Toolbox and click the form. Like the check box and the radio buttons, there is no wizard to follow.

Properties of a Toggle Button

Configuring the toggle button is particularly easy. Like the check box, the toggle button should be used for a Boolean field.