Banban113
Messages postés
10
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
7 février 2005
6 janv. 2005 à 13:46
Voila le main appelé par le script
============================================================
unit Main;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, IntertecProject_TLB, StdVcl,Smarteam_TLB, SmApplic_TLB, SmRecList_TLB,Dialogs;
Var
ParentsProject, ParentsObject : IsmObjects;
type
TIntertec = class(TAutoObject, IIntertec)
protected
procedure SetDeptType(const Session: ISmSession;
const FirstRec: ISmRecordList); safecall;
end;
implementation
uses ComServ,USetTypeDept;
procedure TIntertec.SetDeptType(const Session: ISmSession;
const FirstRec: ISmRecordList);
Var
FirstRecord : IsmRecord;
begin
// On Convertit la SmRecordList en SmRecord
FirstRecord := FirstRec.GetRecord(0);
// On Lance La Procedure
SetTypeDept (Session,FirstRecord);
end;
initialization
TAutoObjectFactory.Create(ComServer, TIntertec, Class_Intertec,
ciSingleInstance, tmBoth);
end.
===================================================
une unité appelée par le main
=====================================================
unit USetTypeDept;
interface
Uses
ComObj, ActiveX, IntertecProject_TLB, StdVcl,Dialogs, SmApplic_TLB, SmRecList_TLB,Smarteam_TLB, SysUtils, Main;
Procedure SetTypeDept(Session : IsmSession; Rec : Ismrecord);
implementation
Procedure SetTypeDept(Session : IsmSession; Rec : IsmRecord);
Var
Parent,Child: IsmObject ;
ParentObjID, ParentClassID, ChildObjID, ChildClassID, LookUpObjId: integer;
Begin
// On declare les variables
ParentObjId := Rec.Value['OBJECT_ID1'];
ParentClassID := Rec.Value['PAR_CLASS_ID'];
ChildObjId := Rec.Value['OBJECT_ID2'];
ChildClassID := Rec.Value['SON_CLASS_ID'];
// On recupere parent et enfant du lien
Parent := Session.ObjectStore.RetrieveObject(ParentClassID,ParentObjID);
Child := Session.ObjectStore.RetrieveObject(ChildClassID,ChildObjID);
// On initialise le nom de parent en fonction du parent
LookUpObjId := Parent.Value['CN_DEPT'];
// On fait les modif dans l'objet qui a été créer
Child.Value['CN_DEPT'] := LookUpObjId;
Child.Update;
end;
end.
======================================================
le projet
=======================================================
library IntertecProject;
uses
ComServ,
IntertecProject_TLB in 'IntertecProject_TLB.pas',
Main in 'Main.pas' {Intertec: CoClass},
USetTypeDept in 'USetTypeDept.pas';
exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer;
{$R *.TLB}
{$R *.RES}
begin
end.
==================================================
et enfin le projet_TLB
==================================================
unit IntertecProject_TLB;
// ************************************************************************ //
// AVERTISSEMENT
// -------
// Les types déclarés dans ce fichier ont été générés à partir de données lues
// depuis la bibliothèque de types. Si cette dernière (via une autre bibliothèque de types
// s'y référant) est explicitement ou indirectement ré-importée, ou la commande "Rafraîchir"
// de l'éditeur de bibliothèque de types est activée lors de la modification de la bibliothèque
// de types, le contenu de ce fichier sera régénéré et toutes les modifications
// manuellement apportées seront perdues.
// ************************************************************************ //
// PASTLWTR : 1.2
// Fichier généré le 22/11/2004 14:52:53 depuis la bibliothèque de types ci-dessous.
// ************************************************************************ //
// Bibl. types : D:\_Intertechnique\Dll\IntertecProject.tlb (1)
// LIBID: {9555E731-7ECA-44EE-9296-73EB2F4E77C8}
// LCID: 0
// Fichier d'aide :
// Chaîne d'aide : IntertecProject (bibliothèque)
// DepndLst:
// (1) v2.0 stdole, (C:\WINDOWS\System32\stdole2.tlb)
// (2) v1.0 SmApplic, (C:\Program Files\SMARTEAM\Bin\SmApplic.tlb)
// (3) v1.0 SmRecList, (C:\Program Files\SMARTEAM\Bin\SmRecList.tlb)
// ************************************************************************ //
{$TYPEDADDRESS OFF} // L'unité doit être compilée sans pointeur à type contrôlé.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
interface
uses Windows, ActiveX, Classes, Graphics, SmApplic_TLB, SmRecList_TLB, StdVCL, Variants;
// *********************************************************************//
// GUIDS déclarés dans la bibliothèque de types. Préfixes utilisés :
// Bibliothèques de types : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Non-DISP interfaces : IID_xxxx
// *********************************************************************//
const
// Versions majeure et mineure de la bibliothèque de types
IntertecProjectMajorVersion = 1;
IntertecProjectMinorVersion = 0;
LIBID_IntertecProject: TGUID = '{9555E731-7ECA-44EE-9296-73EB2F4E77C8}';
IID_IIntertec: TGUID = '{180106A9-7B4C-4CB4-B929-C4B3E3E26AFA}';
CLASS_Intertec: TGUID = '{97DF2EB8-4338-4806-B70B-7629F4CCBB3E}';
type
// *********************************************************************//
// Déclaration Forward des types définis dans la bibliothèque de types
// *********************************************************************//
IIntertec = interface;
IIntertecDisp = dispinterface;
// *********************************************************************//
// Déclaration de CoClasses définies dans la bibliothèque de types
// (REMARQUE: On affecte chaque CoClasse à son Interface par défaut)
// *********************************************************************//
Intertec = IIntertec;
// *********************************************************************//
// Interface : IIntertec
// Indicateurs : (4416) Dual OleAutomation Dispatchable
// GUID : {180106A9-7B4C-4CB4-B929-C4B3E3E26AFA}
// *********************************************************************//
IIntertec = interface(IDispatch)
['{180106A9-7B4C-4CB4-B929-C4B3E3E26AFA}']
procedure SetDeptType(const Session: ISmSession; const FirstRec: ISmRecordList); safecall;
end;
// *********************************************************************//
// DispIntf : IIntertecDisp
// Flags : (4416) Dual OleAutomation Dispatchable
// GUID : {180106A9-7B4C-4CB4-B929-C4B3E3E26AFA}
// *********************************************************************//
IIntertecDisp = dispinterface
['{180106A9-7B4C-4CB4-B929-C4B3E3E26AFA}']
procedure SetDeptType(const Session: ISmSession; const FirstRec: ISmRecordList); dispid 201;
end;
// *********************************************************************//
// La classe CoIntertec fournit une méthode Create et CreateRemote pour
// créer des instances de l'interface par défaut IIntertec exposée
// par la CoClasse Intertec. Les fonctions sont destinées à être utilisées par
// les clients désirant automatiser les objets CoClasse exposés par
// le serveur de cette bibliothèque de types.
// *********************************************************************//
CoIntertec = class
class function Create: IIntertec;
class function CreateRemote(const MachineName: string): IIntertec;
end;
implementation
uses ComObj;
class function CoIntertec.Create: IIntertec;
begin
Result := CreateComObject(CLASS_Intertec) as IIntertec;
end;
class function CoIntertec.CreateRemote(const MachineName: string): IIntertec;
begin
Result := CreateRemoteComObject(MachineName, CLASS_Intertec) as IIntertec;
end;
end.
==========================================================
voila tout ce quil y a dans une de mes DLL
+ un bibliotheque de type pour gerer les entrées et sortie
Banbang