System Objects

System Objects

System objects allow you to access system resources like Clipboard, and Screen etc.  Visual Basic allows you to access the system resources through properties and methods of the system objects. The following is the list of system objects and what they do. Detailed discussion about each system object will follow.


System Object Description
Screen Allows you to access properties of screen such as width, height, fonts available screen etc.
Printer Allows you to access the default printer.
Clipboard Allows you to place data on clipboard and take data from clipboard.
App Lets you access important information regarding the current application.
Debug Allows you to send output to immediate window at runtime.

Table  11.1: System objects.


The following section will discuss each of the system objects in detail.


Screen Object

Allows you to access screen-related properties. Screen object is accessed using keyword Screen.

The following are the various properties of Screen object.




ActiveControl Returns the control that currently has focus.
ActiveForm Returns the form that currently has focus.
FontCount Returns the number of fonts available for the display device.
Fonts() This is an array that contains the names of all the available fonts for display device.
MousePointer Determines the type of mouse pointer to be used.
MouseIcon Contains the custom mouse icon. This is taken when MousePointer property is set to vbCustom.
Height and Width Returns the size of the screen in Twips.
TwipsperpixelX , TwipsperpixelY Return the number of twips per pixel on the screen.


Table 11.2: Screen object properties.


The following snippets of code demonstrate how to use screen object.


To get the list of fonts supported by the display device place them in a list box, enter:


For I  = 0 to screen.fontcount –1

List1.additem (screen.fonts(I))



To change mouse pointer to a custom mouse pointer, enter:


Screen.mouseicon  = LoadPicture(“arrow.ico”);

Screen.mousepointer = vbCustom


To center the form on the screen, enter the following code in FORM_LOAD event:


Private Sub Form_Load()

Dim x as integer, y as integer


x = (Screen.Width – Me.Width) / 2

y = (Screen.Height – Me.Height) / 2

Me.Move x, y

End Sub


Printer Object

Printer object allows you to print to default printer. The following are the important properties of Printer object.




Copies Specifies the number of copies to be printed. Default is 1.
ColorMode Determines whether a color printer prints output in color or monochrome. Valid options are: 1 – monochrome, 2 – color. If the printer is monochrome then it ignores this property.
Devicename Returns the name of the device.
Drivername Returns the name of the driver
Orientation Indicates whether documents are printed in portrait or landscape mode.

1 – portrait, 2 – landscape.

Page Returns the current page number.
PaperSize Returns or sets a value indicating the paper size for the current printer Please see on-line help for valid options.
PaperBin Indicates the bin on the printer from which paper is fed when printing. Please see on-line help for valid options.
Printquality Returns or sets a value indicating the printer resolution. Valid options are:

-1 Draft, -2 Low, -3 Medium, -4 High.

You can also set this property to dots per inch (DPI), like 300.

Zoom Returns or sets the percentage by which printed output is to be scaled up or down. Default is 0, which means normal size.

Table 11.3: Properties that are unique to Printer Object


Printer object also has collection of methods. While properties are used to change the settings, methods are used to actually print and control printing operations.


Following are the methods that are specific to Printer object. Remember Printer object has some of the common methods such as Circle, Line etc. But in this section, I will discuss about only the methods that are specific to Printer object. For complete list, please see on-line help.



What it does?

EndDoc Terminates a print operation sent to the printer using Printer object and releases the document to the print device or spooler. Printing will not start unless you execute EndDoc.
KillDoc Terminates the current print job immediately.
NewPage Ends the current pages and advances to the next page.
Print Prints the given text to printer.

Table 11.4: Methods that are specific to Printer object.


The following are various examples regarding how to use Printer object properties and methods.


To display two lines in draft resolution mode, enter:


Printer.PrintQuality = -1  ‘draft resolution

Printer.Print “Who is the author of this book?”

Printer.Print “P.Srikanth”



To display two lines in two different pages with various other setting, enter:


Printer.CurrentX = 0

Printer.CurrentY = 0

Printer.colromode = 2  ‘ put in color mode

Printer.Orientation = 2 ‘ landscape

Printer.Zoom = 100       ‘ double the size

Printer.Print “This is at the uppper-left corner”

Printer.NewPage        ‘ go to next page

Printer.Print “This is in the second page”



App object

App object contains important information regarding the current application such as  help file to be used, whether previous instance of this application is running etc.


The following are the important properties of App object. For the complete list of properties, please see on-line help for App object.




ExeName Returns the root name of the executable file (without the extension) that is currently running. If running in the development environment, returns the name of the project
Taskvisible Returns or sets a value that determines if the application appears in the Windows task list.
HInstance Returns a handle to the instance of the application. If project is run in IDE, returns the handle of the IDE.
LogMode Specifies how logging  is to be carried out.
LogPath Specifies the path and file name to which logging information should be written.
UnAttendedApp Returns a value that determines if an application will run without any user interface.
Helpfile Specifies the path and filename of a Help file used by your application to display Help or online documentation.
PrevInstance Returns a value indicating whether a previous instance of the application is already running.
Startmode Returns or sets a value that determines whether an application starts as a stand-alone project or as an ActiveX component.

0 – Standalone, 1 – ActiveX component.

Table 11.5:  Properties of App object.


The following are the available methods of App object.



What it does?

Logevent logbuffer, eventtype Logs an event in the application’s log target, which is specified using LogPath property.

Logbuffer is the message to be logged.

EventType is: 1-error, 2-warning, 4 – information.

StartLogging logTarget, logMode Sets the log target and log mode of an operation.

Table 11.6:Methods of App object.


To test whether application has started as a standalone or as an ActiveX component:


If App.StartMode = 0 then

‘do what you want for    standalone application


‘do what you want for ActiveX component

End if


To prevent second instance from starting:


If not IsNull (App.PrevInstance) then

Unload me

End if


Debug Object

Allows you to write to immediate window. This object is meaningful only when project is run in development environment. At run time Debug object is ignored.


The following are the methods available in Debug object.



What it does?

Print Prints the given text to Immediate window.
Assert Suspends the execution at the line where method appears if the given condition is false. If the condition is true, it has no effect on execution.

Table 11.7: Methods of Debug object.


To suspend the execution of program if the value of variable amount is more than 10000, enter:


Debug.Assert amount > 10000


To print the value of variable amount to immediate window, enter:


Debug.Print  amount

Note: you can suspend execution of the program using stop method by pressing Ctrl + Break in VB IDE


Clipboard Object

Allows you to access system clipboard. Visual Basic applications can place data on to clipboard so that other applications can receive the data. In the same way it is also possible to receive data that is currently  placed on clipboard. The following are the available methods in clipboard.



What it does?

Settext Places the given text on the clipboard.
Setdata Places the given binary data, such as pictures, on the clipboard.
Gettext Returns the text that is currently on clipboard.
Getdata Returns the data that is currently on clipboard. This is used to retrieve binary data such as pictures.
Clear Clears data that is on clipboard.
Getformat Returns true if clipboard contains the data of the specified format. Please see on-line help for the list of valid formats.

Table 11.8: methods of Clipboard object.


Sample Application

It is time to consolidate. Let us develop an application that can place data on the clipboard or send the data to printer. The sample application displays the list of available fonts so that user can format the text before printing.  The application also takes care of enabling and disabling options such as cut and paste automatically.

Figure 11.1: Application to demonstrate system objects.


See figure 11.1 for the user-interface of the application. And the following is the menu structure and what each menu item does.



What it does?

Cut Places the text that is currently selected in text box to clipboard. And removes the selected text from textbox.
Copy Places the text that is currently selected in textbox to clipboard.
Paste Copies the text that is currently available in clipboard at the cursor position in textbox. If any text is selected in text box then the text from clipboard replaces the selected text of the textbox.

Table 11.9: Meaning of options in Edit menu.

Let us now understand what these controls on the form do?

Text Box

Allows user to enter the text that can be sent either to clipboard or to printer. It supports multiple lines and also contains scrollbars.

First Combobox

Display the list of fonts available from Screen object. Initially it is set to font “Arial”. Whenever user selects a new font, the text in textbox will be displayed in the new font.


Second Combobox

Allows you to select a size for font. It displays number in the range 6 to 50 with an increment of 2. User is allowed to either select a number from the list. User is also allowed to enter a new value. The text in the textbox will be displayed in the new size.


Print command button

Prints the text that is in textbox in the selected font and with the selected size to default printer.  It uses Printer object to send text to printer.


Creating the sample application

The following are the steps to be taken to develop the sample application.

  1. Create a new project using File-> New Project and select Standard Exe as the type of the project.
  2. Place the required control as shown in figure 11.1.
  3. Change the properties as shown in the table below.


Object Property


Form Caption System Objects Demo
Label1 Caption Print Text
Text1 Name Txtsample
Multiline True
Scrollbars 3 –both
Text “ “ ( Null string)
Combo1 Name Cmbfonts
Style 2-dropdown list
Combo2 Name Cmbsize
Command1 Name Cmdprint
Caption &Print
Command2 Name CmdQuit
Caption &Quit


Write code for Form_Load event to add the names of the available fonts using Screen object. Also add numbers in the range 6 to 50 with an increment of 2.



Private Sub Form_Load()

‘Load fonts from Screen objects

For i = 0 To Screen.FontCount – 1

Cmbfonts.AddItem Screen.Fonts(i)


Cmbfonts.Text = “Arial”    ‘ select Arial as the default font

‘add numbers with increment of 2 to cmbsize

For i = 6 To 50 Step 2

cmbsize.AddItem i


‘select 6 as the default size

cmbsize.ListIndex = 0

End Sub

Listing 11.1: Code for Load event of the form object.


Now let us write code to change the name of the font whenever user selects a new font name in ComboBox.


Private Sub Cmbfonts_Click()

txtsample.Font.Name = Cmbfonts.Text

End Sub

Listing 11.2: Code for Click event of cmbFonts combo box.


Text property contains the name of the font currently selected. Use Name attribute of Font object to change the name of the font for textbox.


In the same way let us write code to change size of the font whenever user selects a different size using size Combobox. But as this is a dropdown combo box, user can also directly enter text into it. So after user enters the size, the new size should be used to change the size of text in textbox. For this we use LostFocus event of the Combobox. LostFocus event occurs when user is moving out of the Combobox.


So we have to write code for two events of size Combobox. Listing 11.3 shows the code for size combo box (cmbsize).


Private Sub cmbsize_Click()

txtsample.Font.Size = Val(cmbsize.Text)

End Sub

Private Sub cmbsize_LostFocus()

txtsample.Font.Size = Val(cmbsize.Text)

End Sub

Listing 11.3: Code for Size ComboBox.


Whenever user clicks on Print command button, the text that is entered by the user in the textbox should be printed using the selected font name and font size. The code in listing 11.4, accomplishes that task.

Private Sub cmdprint_Click()

‘ Change font name and font size of the printer object so that

‘ text that is printed is printed with those attributes

Printer.Font.Name = Cmbfonts.Text

Printer.Font.Size = Val(cmbsize.Text)

Printer.Print txtsample     ‘ send text to printer

Printer.EndDoc              ‘ indicate end of printing job

End Sub

Listing 11.4: Code for Print command button

Let us also complete code for quit buttons.


Private Sub cmdquit_Click()

Unload Me

End Sub

Listing 11.5: Code for Quit button.


At this stage run the project and test whether changing font name in Combobox is changing the font of the text in textbox. Also test whether changing size is changing the size of character in textbox. Also test whether typing size in size Combobox and moving out of it is changing the size of the character.


If all tests are successful then proceed to next section, otherwise find out the bug and debug it. Remember, nobody is a born programmer. Programming is learnt by writing programs. Initially your program may not be successful. But finding out errors and correcting them is all what programming is all about. So do it.


Writing code for Edit menu

Now let us turn our attention to Edit menu. Options in Edit menu are used to place text in clipboard and retrieve text from clipboard.


First let us concentrate on Cut option. When user selects Cut option, the following steps are to be taken.


  • Place the selected text of the textbox on Clipboard
  • Delete the text that is selected.


We use SelText property of the textbox. SelText property of the textbox contains the text that is currently selected (highlighted).

Note: If no text is selected then SelText refers to current position in the textbox.


Here is the code for Cut option of edit menu.


Private Sub mnucut_Click()


‘copy the selected text on to clipboard

Clipboard.SetText txtsample.SelText

‘cut the selected text

txtsample.SelText = “”


End Sub

Listing  11.6: Code for Cut option.


Copy option also does the same as Cut option except that it doesn’t delete the selected text. Here is the code for copy option.


Private Sub mnucopy_Click()

‘copy the selected text on to clipboard

Clipboard.SetText txtsample.SelText

End Sub

Listing 11.7: Code for Copy option.

Paste option takes the text that is in the clipboard and places it either at the current position, if nothing is selected, or replaces the selected text. Both the purposes can be served using SelText property of textbox. Listing 11.8, shows the code for Paste option.


Private Sub mnupaste_Click()

‘ get text from clipboard and replace selected text

‘ or place it at the cursor position if not text is selected

txtsample.SelText = Clipboard.GetText


End Sub

Listing 11.8: Code for Paste option.


The next and last step is automatically enabling and disabling options in Edit menu depending upon the context. That means if no text is selected then Cut and Copy options are to be disabled. In the same way if no text is existing in clipboard then Paste option is to be disabled.


That means Cut and Copy are enabled only when text is selected in textbox.


Paste option is enabled only when clipboard contains text.


The following is the code for click event of Edit menu. Click event of Edit menu is the place where you have to enable or disable because, click event occurs before menu is displayed to user.


Note: But you cannot select click event of Edit menu in design mode like you can select for options. Because whenever you click on edit menu the options will be displayed but code window is not invoked. So get into code window and then select mnuEdit as the object and Click as the event and write the following code.


Private Sub mnuedit_Click()


‘ disable all options

mnucut.Enabled = False

mnucopy.Enabled = False

mnupaste.Enabled = False


If txtsample.SelText <> “” Then

‘ enable cut and copy options

mnucut.Enabled = True

mnucopy.Enabled = True

End If


‘ check whether clipboard has any text


If Clipboard.GetFormat(vbCFText) Then

mnupaste.Enabled = True

End If


End Sub

Listing 11.9: Code for Edit menu.


GetFormat method of Clipboard object returns true if data in the clipboard is of the specified type. Here we are checking whether clipboard has any text, using  vbCFText constant. For the list of available constants and corresponding numeric values, please see on-line help for GetFormat method of Clipboard object.


System objects are useful in Visual Basic. They are used to access system devices. App does not refer to any device but it contains information regarding application.