[vcl] terrormanager, gerez facilement vos messages d'erreur dans vos programmes


Description

Salut a tous!

voici un petit composant qui je pense vas surrement etre utile a beaucoup d'entre vous.

TErrorManager est un composant non-visuel qui permet de gerrer facilement le declanchement d'erreur dans vos programmes.
Des erreurs ?
Pas seulement, en fait, les objets TError possedent des propriétés particulieres comme par exemple eType qui permet de
definir precisement le type de l'erreur : Notification, Deboggage, Information, Avertissement, Erreur, Erreur critique ect...

note : les objets TError dont le type est etCriticalError termine automatiquement le programme quand on les appels.
(voir le schema hierarchique de l'ordre de declanchement des evenements dans le fichier ErrorMan.pas)

Les objets TError possedent egalement une propriété permettant de definir le type d'affichage (eDisplay) de l'erreur.
Cette derniere peut avoir deux valeur : edInternal, l'erreur est executée en interne, pratique pour faire des fichier de Log.
puis edMsgBox qui affiche une boite de message (MessageDlg) en fonction du type de l'objet.

Le manager quand a lui, possede deux methode pour appeler les objets erreur :
Invoke(index), ou index correspond a l'index de l'objet erreur
FindAndInvoke(eCode), ou eCode correspond au code erreur de l'objet erreur.
FindAndInvoke renvois True si l'objet a été trouvé, sinon elle renvoit false.

le fichier ErrorMan.pas contient de nombreux commentaires explicatif.
le zip est fournis avec un pack (dpk) pour faciliter l'installation et aussi une Demo (repertoire Demo) ou vous pourrez voir un exemple d'utilisation simple de ErrorManager.

Note a l'installation : l'objet TErrorManager serat disponible dans la palette "Exemple" aprés l'installation.

Compatibilitée : TErrorManager est ecrit sur Delphi 7, mais etant pure VCL (TComponent, TCollectionItem et TCollection), il devrait fonctionner sans probleme sur des versions ulterieures ou superieures a la V7.

Pour les debutants qui voudraient créer leurs propre composants :
TErrorManager serat un bon exemple pour apprendre a gerrer les classes TCollection et TCollectionItem.

Source / Exemple :


{ 
 State : v1.4

----------------------------------------------------------------------------------------------------
 Ver : v1.4 - 29/05/2006
     - Export de l'editeur de composant dans une unité propre. verification de la version de la RTL
	  pour la compilation.
	  
 Ver : v1.3 - 27/05/2006
     - Ajout des methodes LoadFromFile et SaveToFile dans TErrorManager
     - Ajout d'un editeur de composant pour le Manager permettant le chargement
       et la sauvegarde du manager pendant la conception.
     - Ajout de control d'erreur dans la methode GetDisplayName.

 Ver : v1.2 - 26/05/2006
     - Verification de l'unicitée des Code erreur (eCode).
     - Amelioration de l'affichage des nom d'erreur : <eCode> <eType, ePriority, eDisplay>
     - Les erreur critique mettent automatiquement fin au programme (Halt).
     - FindAndInvoke appel maintenant la methode Invoke de TErrorManager.
     - Quand on ajoute une erreur (TError) le eCode est initialisé a la valeur de son index dans
       la collection (count+1).
     - Ajout des directives "Default" dans la classe TError.

 Ver : v1.1 - 25/05/2006
     - Ajout de la propriété eHelp dans la classe TError.
     - Modification de la hierarchie de declanchement des evenements OnError et OnInvoked
       voir le schema explicatif plus bas.

 Ver : v1.0 - 03/05/2006
     - Creation des classes TError, TErrors et TErrorManager
     - Creation de l'icone pour la palette

----------------------------------------------------------------------------------------------------

[Classes]
   TError        (TCollectionItem)
   TErrors       (TCollection)
   TErrorManager (TComponent)
   TErrorManagerEditor (TComponentEditor)

----------------------------------------------------------------------------------------------------

[Propriétés TError]
   eCode     : (DWORD) code de l'erreur, doit etre unique
   eDisplay  : mode d'affichage edInternal ou edMsgBox
   eMessage  : message descriptif de l'erreur 
   eHelp     : texte court donnant une solution possible pour eviter l'erreur
   ePriority : vous permet de controller la prioritée de l'erreur
   eType     : vous permet de differencier les erreurs (info, erreur, urgence ect...)

   <!> les erreurs critique (etCriticalError) mettent fin au programme (Halt(eCode)). <!>

[Evenements TError]
   OnInvoked : se declanche aprés OnError et l'affichage de la boite de message
               si eDisplay = edMsgBox.

----------------------------------------------------------------------------------------------------

[Propriétés TErrorManager]
   Errors : la collection TErrors, permet de créer de nouveaux items TError

[Evenements TErrorManager]
   OnError : se declanche avant OnInvoked de l'item TError et avant l'affichage de la boite
             de message si eDisplay de TError = edMsgBox.
             OnError renvois un argument "Error" qui correspond a l'erreur declanchée (TError)
			 
[Methodes TErrorManager]
   procedure Invoke(const ErrorIndex : integer);
         Declanche l'erreur "ErrorIndex".
		 
   function FindAndInvoke(const ErrorCode : DWORD) : boolean;	
         Cherche et declanche l'erreur dont la propriétée eCode est egale a "ErrorCode" et
	       renvois True si l'erreur a été trouvée sinon FindAndInvoke renvois False.

   Conseil : utilisez plutot FindAndInvoke que Invoke.

   procedure LoadFromFile(const FileName : string);
         Charge une liste d'items TError dans le manager.

   procedure SaveToFile(const FileName : string);
         Sauve la liste d'items TError du manager.

----------------------------------------------------------------------------------------------------

[Hierarchie des evenements OnError et OnInvoked]

 TErrorManager.FindAndInvoke(eCode)
 <find> TError.eCode = eCode ? TErrorManager.Invoke(N)

 TErrorManager.Invoke(index)
 <call> TError.Invoke
        <call> TErrorManager.ErrorQuery(TError)
               <event> TErrorManager.OnError(TErrorManager, TError)
        <if> eDisplay = edMsgBox ? MessageDlg(eMessage,eType)
        <event> TError.OnInvoked(TError)
        <if> eType = etCriticalError ? Halt(eCode)

----------------------------------------------------------------------------------------------------
}

Conclusion :


TErrorManager en est a sa version 1.4 du 29/05/2006

aucuns bug connus.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.