Title: Visual%20Basic:%20An%20Object%20Oriented%20Approach
1Visual Basic An Object Oriented Approach
- 12 Creating and using ActiveX objects
2Component Object Technologies
- Components are packages of software
- Composed of one or more classes
- Can be used to provide service to programs
- Can be used flexibly
- a VB component can be used by a C program, a
web page or an excel spreadsheet - Current development trends emphasize the
development and use of components - More flexible systems
- Reusability
- Easier team development
3ActiveX
- ActiveX is Microsofts take on components
- A marketing term, covering several technologies
- Object Linking and Embedding (OLE)
- OLE Automation
- Component Object Model (COM)
- ActiveX makes it possible to create components
that can interact regardless of location,
language or type - COM is the standard that ActiveX components
conform to - DCOM (Distributed COM) operates across local and
wide area networks
4OLE Automation
- Use statements in a program to control objects
within components - Components are library files (DLLs) or separate
executable files (EXEs) - Controlling program can be written in almost any
language - VB, C, VBScript, JavaScript, Java, Perl,
Python - Execute efficient binaries from inefficient (but
easy to use) scripting languages
5Use of OLE Automation
- Typical use is to build a complex Business
application from pre-built components - e.g an Access database, an Excel calculating
engine and a Word reporting engine - Quick, simple and easy to maitain
6Typical OLE Automation Code
Sub CreateCustomerDocument(CustDetails As
String) Dim WOLE As Word.Application Set WOLE
CreateObject(Word.Application)
WOLE.Documents.Add ATemplate, 0
WOLE.Selection.Goto wdGotoBookmark,
wdGotoAbsolute, _
1, Customer WOLE.Selection.Find
.Text .Replacement.Text End With
Selection.InsertAfter CustDetails
Application.Printout Set WOLE Nothing End Sub
Code uses Word to create a document (e.g. a
Customers invoice) and print it out.
7Where to get information on OLE Auto servers
(ActiveX servers)
- Documentation e.g. manuals supplied with
libraries - VB on-line help for servers provided by
Microsoft (e.g. Office applications) - Primary source The Object Browser
- Built in to VB
- Provides accurate interface information on any
components on the system
8VBs Object Browser
9VBs Object Browser showing a user-defined class
10Creating an ActiveX server
- Almost trivial in VB
- VB creates COM components without need for extra
code (unlike VC) - Only changes required are type of project
selected, and a few (very few) property settings - Instancing components strategy for creating
objects from its classes - ActiveX type
- In-process (Dynamic Link Library DLL)
- Out-of-process (Executable EXE)
11Instancing
- States how objects can be created for use by the
client application - Private only creatable by another class in the
same component (Server) - PublicNotCreatable component creates objects for
client application - SingleUse only one object of class allowed
client creates it - Global SingleUse as above, but no need to create
object reference - MultiUse possible to create many objects from
the component many clients can create them - GlobalMulitUse can be used by many clients
12Use of Instancing Property
- Allows memory and processor allocations to be
optimised depending on the type of component - e.g. no point in a MultiUse Printing component if
there is only one printer that can be used by one
client at a time - e.g. Many applications could make use of several
Invoice objects simultaneously MultiUse
obviously - Careful design consideration at the stage of
deciding on instancing setting can greatly
improve application efficiency
13Process allocation
- Server can be in-process or out-of-process
- In-process uses the client applications memory
allocation - Client finds it inherently easier to work with
because it is inside its own memory space - Faster
- Limited to one client per instance of the
component - Out-of-process runs in its own memory allocation
- Clients need to communicate with it using
operating system resources - Slower and more resource hungry
- Several clients can make use of the same server
- Server can execute in its own right (without a
cllient) - E.g. Word, Excel, Access etc.
14Building an ActiveX project
- Before use, server component must be compiled
- It will be executed by another program out-with
Visual Basic - This can complicate debugging, since client is
required to make component work - Can crate VB Project groups (for in-process
components) - Can run multiple instances of VB (for
out-of-process components) - Can use the Immediate Window (to do limited test
and debug)
15Deploying an ActiveX Component
- Must be registered on the system it will be used
on - VB does this automatically on the system it was
developed on - To move the component to another system, must
register it explicitly - Use RegSvr32.exe, or
- Build a setup program using the Packaging and
Deployment Wizard registers component
automatically - Old components can clutter up a system
- Use RegServer32 /unregserver to remove
registration
16Version Compatibility
- Once a component is registered
- Windows maintains its registry entry
- Can not replace it with an incompatible version
- VB allows three forms of compatibility setting
- None Windows does not check for compatibility
- Project for use while a project is under
development - Changes to component interfaces will result in
registration information being updated
accordingly to allow compatibility between
components and clients - Binary for use in deployed components
- changes made to the interface of one or more
classes will result in VB updating the registry
information to ensure that incompatible client
programs do not try to interoperate with the
component
17Creating a Server
- Start an ActiveX EXE or DLL Project
- Implement server classes as required
- Set appropriate instancing for each class
- Create suitable public methods and properties for
communication with client - Compile project to target form (EXE or DLL)
- For an ActiveX EXE, run it once on the target
computer - For an ActiveX DLL, use Package and Deployment
Wizard, or execute RegSvr32.exe
RegSvr32 c\MyComponents\NewComponent.dll
18Using a Server in a VB Program
- Register the server with the program using
Project/References menu and checking on the
server component - Create an instance of the component and use its
methods