OV .NET and BCB Pages

Home, news
VCL components
.NET components


OV Printing Pack - set of components for creating, previewing, printing and saving printable documents

Screen shot
What's new

The print preview ability is the must for all programs creating printable documents. So, I was always wondered why VCL - being very good class library (in spite of written in Pascal :) ) - almost passes by a problem of document creating, previewing and printing. Sure, there is TPrinter, but it is too basic for easy use, and there is no simple way to preview the document. Sure, there is 3rd party reporting tools, but they did not allow to draw all you need or like to draw.

So I decided to write my own components for print preview. And I've succeeded in it! Because I liked the results I decided to publish them.

With time OV Printing Pack ceased to be simple print preview and changed into full-fledged enough print and report engine. It is not WYSIWIG, you should code - instead, you get full freedom in any fine drawing. But it doesn't mean that you are left alone with TCanvas methods. The Pack has power utilities to draw formatted text, tables of complex structure etc.

The package includes the following components:

  • TCustomOVPrintout - basic component for creating the reports. It introduces methods and properties similar to TPrinter, but presents some additional facilities:

- set of framework methods and events that help to code a report in C++ Builder IDE or to create specialized derived classes.

- easily determine or set printer capabilities and settings: page size, margins, orientation, resolution etc.;

- units transformation functions;

- page layout control.

  • Drawing utilities. In addition to methods and properties of TCanvas, that are presented by TCustomOVPrintout component, the Pack contains a number of classes and functions to help drawing:

- powerful methods for formatted text drawing (with various horizontal and vertical alignment and justification, custom tabulations, text rotation, word wrap);

- rich text (RTF) drawing;

- TOVDrawTable class to draw tables of complex structure with any content, with ability to split large tables on pages;

- etc.

  • TOVPrintout doesn't introduce any new behavior and only publishes some protected TCustomOVPrintout properties

When the document is ready, you can preview it, print, save to file for subsequent loading.

  • TOVPreview - component for previewing documents created by TCustomOVPrintout and its descendants. It has more powerful abilities than, for example, MS Word preview has, and may be compared with preview of CAD systems. 

- unrestricted zooming and navigation using TOVPreview methods or by users mouse actions;

- ability to view more than one page at once; pages can be placed in matrix way, few pages in row, that is very important when a document you create (for example, large table or drawing) does not fit one page in width and is split.

- ability to take ownership on corresponding TCustomOVPrintout component that allows to show documents modeless, so user can create and view a few documents at once. Of course, modal preview is supported as well.

  • TOVPreviewForm - default preview form. It can show more than one TOVPreview component on page control at the same time, so user can create and analyze any number of documents at once. The form has controls and keyboard shortcuts for documents' navigation, zooming, printing and saving / loading, and supports mouse wheel scrolling.

The OV Printing Pack user interface can be easily localized by replacing a single little resource file (see help for details). So far the pack has translations for Danish (thanks to Freddy Holst Christensen), English, German and Russian . You are welcome to contribute translations for other languages.


Please download help file and demo application below for more information.

Please view screenshots of default preview form.


Download trial version of OV Printing Pack for C++ Builder 5, 6, 2006, 2009. It is compiled with all available up to now C++ Builder updates.

It is quite functional but paints logo message in the top left corner of each page. The zip file contains help and demo project source code.

Download compiled HTML help for OV Printing Pack ovprintinghelp.zip
Download demo executable OVPrinterDemoSetup.exe
Translated resource files for Danish, English, German and Russian localization.zip



You can buy full version of OV Printing pack with source code for $59 online at ShareIt! (preferred way) or contacting me directly by e-mail. Registered users get all future versions for free.


Main new features in version 1.5

  1. Support for C++ Builder 2009.
    Since VCL in C++ Builder 2009 is Unicode without alternative, I believe there is no sense to make non-unicode VCL applications in it. So the Pack (and applications that use it) must be compiled with "_TCHAR maps to wchar_t" project option.
    I believe the Pack should be compiled in C++ Builder 2007 as well but I haven't it to make a try.
  2. TCustomOVPrintout::PrintPages method got extra parameter that controls if all, odd or even pages will be printed. The parameter has default value to print all pages so it don't breaks existing calling code.
  3. Default preview form (TMemoForm really) save its placement now in ini file under user app settings folder ("...:\Documents and Settings\user\Application Data\CompanyFolder\ApplicationFolder\application.ini".

Main new features in version 1.4

  1. New powerful component TOVDrawTable to draw tables of complex structure.
  2. Support for non-horizontal text drawing (new font management methods, text output methods are enhanced).
  3. Drawing rich text format (RTF).
  4. Some handy drawing utilities for coordinate transformation, GDI objects handling, graphic primitives routines, clipping output.
  5. Changes in TCustomOVPrintout component:
  • New protected virtual methods DoBeginDoc, DoEndDoc, DoBeginPage, DoEndPage, DoPaintPage calling corresponding events. It makes creation of TCustomOVPrintout descendants more handy.
  • New protected virtual method DoFreeResources and corresponding event OnFreeResources intended to allow freeing  resources allocated while drawing.
  • Read-only properties MinMarginLeftMM, MinMarginTopMM, MinMarginRightMM, MinMarginBottomMM added. They provide minimum values of margins conditioned by printer restrictions.

  • Method Print now returns bool indicating that the printing really had a place (was void).
  1. Changes in TOVPreview component:
  • Navigation methods IncrementUp, IncrementDown, IncrementLeft, IncrementRight, Wheel added.
  1. TDefaultPreviewForm:
  • Added actions and keyboard shortcuts for new TOVPreview navigation methods.
  • Bug with incorrect current page indication fixed.
  • Unstable bug with "live" preview deletion fixed.
  • Resource file added with localizable strings for easier localization and internationalization.
  1. Support for BCB 2006.

See help file for more details.

Back to VCL components