Borland®
Shop
Products Downloads Services Support Partners News & Events Company Community
Delphi

Migrating Delphi 2 applcations to Delphi 3

Topics Covered in this document:

  1. OLE
  2. BDE
  3. QReports
  4. DCU Formats
  5. Packages
  6. TTreeView
  7. TDataSet
  8. TypeLibraries
  9. Internet and Web Features
  10. Decision Cube
  11. TeeChart
  12. ReportSmith
  13. General Enhancments

  14. Ole Class Definition Appendix

 


1. OLE

There have been major renovations in the way that the OLE FrameWork has been implemented in Delphi 3.0x. As a direct result of this, recompilation of your Delphi 2.0x application will be insufficient to take advantage of this new technology. You may Cut and Paste most of your code, but some massaging may be necessary.

In Delphi 3.0x, you should use this new syntax:

IFoo = interface(IUnknown);
Tfoo = Class(TObject, Ifoo);

New implementation of keyword 'Interface':
Allows creation of a COM Interface Object (essentially creates a pure virtual/Abstract class). Using the keyword interface in Delphi 3 will also allow you to use the interface name as a Class ID (TCLSID) constant. Example:

if IsEqualCLSID(iid, IMalloc) then

See Chapter 13 in the Object Pascal Language Reference Guide for more information on Interfaces.

Most of the Types that were declared in the OLE2.PAS file in Delphi 2.0x have been moved to ACTIVEX.PAS in Delphi 3. There are significant changes in OLECTRLS.PAS, OLECTNRS.PAS, and SHLOBJ.PAS.

Chapter 13 in the Object Pascal Language Reference explains the new use of the keyword INTERFACE. Other great resources for COM/OLE include:

Title: Special Edition Using Delphi 3 (See Chapters 18, 19, 20, 21)
Publisher: Que
Author(s): David Powell, Todd Miller, et al.

Title: Inside OLE, version 2
Publisher: Mirosoft Press
Author: Kraig BrockSchmidt


2. Borland Database Engine

Migrating applications that use the BDE from Delphi 2 to Delphi 3 is not very involved. The main concern is how you will use the new features. In addition to these you should check out Delphi 3 and BDE 4.x Question and Answers Document. This URL provides information on the most common BDE migration issues as they occur. Also check out the Delphi 3 help file topic Compatability with Delphi 2. This covers a number of issues that are likely to be of interest to BDE users migrating. The following are the highlights of the new features:

  • The BDE Administrator is the new tool for configuration and administration of the bde. It has all the capabilities of the old BDE Configuration tool that deployed with Delphi 2 but shares the look and feel of the Database Explorer.
  • There are 2 new drivers allowing Delphi applications to use data from MS Access tables and FoxPro without using ODBC. This includes support for CDX indices in FoxPro.
  • Two new BDE API functions, DbiAddDriver and DbiDeleteDriver, allow adding and deleting of drivers from the current BDE configuration or session.
  • The BDE now automatically adds ODBC drivers and data sources as BDE aliases to the active session when they are not currently stored in the configuration file. (Check out TI3217 - Adding ODBC Drivers in Delphi 3.0)
  • Binding Blobs as parameters in Queries and Stored Procs.
  • ODBC 3.0 support.
  • SQL Monitor can now display the value of bound parameters.

3. QReports

Migrating QuickReports application from Delphi 2 to Delphi 3 will involve some restructuring of the reports. Some of the components have changed and there are new components added. Borland has a limited ability to characterize the changes in this tool as it is a third party tool that is bundled with Delphi. As such we do not create or maintain the source code, nor do we have access to it for support purposes. The file Qrpt2man.doc in the QuickRpt directory contains step by step instructions for converting projects from QReports 1 to QReports 2. Refer to section 6 appendix C for further information on this subject.

Delphi 2 QR 1.0d components:
QRBand, QRDBCalc, QRDetailLink, QRDBText, QRGroup, QRLabel, QRMemo, QRPreview, QRPrinter, QRSysData, QRShape, QuickReport, QRCustomControl.

Delphi 3 QR 2 components
QuickRep, QRSubDetail, QRBand, QRChildBand, QRGroup, QRLabel, QRDBText,QRExpr, QRSysData, QRMemo, QRRichText, QRDBRichText, QRShape, QRImage, QRDBImage, QRCompositeReport, QRPreview, QRChart

New to Delphi 3 QR 2.0
QRComposite, QRRichText, QRDBRichText, QRImage, QRDBImage, QRChart


4. .DCU Formats

When a project is compiled or run, Delphi's compiler produces an intermediate output file on disk from a unit's source code. This compiled version of a unit is stored in a binary-format file with the same name as the unit file, but with the extension .DCU (Delphi Compiled Unit). A .DCU file should not be edited or opened under any circumstance and is not necessary for deployment. Since this is a proprietary format it is liable to change from version to version of the product. If a project is created in Delphi 1 or Delphi 2 the only files necessary to recompile it under Delphi 3 are the .DFM, .PAS, and .DPR file.

If a project contains resource files (.RES) consisting of custom cursors, icons, etc. they will also need to be included. It is critical to NOT relocate the .DCU files along with the other files as that it may lead to strange and unexplainable behaviors with an application.


5. Packages

Packages (.DPL) are special dynamic-link libray used by Delphi 3 applications, the IDE or both. (see DELPHI3.HLP) Packages come in two flavors, runtime and design-time. Runtime packages provide functionality when running an application while design-time packages provide development phase functionality. One notable change in Delphi 3 concerning packages is of using ExitProc() (see DELPHI3.HLP, 'Changes introduced by packages'). For more information on the new file types introduced by packages see TI3213 - Delphi 3 File Types with Descriptions.

Migration Issues

A. 3rd Party Components: (see DELPHI3.HLP, 'using older third party components')
When migrating applications that utilize 3rd party components from Delphi 2 to Delphi 3 it is essential to keep in mind these 3 items:
  1. .DCU files are not cross version compatible. The source code is necessary for recompiling 3rd party components under Delphi 3
  2. Changes in the VCL source or version specific syntax may have occured between versions. While the external interface for the VCL will remain the same, the internal workings of the VCL may have changed
  3. Always make sure that the 3rd party vendor provides a Delphi 3 compatible version of their component.

B. Custom Components
Most of the issues regarding custom components also fall into the above listed categories. Additionally, components must be made into packages before being added into the component palette. (see DELPHI3.HLP)

C. Deployment to end users
Like Delphi 2, a standalone executable can still be easily created with Delphi 3. Delphi 3 also provides the option to use packages which in turn deploys runtime packages for your application.

D. Deploying Components
With the invention of packages in Delphi 3 the concept of deploying runtime and design-time components changes from Delphi 2. In order to deploy a component for runtime it must be compiled using runtime packages or the appropriate .DPL file must be included along with the .EXE.

If a component is being deployed for design-time use it must be designated as being a design-time package and also be deployed with it's corresponding .DCU file.


6. TTreeView

If a custom component descending from TTreeView has been created in Delphi 2 the event handlers have been reworked. For example: The OnExpanded, OnExpanding, OnCollapsed, and OnCollapsing events now occur in all parent nodes no matter how the nodes are expanded or collapsed.


7. TDataSet - Database Object Differences

The primary differences in the database component hierarchy between Delphi 2 and Delphi 3 involve the introduction of the TBDEDataSet.

In Delphi 2, is was not practical to make data-aware controls that did not use the BDE. TBDEDataSet was designed to implement BDE-specific code and TDataSet was generalized so that it knew nothing about the BDE and merely knew how to do general things like dealing with records.

It is now possible to make objects that descend from TDataSet and implement database functionality without involving the BDE at all. These TDataSet descendent components will then also work with all of the standard Delphi data-aware controls.

Chapter 5 of the Delphi 3 "Developer's Guide" gives details and examples for the TDataSet and Chapter 6 discusses the TBDEDataSet.

Remote Data Sets

Unlike Delphi 2, Delphi 3 gives the developer the ability to make a very light-weight database client where the BDE is actually running on a different machine than the client program. This remote, multi-tier capability is implemented by the new Data Access controls: Provider, ClientDataSet, and RemoteServer.Chapter 18 of the Delphi 3 "Developer's Guide" gives details and examples for using remote data sets.
New Data-Aware Controls

Delphi 3 also implements several nice new database controls: DBRichEdit for storing memo-type data in "Rich Text Format", and the DBChart which uses the Tee-Chart charting engine to quickly make graphs directly for the data in database tables without requiring any code.

Chapter 14 of the Delphi 3 "Developer's Guide" discusses the TDBRichEdit control, the TDBChart component as well as all the other Tee-Chart related controls are documented in the "TCHARV3.DOC" file in the ..\Borland\Delphi 3\TeeChart directory after Delphi 3 is installed.

New decision support capabilities were added with the Decision Cube set of components which allow a user to drill-down into their data and do multi-dimensional analysis without any additional programming.

Chapter 16 of the Delphi 3 "Developer's Guide" gives details and examples relating to the new Decision Support components.

After many requests, the DBGrid now has the ability to show the contents of database memo fields due to the BDE's new memo caching capability.


8. TypeLibrary Editor

The Type Library Editor is the new feature that allows users to easily open type libraries from .tlb, .ocx, or .exe files that contain them. It also allows the user to generate a type library for deployment or use with other development tools. For more information on the Type Library Editor you can refer to the Delphi 3 Help and search under Type Library Editor, or for more information on type libraries in general search the Help for type libraries. Additional information can be found in the MSDN.


9. Internet and Web Features

Delphi 2 allowed users to create CGI application, ISAPI dlls, NSAPI dlls, and WINCGI applications but Delphi 3 now provides a Wizard which greatly simplifies the process and eliminates a great deal of the work involved. Delphi 3 also provides the user with the isapter dll that eliminates creation of separate ISAPI and NSAPI version of the web application. Finally Delphi 3 provides a series of new web enabled components on the internet tab of the component palette. These include components like the PageProducer that simplify web application development and the new socket components that wrap the winsock functionality.


10. Decision Cube - Decision Support Components

In Delphi 3 Client/Server, a new group of components facilitates data analysis for decision support. These components include TDecisionCube, a multidimensional array that caches cross-tabulated data from a dataset; TDecisionQuery, a special dataset object that simplifies use of Decision Cubes; TDecisionSource, which represents a pivot state on data from a Decision Cube; TDecisionGrid, which displays cross-tabulated data from a Decision Source; and TDecisionGraph, which displays Decision-Source data in dynamic graphs.

For further information on these components see the Delphi Help files and from the contents select What's New. Under this heading the Decision Support Components are listed. To create a simple example using the Decision Support Components do File|New..., then select the business tab from the object repository. Now select the Decision Cube object and hit return.


11. TeeChart - TeeChart Graphing Components

100% Native Data-Aware Charting Component Library for Borland Delphi, TeeChart 3 runtime version is packaged with Delphi version 3. It is a fully functional charting library packed with many powerful charting capabilities.

For further information on TeeChart refer to the online documentation including the teechart.hlp file in the default Delphi 3 help subdirectory and the tchartv3.doc file in the teechart directory under the Delphi 3 directory. This component suite also has an exhaustive example program in the demos subdirectory under the Delphi 3 subdirectory. Finally, selecting File|New..., selecting the Business tab, then selecting the TeeChart Wizard allows for rapid use of this component suite.


12. ReportSmith

Delphi 3 no longer deploys with ReportSmith and although the TReport component is not on the Delphi 3 palette it can be added. Simply select Component|Configure Palette, selecting all, and then select the TReport component from the very bottom of the list and then click the Show button. This allows your ReportSmith applications to be migrated to Delphi 3. Keep in mind that Strategic Reporting System is now supporting the ReportSmith tool and that they can be reached at 508-531-0905.


13. General Enhancments

There are a series of general enhancments to Delphi 3 that are listed in the Delphi 3 help under What's New. These features include improved graphics capabilities, compiler additions, Code Insight, and many other features. Please explore the What's New section of the help for details on all the great new features of Delphi 3.

For information on what has changed with respect to deployment of applications be sure to read deploy.txt. This documents the details of supported deployment methods for your application.


14. Appendix A OLE Class Declarations Delphi2/3


*******************************************************************
DELPHI 2.0X:
*******************************************************************
 
OLE2.PAS
  Classes:
        IClassFactory = class(IUnknown)
        IMarshal = class(IUnknown)
        IMalloc = class(IUnknown)
        IMallocSpy = class(IUnknown)
        IStdMarshalInfo = class(IUnknown)
        IExternalConnection = class(IUnknown)
        IWeakRef = class(IUnknown)
        IEnumUnknown = class(IUnknown)
        IBindCtx = class(IUnknown)
        IEnumMoniker = class(IUnknown)
        IRunnableObject = class(IUnknown)
        IRunningObjectTable = class(IUnknown)
        IPersist = class(IUnknown)
        IPersistStream = class(IPersist)
        IMoniker = class(IPersistStream)
        IEnumString = class(IUnknown)
        IStream = class(IUnknown)
        IEnumStatStg = class(IUnknown)
        IStorage = class(IUnknown)
        IPersistFile = class(IPersist)
        IPersistStorage = class(IPersist)
        ILockBytes = class(IUnknown)
        IEnumFormatEtc = class(IUnknown)
        IEnumStatData = class(IUnknown)
        IRootStorage = class(IUnknown)
        IAdviseSink = class(IUnknown)
        IAdviseSink2 = class(IAdviseSink)
        IDataObject = class(IUnknown)
        IDataAdviseHolder = class(IUnknown)
        IMessageFilter = class(IUnknown)
        IRpcChannelBuffer = class(IUnknown)
        IRpcProxyBuffer = class(IUnknown)
        IRpcStubBuffer = class(IUnknown)
        IPSFactoryBuffer = class(IUnknown)
        ICreateTypeInfo = class(IUnknown)
        ICreateTypeLib = class(IUnknown)
        IDispatch = class(IUnknown)
        IEnumVariant = class(IUnknown)
        ITypeComp = class(IUnknown)
        ITypeInfo = class(IUnknown)
        ITypeLib = class(IUnknown)
        IErrorInfo = class(IUnknown)
        ICreateErrorInfo = class(IUnknown)
        ISupportErrorInfo = class(IUnknown)
        IOleAdviseHolder = class(IUnknown)
        IOleCache = class(IUnknown)
        IOleCache2 = class(IOleCache)
        IOleCacheControl = class(IUnknown)
        IParseDisplayName = class(IUnknown)
        IOleContainer = class(IParseDisplayName)
        IOleClientSite = class(IUnknown)
        IOleObject = class(IUnknown)
        IOleWindow = class(IUnknown)  
        IOleLink = class(IUnknown)
        IOleItemContainer = class(IOleContainer)
        IOleInPlaceUIWindow = class(IOleWindow)
        IOleInPlaceActiveObject = class(IOleWindow)
        IOleInPlaceFrame = class(IOleInPlaceUIWindow)
        IOleInPlaceObject = class(IOleWindow)
        IOleInPlaceSite = class(IOleWindow)  
        IViewObject = class(IUnknown)
        IViewObject2 = class(IViewObject)  
        IDropSource = class(IUnknown)
        IDropTarget = class(IUnknown)
        IEnumOleVerb = class(IUnknown)
 
  Records:
        TGUID = record
        TObjectID = record
        TBindOpts = record
        TStatStg = record
        TDVTargetDevice = record
        TFormatEtc = record
        TStatData = record
        TRemStgMedium = record
        TStgMedium = record
        TInterfaceInfo = record
        TRpcOleMessage = record
        TBlob = record
        TClipData = record
        TSafeArrayBound = record
        TSafeArray = record
        TVariantArg = record
        TTypeDesc = record
        TArrayDesc = record
        TIDLDesc = record
        TElemDesc = record
        TTypeAttr = record
        TDispParams = record
        TExcepInfo = record
        TFuncDesc = record
        TVarDesc = record
        TBindPtr = record
        TTLibAttr = record
        TParamData = record
        TMethodData = record
        TInterfaceData = record
        TObjectDescriptor = record
        TOleInPlaceFrameInfo = record
        TOleMenuGroupWidths = record
        TOleVerb = record
     
OLEAUTO.PAS
  Classes:
	TAutoObject = class(TObject)
	TAutoDispatch = class(IDispatch)
	TAutoClass = class(TAutoObject)
	TRegistryClass = class
	TAutoMation = class
	EOleError = class(Exception)
	EOleSysError = class(EOleError)
	EOleException = class(EOleError)
	TClassFactory = class(IClassFactory)
 
  Records:
	TAutoClassInfo = record
	TParamList = record
	TAutoEntry = record
	TAutoTable = record
	TStringDesc = record
	TVarStrDesc = record
 
OLECTNRS.PAS
  Classes:
	TOleContainer = class
	TOleForm = class
        TOleClientSite = class(IOleClientSite)
        TOleInPlaceSite = class(IOleInPlaceSite)	
 	TAdviseSink = class(IAdviseSink)
        TOleContainer = class(TCustomControl)
        TOleInPlaceFrame = class(IOleInPlaceFrame)
        TOleForm = class(TOleFormObject)
        TOleUIObjInfo = class(IOleUIObjInfo)
        TOleUILinkInfo = class(IOleUILinkInfo)
        TEnumFormatEtc = class(IEnumFormatEtc)
        TDataObject = class(IDataObject)
 
  Records:
	TCreateInfo = record
	TVerbInfo = record
	TStreamHeader = record
				
OLECTRLS.PAS
  Classes:
        TOleControl = class
        TOleClientSite = class(IOleClientSite)
        TOleControlSite = class(IOleControlSite)
        TOleInPlaceSite = class(IOleInPlaceSite)	
        TOleInPlaceFrame = class(IOleInPlaceFrame)
        TAmbientDispatch = class(IDispatch)
        TEventDispatch = class(IDispatch)
        TPropertyNotifySink = class(IPropertyNotifySink)
        TSimpleFrameSite = class(ISimpleFrameSite)
        TEnumPropDesc = class
        TOleControl = class(TWinControl)
        EOleCtrlError = class(Exception)
 
  Records:
        TEnumValue = record
        TControlData = record
        TEventArg = record
        TEventInfo = record
        TStringDesc = record
 
OLEDLG.PAS
  Classes:
        IOleUILinkContainer = class(IUnknown)
        IOleUIObjInfo = class(IUnknown)
        IOleUILinkInfo = class(IOleUILinkContainer)
 
  Records:
        TOleUIInsertObject = record		
        TOleUIPasteEntry = record
        TOleUIPasteSpecial = record
        TOleUIEditLinks = record
        TOleUIChangeIcon = record
        TOleUIConvert = record
        TOleUIBusy = record
        TOleUIGnrlProps = record
        TOleUIViewProps = record
        TOleUILinkProps = record
        TOleUIObjectProps = record
 
OLECTL.PAS
  Classes:
        IOleControl = class(IUnknown)
        IOleControlSite = class(IUnknown)
        ISimpleFrameSite = class(IUnknown)
        IPersistStreamInit = class(IPersistStream)
        IPropertyNotifySink = class(IUnknown)
        IProvideClassInfo = class(IUnknown)
        IConnectionPointContainer = class(IUnknown)
        IEnumConnectionPoints = class(IUnknown)
        IConnectionPoint = class(IUnknown)
        IEnumConnections = class(IUnknown)
        IClassFactory2 = class(IClassFactory)
        ISpecifyPropertyPages = class(IUnknown)
        IPerPropertyBrowsing = class(IUnknown)
        IPropertyPageSite = class(IUnknown)
        IPropertyPage = class(IUnknown)
        IPropertyPage2 = class(IPropertyPage)
        IFont = class(IUnknown)
        IFontDisp = class(IDispatch)
        IPicture = class(IUnknown)
        IPictureDisp = class(IDispatch)
  	
  Records:
        TPointF = record
        TControlInfo = record
        TConnectData = record
        TLicInfo = record  
        TCAGUID = record
        TCAPOleStr = record
        TCALongint = record
        TOCPFIParams = record
        TPropPageInfo = record
        TFontDesc = record
        TPictDesc = record
 
SHLOBJ.PAS
  Classes:
        IContextMenu = class(IUnknown)
        IShellExtInit = class(IUnknown)
        IShellPropSheetExt = class(IUnknown)
        IExtractIcon = class(IUnknown)
        IShellLink = class(IUnknown)
        ICopyHook = class(IUnknown)
        IFileViewerSite = class(IUnknown)
        IFileViewer = class(IUnknown)
        IEnumIDList = class(IUnknown)
        IShellFolder = class(IUnknown)
 
  Records:
        NONE
 
*******************************************************************
Delphi 3.0x:
*******************************************************************
COMOBJ.PAS
  Classes:
        TComServerObject = class(TObject)
        TComClassManager = class(TObject)
        TComObject = class(TObject, IUnknown, ISupportErrorInfo)
        TComObjectFactory = class(TObject, IUnknown, IClassFactory,
         IClassFactory2)
        TTypedComObject = class(TComObject, IProvideClassInfo)
        TTypedComObjectFactory = class(TComObjectFactory)
        TAutoObject = class(TTypedComObject, IDispatch)
        TAutoObjectFactory = class(TTypedComObjectFactory)
        TAutoIntfObject = class(TInterfacedObject, IDispatch,
          ISupportErrorInfo)
        EOleError = class(Exception)
        EOleSysError = class(EOleError)
        EOleException = class(EOleSysError)
 
  Interfaces:
        NONE
 
  Records:
        TStringDesc = record
        TExcepInfoRec = record
 
COMSERV.PAS
  Classes:
        TComServer = class(TComServerObject)
 
  Interfaces:
        NONE
 
  Records:
        NONE
 
ACTIVEX.PAS
  Classes:
	NONE
 
  Interfaces:
	  IClassFactory = interface(IUnknown)
	  IMarshal = interface(IUnknown)
	  IMalloc = interface(IUnknown)
	  IMallocSpy = interface(IUnknown)
	  IStdMarshalInfo = interface(IUnknown)
	  IExternalConnection = interface(IUnknown)
	  IWeakRef = interface(IUnknown)
	  IEnumUnknown = interface(IUnknown)
	  IBindCtx = interface(IUnknown)
	  IEnumMoniker = interface(IUnknown)
	  IRunnableObject = interface(IUnknown)
	  IRunningObjectTable = interface(IUnknown)
	  IPersist = interface(IUnknown)
	  IPersistStream = interface(IPersist)
	  IMoniker = interface(IPersistStream)
	  IEnumString = interface(IUnknown)
	  IStream = interface(IUnknown)
	  IEnumStatStg = interface(IUnknown)
	  IStorage = interface(IUnknown)
	  IPersistFile = interface(IPersist)  
          IPersistStorage = interface(IPersist)
	  ILockBytes = interface(IUnknown)
	  IEnumFormatEtc = interface(IUnknown)
	  IEnumStatData = interface(IUnknown)
	  IRootStorage = interface(IUnknown)
	  IAdviseSink = interface(IUnknown)
	  IAdviseSink2 = interface(IAdviseSink)
	  IDataObject = interface(IUnknown)
	  IDataAdviseHolder = interface(IUnknown)
	  IMessageFilter = interface(IUnknown)
	  IRpcChannelBuffer = interface(IUnknown)
	  IRpcProxyBuffer = interface(IUnknown)
	  IRpcStubBuffer = interface(IUnknown)
	  IPSFactoryBuffer = interface(IUnknown)
	  IChannelHook = interface(IUnknown)
	  IFillLockBytes = interface(IUnknown)
	  ICreateTypeInfo = interface(IUnknown)
	  ICreateTypeLib = interface(IUnknown)
	  IEnumVariant = interface(IUnknown)
	  ITypeComp = interface(IUnknown)
	  ITypeInfo = interface(IUnknown)
	  ITypeLib = interface(IUnknown)
	  IErrorInfo = interface(IUnknown)
	  ICreateErrorInfo = interface(IUnknown)
	  ISupportErrorInfo = interface(IUnknown)
	  IOleAdviseHolder = interface(IUnknown)
	  IOleCache = interface(IUnknown)
	  IOleCache2 = interface(IOleCache)
	  IOleCacheControl = interface(IUnknown)
	  IParseDisplayName = interface(IUnknown)
	  IOleContainer = interface(IParseDisplayName)
	  IOleClientSite = interface(IUnknown)
	  IOleObject = interface(IUnknown)
	  IOleWindow = interface(IUnknown)
	  IOleLink = interface(IUnknown)
	  IOleItemContainer = interface(IOleContainer)
	  IOleInPlaceUIWindow = interface(IOleWindow)
	  IOleInPlaceActiveObject = interface(IOleWindow)
	  IOleInPlaceFrame = interface(IOleInPlaceUIWindow)
	  IOleInPlaceObject = interface(IOleWindow)
	  IOleInPlaceSite = interface(IOleWindow)
	  IViewObject = interface(IUnknown)
	  IViewObject2 = interface(IViewObject)
	  IDropSource = interface(IUnknown)
	  IDropTarget = interface(IUnknown)
	  IEnumOleVerb = interface(IUnknown)
	  IOleControl = interface
	  IOleControlSite = interface
	  ISimpleFrameSite = interface
	  IObjectWithSite = interface
	  IErrorLog = interface
	  IPropertyBag = interface
	  IPersistPropertyBag = interface(IPersist)
	  IPersistStreamInit = interface(IPersistStream)
	  IPropertyNotifySink = interface
	  IProvideClassInfo = interface
	  IConnectionPointContainer = interface
	  IEnumConnectionPoints = interface
	  IConnectionPoint = interface
	  IEnumConnections = interface
	  IClassFactory2 = interface(IClassFactory)
	  ISpecifyPropertyPages = interface
	  IPerPropertyBrowsing = interface
	  IPropertyPageSite = interface
	  IPropertyPage = interface
	  IPropertyPage2 = interface(IPropertyPage)
	  IFont = interface
	  Font = interface(IDispatch)
	  IPicture = interface
	  Picture = interface(IDispatch)
	  IOleDocumentView = interface(IUnknown)
	  IEnumOleDocumentViews = interface(IUnknown)
	  IOleDocument = interface(IUnknown)
	  IOleDocumentSite = interface(IUnknown)
	  IContinueCallback = interface(IUnknown)
	  IServiceProvider = interface(IUnknown)
	  IPrint = interface(IUnknown)
	  IOleCommandTarget = interface(IUnknown)
	  IActiveDesigner = interface
	  IPersistTextStream = interface(IPersistStreamInit)
	  IProvideRuntimeText = interface
	
  Records:
        TObjectID = record
        TCoServerInfo = record
        TMultiQI = record
        TPointF = record
        TControlInfo = record
        TBindOpts = record
        TStatStg = record
        TDVTargetDevice = record
        TFormatEtc = record
        TStatData = record
        TRemStgMedium = record
        TStgMedium = record
        TInterfaceInfo = record
        TRpcOleMessage = record
        TDecimal = record
        TBlob = record
        TClipData = record
        TSafeArrayBound = record
        TSafeArray = record
        TVariantArg = record
        TTypeDesc = record
	TArrayDesc = record
        TIDLDesc = record
	TElemDesc = record
	TTypeAttr = record
	TDispParams = record
	TExcepInfo = record
	TFuncDesc = record
	TVarDesc = record
	TBindPtr = record
	TTLibAttr = record
	TParamData = record
	TMethodData = record
	TInterfaceData = record
	TObjectDescriptor = record
	TOleInPlaceFrameInfo = record
	TOleMenuGroupWidths = record
	TOleVerb = record
	TConnectData = record
	TLicInfo = record
	TCAGUID = record
	TCAPOleStr = record  
	TCALongint = record
	TOCPFIParams = record
	TPropPageInfo = record
	TSOleAuthenticationService = record
	TFontDesc = record
	TPictDesc = record
	TPageRange = record
	TPageSet = record  
	TOleCmd = record
	TOleCmdText = record
 
OLE2.PAS
  Classes:
  	  IUnknown = class
	  IClassFactory = class(IUnknown)
	  IMarshal = class(IUnknown)
	  IMalloc = class(IUnknown) 
	  IMallocSpy = class(IUnknown)
	  IStdMarshalInfo = class(IUnknown)
	  IExternalConnection = class(IUnknown)
	  IWeakRef = class(IUnknown)
	  IEnumUnknown = class(IUnknown)
	  IBindCtx = class(IUnknown)  
	  IEnumMoniker = class(IUnknown)
	  IRunnableObject = class(IUnknown)
	  IRunningObjectTable = class(IUnknown)
	  IPersist = class(IUnknown)
	  IPersistStream = class(IPersist)
	  IMoniker = class(IPersistStream)
	  IEnumString = class(IUnknown)
	  IStream = class(IUnknown)
	  IEnumStatStg = class(IUnknown)
	  IStorage = class(IUnknown)
	  IPersistFile = class(IPersist)
	  IPersistStorage = class(IPersist)
	  ILockBytes = class(IUnknown)
	  IEnumFormatEtc = class(IUnknown)
	  IEnumStatData = class(IUnknown)
	  IRootStorage = class(IUnknown)
	  IAdviseSink = class(IUnknown)
	  IAdviseSink2 = class(IAdviseSink)
	  IDataObject = class(IUnknown)
	  IDataAdviseHolder = class(IUnknown)
	  IMessageFilter = class(IUnknown)
	  IRpcChannelBuffer = class(IUnknown)
	  IRpcProxyBuffer = class(IUnknown)
	  IRpcStubBuffer = class(IUnknown)
	  IPSFactoryBuffer = class(IUnknown)
	  ICreateTypeInfo = class(IUnknown)
	  ICreateTypeLib = class(IUnknown)
	  IDispatch = class(IUnknown)
	  IEnumVariant = class(IUnknown)
	  ITypeComp = class(IUnknown)
	  ITypeInfo = class(IUnknown)
	  ITypeLib = class(IUnknown)
	  IErrorInfo = class(IUnknown)
	  ICreateErrorInfo = class(IUnknown)
	  ISupportErrorInfo = class(IUnknown)
	  IOleAdviseHolder = class(IUnknown)
	  IOleCache = class(IUnknown)
	  IOleCache2 = class(IOleCache)
	  IOleCacheControl = class(IUnknown)
	  IParseDisplayName = class(IUnknown)
	  IOleContainer = class(IParseDisplayName)
	  IOleClientSite = class(IUnknown)
	  IOleObject = class(IUnknown)
	  IOleWindow = class(IUnknown)
	  IOleLink = class(IUnknown)
	  IOleItemContainer = class(IOleContainer)
	  IOleInPlaceUIWindow = class(IOleWindow)
	  IOleInPlaceActiveObject = class(IOleWindow)
	  IOleInPlaceFrame = class(IOleInPlaceUIWindow)
	  IOleInPlaceObject = class(IOleWindow)
	  IOleInPlaceSite = class(IOleWindow)
	  IViewObject = class(IUnknown)
	  IViewObject2 = class(IViewObject)
	  IDropSource = class(IUnknown)  
	  IDropTarget = class(IUnknown)
	  IEnumOleVerb = class(IUnknown)
	  IOleDocumentView = class(IUnknown)
	  IEnumOleDocumentViews = class(IUnknown)
	  IOleDocument = class(IUnknown)
	  IOleDocumentSite = class(IUnknown)
	
  Interfaces:
          NONE
 
  Records:
	  TGUID = record
	  TObjectID = record
	  TBindOpts = record
	  TStatStg = record
	  TDVTargetDevice = record
	  TFormatEtc = record
	  TStatData = record
	  TRemStgMedium = record
	  TStgMedium = record
	  TInterfaceInfo = record
	  TRpcOleMessage = record
	  TBlob = record
	  TClipData = record
	  TSafeArrayBound = record
	  TSafeArray = record
	  TVariantArg = record
	  TTypeDesc = record
	  TArrayDesc = record
	  TIDLDesc = record
	  TElemDesc = record
	  TTypeAttr = record
	  TDispParams = record
	  TExcepInfo = record
	  TFuncDesc = record
	  TVarDesc = record
	  TBindPtr = record
	  TTLibAttr = record
	  TParamData = record
	  TMethodData = record
	  TInterfaceData = record
	  TObjectDescriptor = record
	  TOleInPlaceFrameInfo = record
	  TOleMenuGroupWidths = record
	  TOleVerb = record
 
 
OLECTL.PAS
  Classes:
	  IOleControl = class(IUnknown)
	  IOleControlSite = class(IUnknown)
	  ISimpleFrameSite = class(IUnknown)
	  IPersistStreamInit = class(IPersistStream)
	  IPropertyNotifySink = class(IUnknown)
	  IProvideClassInfo = class(IUnknown)
	  IConnectionPointContainer = class(IUnknown)
	  IEnumConnectionPoints = class(IUnknown)
	  IConnectionPoint = class(IUnknown)
	  IEnumConnections = class(IUnknown)
	  IClassFactory2 = class(IClassFactory)
	  ISpecifyPropertyPages = class(IUnknown)
	  IPerPropertyBrowsing = class(IUnknown)
	  IPropertyPageSite = class(IUnknown)
	  IPropertyPage = class(IUnknown)
	  IPropertyPage2 = class(IPropertyPage)
	  IFont = class(IUnknown)
	  IFontDisp = class(IDispatch);
	  IPicture = class(IUnknown)
	  IPictureDisp = class(IDispatch);
 
  Interfaces:
	  NONE
 
  Records: 
	  TPointF = record
	  TControlInfo = record
	  TConnectData = record
	  TLicInfo = record
	  TCAGUID = record
	  TCAPOleStr = record
	  TCALongint = record  
	  TOCPFIParams = record
	  TPropPageInfo = record
	  TFontDesc = record
	  TPictDesc = record
 
OLEDLG.PAS
  Classes:
  	  NONE
 
  Interfaces:
	  IOleUILinkContainer = interface(IUnknown)
	  IOleUIObjInfo = interface(IUnknown)
	  IOleUILinkInfo = interface(IOleUILinkContainer)
 
  Records:
	  TOleUIInsertObject = record
	  TOleUIPasteEntry = record
	  TOleUIPasteSpecial = record
	  TOleUIEditLinks = record
	  TOleUIChangeIcon = record
	  TOleUIConvert = record
	  TOleUIBusy = record
	  TOleUIGnrlProps = record
	  TOleUIViewProps = record
	  TOleUILinkProps = record
	  TOleUIObjectProps = record
 
SHLOBJ.PAS
  Classes:
  	  NONE
 
  Interfaces:
	  IContextMenu = interface(IUnknown)
	  IContextMenu2 = interface(IContextMenu)
	  IShellExtInit = interface(IUnknown)
	  IShellPropSheetExt = interface(IUnknown)
	  IPersistFolder = interface(IPersist)
	  IExtractIconA = interface(IUnknown)
	  IExtractIconW = interface(IUnknown)
	  IShellIcon = interface(IUnknown)
          IShellLinkA = interface(IUnknown)
          IShellLinkW = interface(IUnknown)
          IShellExecuteHookA = interface(IUnknown) 
          IShellExecuteHookW = interface(IUnknown) 
          INewShortcutHookA = interface(IUnknown) 
          INewShortcutHookW = interface(IUnknown)
          ICopyHookA = interface(IUnknown) 
          ICopyHookW = interface(IUnknown) 
	  IFileViewerSite = interface(IUnknown)
	  IFileViewerA = interface(IUnknown)
	  IFileViewerW = interface(IUnknown)
	  IShellView = interface;
	  IShellBrowser = interface(IOleWindow)
	  ICommDlgBrowser = interface(IUnknown)
	  IShellView = interface(IOleWindow)
	  IShellView2 = interface(IShellView)
	  IEnumIDList = interface(IUnknown)
	  IShellFolder = interface(IUnknown)
 
  Records:
	  NONE
 
 
OLEAUTO.PAS
  Classes:
	  TAutoDispatch = class(IDispatch)
	  TAutoObject = class(TObject)
	  TRegistryClass = class
	  TAutomation = class
	  EOleError = class(Exception)
	  EOleSysError = class(EOleError)
	  EOleException = class(EOleError)
	  TClassFactory = class(IClassFactory)
 
  Interfaces:
	  NONE
  Records:
	  TAutoClassInfo = record
          TParamList = record
          TAutoEntry = record
	  TAutoTable = record
	  TStringDesc = record
	  TVarStrDesc = record
 
OLECTNRS.PAS
  Classes:
	  TOleContainer = class(TCustomControl, IUnknown,
            IOleClientSite, IOleInPlaceSite, IAdviseSink,
            IOleDocumentSite, IOleUIObjInfo)
	  TOleForm = class(TInterfacedObject, IOleForm,
            IOleWindow, IOleInPlaceUIWindow, IOleInPlaceFrame,
            IVCLFrameForm)
	  TOleUILinkInfo = class(TInterfacedObject, IOleUILinkInfo)
	  TEnumFormatEtc = class(TInterfacedObject, IEnumFormatEtc)
	  TDataObject = class(TInterfacedObject, IDataObject)
 
  Interfaces:
	  IVCLFrameForm = interface(IOleInPlaceFrame)
 
  Records:
	  TCreateInfo = record
	  TVerbInfo = record
	  TStreamHeader = record
 
OLECTRLS.PAS
  Classes:
	  TOleControl = class
	  TEventDispatch = class(TObject, IUnknown, IDispatch)
	  TEnumPropDesc = class
	  TOleControl = class(TWinControl, IUnknown,
            IOleClientSite, IOleControlSite, IOleInPlaceSite,
            IOleInPlaceFrame, IDispatch, IPropertyNotifySink,
            ISimpleFrameSite)
	  EOleCtrlError = class(Exception)
  
  Interfaces:
	  NONE
 
  Records:
          TEnumValue = record
	  TControlData = record
	  TEventArg = record
	  TEventInfo = record
	  TStringDesc = record
 
VCLCOM.PAS
  Classes:
	  TComponentFactory = class(TAutoObjectFactory)
	  TVCLAutoObject = class(TAutoObject, IVCLComObject)
	  TComponentProtectedAccess = class(TComponent);
 
  Interfaces:
	  NONE
  Records:
	  NONE
 
AXCTRLS.PAS
  Classes:
	  TOleStream = class(TStream)	
	  TAggregatedObject = class
	  TContainedObject = class(TAggregatedObject, IUnknown)
	  TConnectionPoints = class
	  TConnectionPoint = class(TContainedObject,
            IConnectionPoint)
	  TConnectionPoints = class(TAggregatedObject,
	    IConnectionPointContainer)
	  TActiveXControlFactory = class
	  TActiveXControl = class(TAutoObject,
	    IPersistStreamInit,
	    IPersistStorage,
	    IOleObject,
	    IOleControl,
	    IOleInPlaceObject,
	    IOleInPlaceActiveObject,
	    IViewObject,
	    IViewObject2,
	    IPerPropertyBrowsing,
	    ISpecifyPropertyPages,
	    ISimpleFrameSite)
	  TActiveXControlFactory = class(TAutoObjectFactory)
	  TActiveFormControl = class(TActiveXControl,
            IVCLComObject)
	  TActiveForm = class(TCustomForm)
	  TActiveFormFactory = class(TActiveXControlFactory)
	  TActiveXPropertyPage = class;
	  TPropertyPage = class(TCustomForm)
	  TActiveXPropertyPage = class(TComObject,
	    IPropertyPage,
	    IPropertyPage2)
	  TActiveXPropertyPageFactory = class(TComObjectFactory)
	  TCustomAdapter = class(TInterfacedObject)
	  TAdapterNotifier = class(TInterfacedObject,
	    IPropertyNotifySink)
	  TFontAdapter = class(TCustomAdapter,
	    IChangeNotifier,
	    IFontAccess)
	  TPictureAdapter = class(TCustomAdapter,
	    IChangeNotifier,
	    IPictureAccess)
	  TOleGraphic = class(TGraphic)
	  TStringsAdapter = class(TAutoIntfObject, IStrings,
            IStringsAdapter)
	  TWinControlAccess = class(TWinControl)
	  TEnumConnections = class(TContainedObject,
            IEnumConnections)
	  TEnumConnectionPoints = class(TContainedObject,
            IEnumConnectionPoints)
	  TReflectorWindow = class(TWinControl)
	  TDispatchSilencer = class(TInterfacedObject, IUnknown,
            IDispatch)
	  TOleLinkStub = class(TInterfacedObject, IUnknown,
            IOleLink)
	  TPropPages = class
	  TStringsEnumerator = class(TContainedObject, IEnumString)
 
  Interfaces:
	  IFontAccess = interface
	  IPictureAccess = interface
 
  Records:
	  NONE
 
PROVIDER.PAS
  Classes:
	  TCustomProvider = class
	  TProviderObject = class(TAutoIntfObject, IProvider)
	  TCustomProvider = class(TComponent)
 
  Interfaces:
	  NONE
 
  Records:
	  NONE
 
CLASSES.PAS
  Classes:
	  TStreamAdapter = class(TInterfacedObject, IStream)
		
  Interfaces:
	  IStringsAdapter = interface
	  IVCLComObject = interface
  
  Records:
	  NONE
 
URLMON.PAS
  Classes:
	  NONE
 
  Interfaces:
	  IPersistMoniker = interface
	  IBinding = interface
	  IBindProtocol = interface
	  IBindStatusCallback = interface
	  IAuthenticate = interface
	  IHttpNegotiate = interface
	  IWindowForBindingUI = interface
	  ICodeInstall = interface(IWindowForBindingUI)
	  IWinInetInfo = interface
	  IHttpSecurity = interface(IWindowForBindingUI)
	  IWinInetHttpInfo = interface(IWinInetInfo)
	  IBindHost = interface
	
  Records:
 	  NONE

DISCLAIMER: You have the right to use this technical information subject to the terms of the No-Nonsense License Statement that you received with the Borland product to which this information pertains.
 
Site Map Search Contact