SAMPLE: Lines: OLE Automation Server that implements collections

LINES is an OLE Automation server application that implements collections. LINES allows a collection on lines to be drawn on a pane using OLE Automation. It exposes the following objects.

Application object:

Pane Returns the pane in the drawing window.
CreateLine Returns a newly created Line object with no start or end point.
CreatePoint Returns a newly created Point object initialized to (0,0).

Pane object: Properties
Lines Returns a collection of all of the Line objects in the drawing.
Points Returns a collection of all of the Point objects in the drawing.
MaxX Returns the maximum visible X coordinate value in twips.
MaxY Returns the maximum visible Y coordinate value in twips.
Clear Removes all of the Lines and Points from the drawing and refreshes the client area. The result is a blank slate, as if the application had just been launched.
Refresh Clears the drawing area and redraws each of the lines in the Lines collection.

Line object:

Color An RGB color.
EndPoint A Point object inidcating the end point for the line.
StartPoint A Point object indicating the start point for the line.
Thickness A thickness, represented in twips.

Point object:


Lines collection: Standard collection properties and methods. Objects that are added must be of type Line. Objects returned are of type Line.
Add and Remove cause redrawing of the pane.
Adding a line causes two points to be added to the Points collection.
Removing a line may cause one or more points to be removed from the points collection.

Points collection:

Standard collection properties and methods. Objects returned are of type Point.
This collection does not allow addition and removal of members.
The Points collection does not have duplicates. If there are two lines in the drawing
which share an end point (x, y), (x, y) only appears in the collection once.

The sample the following features:

  • Supports dual interfaces which allows access of automation properties and methods through vtable binding and through IDispatch.
    Provides Rich Error information for vtable-binding controllers. This is does by implementing ISupportErrorInfo and using IErrorInfo.
    Implements 2 collections. Implements active object registration using RegisterActiveObject and RevokeActiveObject. Implements correct shut-down behavior. Includes a .reg file which contains Lines.Application as progID. When created for automation, is invisible initially.

To compile: -----------

Requires OLE 2.02 or later. Use the external makefile called makefile to compile. In Win16, run the WXSRVER.EXE from \OLE2\BIN before running the makefile. The makefile invokes mktyplib.exe that reads lines.odl and creates the type library, lines.tlb. It then compliles the source files.

To run: -------

Change lines.reg to provide the full path of lines.exe and lines.tlb. Register lines.reg in the registration database by double-clicking it. The VB directory contains VB 3.0 files to control this sample. Load vb.mak into VB 3.0 and run. This will launch and control LINES. VB 3.0 uses late binding (not vtable-binding) to control LINES. A vtable-binding controller for LINES can be built along the lines of the HELLCTRL sample.

Files: ------

LINES.ODL Object description language that describes the objects that LINES exposes. TLB.H Header file generated by mktyplib.exe MAKEFILE Makefile for project.

Other files implement the LINES automation server. ===========================================================================

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples