Logo Delphi Developer Days 2011

Menu for Development

Site Menu
Delphi 2010 Handbook
Delphi 2009 Handbook
Delphi 2007 Handbook
Mastering Borland Delphi 2005
Essential Pascal
Essential Delphi
Buy Books Online
Code Repository
Newsgroups
White Papers
Tools
Conferences
Training
Delphi Links
Contact Marco

My Other Sites
Italian Site (www.marcocantu.it)
Developers Newsgroups Browser (dev.newswhat.com)
My town (www.piazzacavalli.net)
the delphi search
Wintech Italia (my company)

Advertising
Home My Blog Books My Bookstore Development Links Marco



Home: Code Repository: Mastering Delphi 5

Project PROPCOM

Project Structure


PROPCOM.DPR

library PropCom;

uses
  ComServ,
  NumIntf in 'NumIntf.pas',
  NumServ in 'NumServ.pas',
  PROPCOM_TLB in 'PROPCOM_TLB.pas';

exports
  DllGetClassObject,
  DllCanUnloadNow,
  DllRegisterServer,
  DllUnregisterServer;

{$R *.TLB}

{$R *.RES}

  end.

NUMINTF.PAS

unit NumIntf;

interface

type
  INumberProp = interface
    ['{B36C5800-8E59-11D0-98D0-444553540000}']
    function GetValue: Integer; stdcall;
    procedure SetValue (New: Integer); stdcall;
    procedure Increase; stdcall;
    property Value: Integer
      read GetValue write SetValue;
  end;

implementation

end.

NUMSERV.PAS

unit NumServ;

interface

uses
  Windows, ActiveX, ComObj, NumIntf;

type
  TNumServer = class(TComObject, INumberProp)
  private
    fValue: Integer;
  public
    function GetValue: Integer; virtual; stdcall;
    procedure SetValue (New: Integer); virtual; stdcall;
    procedure Increase; virtual; stdcall;
    procedure Initialize; override;
    destructor Destroy; override;
  end;

const
  Class_NumPropServer: TGUID =
    '{B165F7A1-DDF9-11D1-B9F1-004845400FAA}';

implementation

uses ComServ;

{ TNumServer }

destructor TNumServer.Destroy;
begin
  inherited;
  MessageBox (0, 'Object Destroyed',
    'TDLLNumber', mb_OK); // API call
end;

function TNumServer.GetValue: Integer;
begin
  Result := fValue;
end;

procedure TNumServer.Increase;
begin
  Inc (fValue);
end;

procedure TNumServer.Initialize;
begin
  inherited;
  fValue := 10;
end;

procedure TNumServer.SetValue(New: Integer);
begin
  fValue := New;
end;

initialization
  TComObjectFactory.Create(ComServer, TNumServer, Class_NumPropServer,
    'NumPropServer', 'Num Prop Server (Prop Com)', ciMultiInstance, tmSingle);
end.

PROPCOM_TLB.PAS

unit PROPCOM_TLB;

// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// PASTLWTR : $Revision:   1.79  $
// File generated on 7/15/99 3:16:52 PM from Type Library described below.

// ************************************************************************ //
// Type Lib: C:\md5code\Part4\15\PROPCOM\PROPCOM.tlb (1)
// IID\LCID: {5B2EF183-3AAE-11D3-B9F1-00000100A27B}\0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINDOWS\SYSTEM\STDOLE2.TLB)
//   (2) v4.0 StdVCL, (C:\WINDOWS\SYSTEM\STDVCL40.DLL)
// ************************************************************************ //
interface

uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;

// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLASS_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
const
  // TypeLibrary Major and minor versions
  PROPCOMMajorVersion = 1;
  PROPCOMMinorVersion = 0;

  LIBID_PROPCOM: TGUID = '{5B2EF183-3AAE-11D3-B9F1-00000100A27B}';


implementation

uses ComObj;

end.