begin process at 2010 03 21 18:52:37
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

 > [DELPHI] INSTALLER DES COMPOSANTS

[DELPHI] INSTALLER DES COMPOSANTS


 Information sur le tutoriel

Note :
9,5 / 10 - par 4 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

 Description

A force de trouver des composants sans indiquer comme les installer... un tutorial finit par s'imposer. Il ne dispense pas de pencher la tête dans les manuels PDF, mais permet d'avoir une vision globale des procédures à suivre afin de résoudre les problèmes liés à "Classe TBidule non trouvée" ?

Tutorial

.

Contenu

   I) Les composants
   II) Les paquets de conception
   III) Ajouter un composant
   IV) Référencer le composant
   V) L'éditeur de ressource
   VI) La déferlante des librairies
   VII) Conclusion
 

I) Composants

Un composant est une ressource portant l'extension PAS, accompagnée d'éventuels fichiers INC, DCR et RES. Ces deux derniers formats peuvent contenir des images, des vidéos, des sons, des chaînes, des icônes... Quant aux fichiers INC, ils recencent des directives de compilation afin d'optimiser les compilations via les différentes versions de Delphi. N'oublions pas les éternels fichiers HLP ou CHM qui correspondent à des fichiers d'aide.

Les composants peuvent être plus ou moins imposants. Certains sont de simples fichiers PAS (un standard sur DelphiFr.com et ailleurs aussi), mais d'autres sont des librairies déferlantes avec un bouquet énorme de fichiers. On envisagera par la suite ce dernier cas avec les composants TSynEdit. C'est un bon exercice.

Les composants ont la particularité d'apparaître sur la palette de Delphi (dans différentes rubriques) afin d'être rapidement réutilisables. Mais avant de jouer avec, il faut déjà installer un paquet de conception. Il existe aussi des paquets d'exécution, mais ne nous intéressent pas ici. Pour indication, ils jouent le rôle de DLL pour des applications.

II) Les paquets de conception

Ils portent l'extension DPK.

Si vous n'avez pas déjà de paquets personnels, je suggère sincèrement d'en créer un. Comment ferait-on sinon ? Pour ce faire:

     > Lancer Delphi
     > Fichier, Nouveau [, Autres...]
     > Paquet, Ok

Note: via > Composants > Installer des composants, Delphi gère un paquet nommé "dclusr30.dpk", ou "dclusr.dpk". Certaines versions de Delphi indiquent en effet la version dans le nom du paquet personnel de l'utilisateur.

Delphi nous invite alors (éventuellement) à spécifier les informations primaires de notre paquet. Remarquons que ces informations pourront être complétées par la suite dans les options du projet. > Projet > Options.



On obtient alors une fenêtre mystérieuse peu commune. Par curiosité, voici deux aperçus de la fenêtre des paquets. Respectivement, les images correspondent aux versions 3 et 7 de Delphi. On distingue alors deux rubriques: les CONTAINS et les REQUIRES. La première rubrique correspond à tous les fichiers de composants contenus dans le paquet, la seconde recense les paquets additionnels utilisés par d'éventuels composants assez spéciaux. Mais on se fichera bien des REQUIRES, car gérés automatiquement par Delphi. Ceci dit, ils peuvent causer quelques soucis parfois. Mais enfin, ces cas sont rares...





On clique alors sur les boutons # Compiler # Installer. Le paquet est alors référencé et il n'y a plus qu'à le remplir de composants (fichiers PAS).



A ce stade, rien n'est révolutionnaire, car ce n'est qu'un référencement. Dans le répertoire où est enregistré le fichier DPK (notons que le dossier des paquets dépend de la configuration de Delphi, cf. options du projet), on remarque l'apparition d'un fichier DPL (Delphi Package Library) pour les premières versions de Delphi, ou d'un fichier BPL (Borland Package Library) pour les plus récentes. Je pense qu'ils ont dû uniformiser les extensions, car en Borland C++ Builder, les paquets portent également l'extension BPL. Cependant, les fichiers DPL ne sont plus supportés dans les versions gérant les BPL.

III) Ajouter un composant

C'est tout bête: on clique sur # Ajouter, > Parcourir, on sélectionne le fichier PAS que l'on vient de télécharger et on clique sur > Ok. Ceci est pour la base, mais ne soyons pas pressés de compiler le paquet. De plus, un simple ajout d'un fichier ne réactualise en aucun cas le paquet (aucune conséquence au niveau de Delphi). En effet, on vient de modifier le DPK et non le BPL qui est quand même le fichier clé fondamental.

Lors du développement d'un composant, il faut indiquer expréssement à Delphi que l'unité est un composant. Pour cela, on déclare une procédure spéciale intitulée «procedure Register». Tous les mots sont réservés, et c'est tout à fait normal. Prenons l'exemple d'un composant idiot, enfin... pas tant que ça en fait puiqu'il rajoute une propriété Align à un TEdit et c'est toujours bien utile. Seulement, dommage que cela n'ait pas déjà été implémenté depuis longtemps dans Delphi: ça aurait évité de déclarer une nouvelle classe dérivée. Enfin, nous avons le fichier BestEdit.pas suivant. Considérez initialement la dérivation comme TCustomEdit.

unit BestEdit;
interface
uses SysUtils, Classes, StdCtrls;
type TBestEdit = class(TCustomEdit)
  published
    property Align;
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponents('Ma palette', [TBestEdit]);
end;
end.

La procédure Register est explicite. Elle référence le composant dans une palette intitulée «Ma palette». Si cela ne vous convient pas, modifiez le nom. C'est très important de choisir le bon nom dès le début, car si on compile avec une mauvaise palette, remodifier le nom sera vain, et il faudra faire un clic droit sur la palette, prendre les propriétés, et déplacer le composant référencé vers la nouvelle palette. Cette fenêtre des propriétés de la palette permet justement de tout gérer: les pages, l'emplacement des composants... C'est très utile !

Si la procédure Register n'apparaît pas (ce qui serait surprenant pour un composant), il faudra ajouter la procédure en suivant le modèle de code précédent.

IV) Référencer le composant

On compile simplement le paquet avec le bouton # Compiler, disponible dans la fenêtre du paquet. Si Delphi vous avertit de la recompilation du paquet, ignorez. On remarque alors que le paquet se désinstalle temporairement puis revient tout seul. Au passage, Delphi indique qui sont les nouveaux composants recencés et ceux désinstallés.

Sauf qu'il peut y avoir des erreurs de compilation... mais là, ce n'est pas le sujet. Si c'est juste un problème au niveau de PUBLISHED, alors supprimez les PROPERTY foireuses.

Le composant apparaît dans la palette. Si le composant n'est pas accompagné d'un fichier ressource (DCR ou RES), il apparaît par défaut avec l'icône suivante. Elle n'est guère explicite...



Attention
!
L'absence d'un fichier RES ne signifie pas nécessairement que le composant n'aura pas d'icône. Actuellement, dans notre exemple, le composant hérite de TCustomEdit (qui n'offre cependant pas toutes les propriétés publiées de TEdit) qui est une ébauche de composant pour de futurs composants, tels TEdit et TMemo. En revanche, TEdit (dérivant donc de TCustomEdit) est un composant tout à fait fonctionnel. Il est déjà inclu dans un paquet de Delphi, ce qui fait qu'une icône lui est déjà attribuée (on le voit dans la palette). Si maintenant on dérive notre composant de TEdit (et non plus de TCustomEdit), alors une icône s'affiche: c'est celle de la classe TEdit. La dérivation des classes est corrélée à la dérivation des icônes...

On considère maintenant que le composant hérite de TEdit. C'est beaucoup mieux pour la compatibilité entre versions de Delphi. L'icône est par défaut la suivante. Mais peut-être l'icône ne vous satisfait-elle pas.



Comment faire apparaître ou corriger l'image ?

V) L'éditeur de ressource

!!! QUITTER Delphi !!!

En effet, Delphi doit avoir sa mémoire purgée.

On utilise alors l'application IMAGEDIT.EXE enregistrée dans le répertoire Bin\ de votre dossier Borland\Delphi\.

On va éditer le fichier RES portant le nom de votre paquet. En l'occurence, je vais éditer le fichier «C:\Mes documents\tuto_gv\gv.res». Le type du fichier n'est par défaut pas reconnu. Avec > Ouvrir avec... > Parcourir, je sélectionne l'application, je mets une description en cochant "Toujours". Certes imagedit n'ouvre pas le fichier RES directement, mais au moins, lorsqu'on fait > Fichier > Ouvrir dans l'éditeur, le répertoire est déjà le bon...

On remarque que le fichier est vide.



On ajoute donc un fichier image au format BMP. > Ressource > Nouveau > Bitmap. On peut aussi utiliser le clic droit dans l'arborescence. On rencontre la fenêtre suivante:



Je dirais qu'il ne faut jamais dépasser 26x26... sachant qu'il faut laisser une bordure unicolore afin de créer la transparence. Pour une icône, 16 couleurs suffisent. En monochrome, tout est horrible. En SuperVGA, les 16 couleurs de bases n'existent plus (8-(

On fait donc un joli dessin dans la fenêtre. Et on ferme la sous-fenêtre.



Certes, mais cela ne nous dit pas à quel composant correspond ce dessin. Dans la fenêtre de la ressource, il faut renommer sans faute le bitmap par le nom du composant. L'éditeur transforme le nom en majuscules: c'est sans conséquence. Ainsi, nous avons ici ceci :



On enregistre tout et on quitte l'éditeur. On peut alors réouvrir notre fichier DPK, et on le compile (ignorez l'avertissement de recompilation du paquet). La voilà la belle icône.

L'autre technique aurait été de créer un fichier RES (renommé en DCR) avec un contenu sur le même procédé. Ensuite, il faut implémenter dans le fichier PAS du composant, juste en dessous de uses ou de implementation, la petite directive {$R lefichier.dcr}.

Même si cela ne nous intéresse pas dans notre situation, n'hésitez pas à aller consulter le tutorial de florenth sur les ressources afin de comprendre de quoi il en retourne.

VI) La déferlante des librairies

Les librairies sont souvent bien faîtes au niveau de l'installation.

> Soit il existe un installateur qui gère tout sans problème.
> Soit des paquets sont prêts à être compilés et il faut alors choisir celui correspondant à votre version de Delphi.
> Soit tout est buggé... et rien du tout ! C'est pas très malin.

En cas de doutes, il faut toujours rechercher un fichier «LeNomDeLaLibrairieReg.pas». Une telle unité sert exclusivement au référencement de diverses classes et à rien d'autre. Mais cette technique n'est pas toujours effective, bien que redoutable (cf. ici).

VII) Conclusion

Je crois que vous savez tout... woaaa !!!
 

 Historique

03 juillet 2005 19:13:50 :
- «Que les images soient!»... ouais enfin, après 5 mois de suspens quand même ;)

Commentaires

Commentaire de karima1984 le 26/05/2007 23:59:14

c bien ce que vous avez fait,mais pour moi je cherche
des composants delphi,pas la manière d'instaler ces composants

Commentaire de Jean_Jean le 17/09/2007 03:10:39

Bonjour GrandVisir!
je viens de découvrir ton tutorial. J'y ai découvert des choses.
Un zip?
Jean_jean

Commentaire de gualite30 le 10/10/2007 15:41:23

Bonjour c'est bien ce que vous avez explique mais on veut savoir comment faire installer des skin pour delphi6 et merci

Commentaire de yankeebravo le 27/01/2008 20:57:25

Super bien expliquer, mais je n'arrive pas à l'appliquer sous Delphi 2006 pour le composant Tcamera.

Commentaire de Hurin le 04/05/2008 08:40:57

Bravo, très bon tutoriel, Merci

Commentaire de brzk le 10/05/2008 19:31:56

Je n'ai pas tout lu..Mais je félicite l'auteur de ce tutorial, de s'exprimer en français correct et compréhensible ( malgré quelques petites fautes qui n'entachent pas trop la syntaxe )..Je souhaiterais que tous les scribes de Delphi ( les autres étant sans importance - Sauf en C# ) s'inspirent fortement de cet auteur ( Grandvizir ) dans la correspondance qui nous est destinée, à nous autres, pauvres amateurs non-éclairés, lecteurs assidus de Codes-Sources..Je ne veux pas remuer de couteau dans une plaie, mais la semaine dernière, est apparue sous mes yeux ébahis une source dont je n'ai pu comprendre un traître mot, étant GRIBOUILLEE en langue française étrangement étrangère ( je crois, du ESSEMMESSE .. Je vous supplie,^m ( = même, en langage mathématique ) si vous faites des raccourcis, de joindre AU MOINS un lexique à l'usage des lecteurs..Sinon, ceux-ci se lasseront de votre site ou ne liront plus votre source, ce qui N'EST PAS le but recherché..Je souhaiterais que ce mémo soit régulièrement publié ( au moins une fois par trimestre, pendant deux ans ), pour que cette information rentre bien dans tous les esprits..Je remercie, d'avance, tous les scribes qui s'y plieront: Ils auront compris que c'est pour le bien de tous et LE NÔTRE, en particulier..André Eugène BROZEK, alias brzk..

Commentaire de samirprg le 03/04/2009 13:40:52

Salut
Je veux  installer des composants dans delphi6 comment faire

Commentaire de mandymoor le 02/08/2009 02:24:10

bonjour tous le monde je veux demander grandvizir est ce qu'il sais comment ajoute une propriete a un composant pas la modifier ,desole du derangement merci d'avance et bon courage.

Commentaire de yvessimon le 05/01/2010 09:03:42

Bonjour,

Mon installation DLPHI 7 sous windows XP c'est bien passé sur un compte administrateur.
Maintenant je souhaite l'utiliser sur un autre compte utilisateur sans avoir tous les droits.
Sur ce nouveau compte la palette de composant est invisible il en est de même des fiches form des programmes.

Est-il nécessaire de réinstaller DELPHI 7 sur ce compte utilisateur ?
ou alors de modifier la configurations WINDOWS ou DEPHI ?

Merci

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,140 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales