FAQ DelphiConsultez toutes les FAQ
Nombre d'auteurs : 124, nombre de questions : 933, dernière mise à jour : 28 septembre 2024 Ajouter une question
Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.
Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).
Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.
L'équipe Delphi de Developpez.com.
- Qu'est-ce que la VCL ?
- Qu'est-ce que la CLX ?
- Qu'est-ce qu'un TControl ?
- Qu'est-ce qu'un Handle ?
- Comment installer un nouveau composant ?
- Comment installer un contrôle ActiveX ?
- Comment importer des librairies de type ?
- Comment utiliser PasswordChar sur un TEdit dans une application CLX ?
- Comment distribuer et installer un contrôle ActiveX pour mon application ?
- Pourquoi mon programme plante-t-il sur un PC où Delphi n'est pas installé ?
- Comment associer une image à mon composant dans la palette ?
- Comment résoudre le problème "Dsgnintf.dcu non trouvé" lors de l'import de composants ?
- Comment ajouter une icône et un texte personnalisés dans le splash screen de BDS ?
Il s'agit de la bibliothèque des composants visuels (Visual Component Library, VCL). Elle est composée de classes hiérarchisées toutes descendantes de la classe TComponent. Tous ces composants sont accessibles sur la palette de composants de Delphi. Il est possible de créer de nouveaux composants en dérivant les classes existantes.
Il s'agit de la bibliothèque des composants multiplates-formes (Component Library for Cross Platform, CLX) permettant d'assurer la portabilité des applications de Windows vers Linux. Kylix utilise uniquement cette bibliothèque.
La CLX est similaire à la VCL mais les composants Windows sont remplacés par des widgets (de window + gadget). De ce fait, la hiérarchie des TWinControl est remplacée par la hiérarchie des TWidgetControl avec des méthodes et des propriétés en moins. Ces composants peuvent être groupés en parties : VisualCLX (composants graphiques), NetCLX (composants Internet), BaseCLX et DataCLX (Composants d'accès aux données client).
Tous ces composants CLX sont disponibles à partir de la version Professionnelle de Delphi.
On rencontre souvent ce mot dans l'aide quand on clique sur le bouton "Hiérarchie". Mais que signifie-t-il donc ?
Delphi étant un langage objet, une des grandes particularités des objets est l'héritage.
Sommairement, l'héritage offre la possibilité, lors de la création d'un objet descendant, de réutiliser tout ou partie des comportement et propriétés d'un "ancêtre" et d'ajouter ce qui fait la particularité de notre Objet.
L'Objet TControl est l'ancêtre commun de tous les Composants Visuels.
L'Objet TControl comporte toutes les propriétés de bases que ses descendants peuvent publier ou non.
Un Handle est un nombre entier généré par Windows permettant d'identifier de manière unique chaque objet créé par le système d'exploitation. Le Handle est attribué automatiquement par Windows et vous ne pouvez pas le définir vous-même.
Les handles sont souvent utilisés par les fonctions de l'API de Windows.
Suivant les fonctions API, la déclaration d'un Handle n'est pas toujours la même :
Code delphi : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 | { Pour une fenêtre } Var Handle : HWND; { Pour un contexte de périphérique } Var Handle : HDC; { Pour un bitmap } Var Handle : HBitmap; { Pour une icône } Var Handle : HIcon; { Et si vous ne savez pas quel type utiliser : } Var Handle : THandle; |
Pour tous les contrôles fenêtrés (descendants de TWinControl), la propriété Handle du composant donne le Handle de fenêtre Windows sous-jacent au composant.
Dans le menu « Composants », choisir « Installer un composant… ».
Indiquer le nom de l'unité et le nom du paquet dans le quel le composant doit être installé.
Valider et confirmer la construction du paquet pour installer le composant.
Dans le menu « Composants », sélectionner « Installer un contrôle ActiveX… ».
Sélectionner le contrôle à installer dans la liste.
Choisir la palette de destination.
Cliquer sur « Installer… » puis sélectionner le paquet devant contenir le contrôle.
Valider pour compiler et installer le nouveau composant.
La solution la plus facile à mettre en oeuvre pour exporter les librairies de type est d'utiliser un "décompileur".
ResHacker est un des outils à notre disposition qui nous permet d'extraire les librairies voulues. Pour le faire, il suffit d'ouvrir l'exécutable dans ResHacker, choisir l'opération Export as bin file, puis nommer la destination LibExtraite.dll par exemple. Il suffit alors maintenant d'importer cette librairie dans Delphi en choisissant le menu Composants.
Une solution alternative est d'utiliser l'outil OleView, onglet Interface. On peux y retrouver les interfaces déclarées et le fichier de librairie associé.
Pour permettre la saisie d'un mot de passe sous Linux comme vous le faisiez sous Windows (c'est à dire que les lettres sont substituées par des « * »), changez la propriété EchoMode du composant à emPassword.
Un ActiveX consiste en une dll (souvent d'extension .ocx ou .dll) qui publie ses fonctions et ses interfaces.
Pour être utilisable dans une application cet ActiveX doit être référencé par Windows.
Si vous utilisez un ActiveX pour votre application, il faut le déployer avec celle-ci puis l'enregistrer dans windows grâce à la commande :
Code : | Sélectionner tout |
%SYSDIR%\regsvr32 /s "%CHEMIN_ACTIVEX%\Fichier.ocx"
Lorsque votre application est désinstallée vous pouvez supprimer votre ActiveX. Déréférencez-le par la même occasion grâce au paramètre « /u » :
Code : | Sélectionner tout |
%SYSDIR%\regsvr32 /u /s "%CHEMIN_ACTIVEX%\Fichier.ocx"
Delphi est basé sur l'utilisation de paquets d'exécution pour faire fonctionner les EXE qu'il compile. Ces paquets d'exécution peuvent au choix être inclus ou non dans l'EXE final.
S'ils le sont l'EXE est indépendant et s'exécutera correctement. Dans le cas contraire il aura besoin que les paquets soient présents à part sur le système.
Pour régler ce problème il faut modifier les options de votre projet. Allez dans "Projet" -> "Options" puis dans l'onglet "Paquets".
Là il se trouve une case à cocher, "Construire avec les paquets d'exécution".
Si elle est cochée, Delphi n'incluera pas les paquets d'exécution dans votre EXE et celui-ci ne fonctionnera donc pas partout.
Si vous comptez déployer votre projet, pensez donc à décocher cette case ou bien à fournir les paquets de Delphi séparément !
Dans ce dernier cas, vous avez besoin de savoir quels paquets distribuer : après avoir recompilé votre projet, choisissez "Informations pour [nom du projet]" dans le menu "Projet" afin de vérifier quels sont les paquets à déployer avec votre application !
Informations utiles :
- Le nom de l'unité contenant la procédure Register (disons par exemple UMonComposant.pas)
- Les noms des classes auxquelles il faut associer une image (disons par exemple TMonComposant et TMonAutreComposant)
Outils à utiliser :
- L'éditeur d'images de Delphi, accessible par le menu « Outils »
Mode opératoire :
- « Fichier » > « Nouveau » > Fichier Ressource Composant (extension « dcr »).
- Clic droit puis « Nouveau » > « Bitmap ».
- Préciser la taille : 24 x 24, puis « Ok ».
- Dessiner ou copier-coller l'image.
- Renommer « Bitmap1 » en « TMonComposant ».
- Répéter les 4 dernières étapes pour « TMonAutreComposant ».
- Enregistrer le fichier ".dcr" ainsi créé à côté (même dossier) de l'unité UMonComposant.pas en le nommant UMonComposant.dcr
- Pour que ce fichier soit pris en compte par Delphi, il doit apparaître dans le paquet où se trouvent vos composants. Pour cela, retirer UMonComposant.pas, puis l'ajouter à nouveau au paquet.
- Reconstruire le paquet.
L'unité Dsgnintf n'existe plus depuis la version 5 de Delphi. Elle est remplacée par les deux unités DesignIntf et DesignEditors.
Vous avez sans doute remarqué, depuis l'avènement de BDS, certains packages de composants ajoutent leurs logos et leur titre dans l'écran de démarrage (splash screen) de BDS.
Pour cela, il faut créer un fichier ressource (.res) qui contient une image puis une unité utilisant, dans la section initialization, la classe IOTASplashScreenServices des ToolsAPI de Delphi qui contient des informations sur l'écran de démarrage.
Voici comment procéder :
- Créez un fichier de ressource
La taille de l'image contenue devra être de 24x24 pixels. Son nom dans le fichier de ressource devra être en majuscule. - Créez un nouveau package design-time
- Ajoutez-y l'unité suivante :
Code delphi : Sélectionner tout 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31unit BDSSplashRegister; interface implementation uses Graphics, ToolsAPI, DesignIntf, SysUtils; //Ici, indiquez votre fichier de ressource préalablement créé. {$R MonFichierRessource.res} //fonction permettant de récupérer un TBitmap depuis une ressource. function BitmapFromResource(const ABitmapName: string): TBitmap; begin Result := Graphics.TBitmap.Create; Result.LoadFromResourceName(hInstance, ABitmapName); end; initialization //Force l'EDI à charger le package. ForceDemandLoadState(dlDisable); //Dans DesignIntf SplashScreenServices.AddProductBitmap('Le titre de ma librairie', BitmapFromResource('NOMDERESSOURCE').Handle); // Le nom de la ressource doit être en MAJUSCULE // Un petit Sleep pour se laisser le temps d'admirer son œuvre. // Cette ligne peut être supprimée ou bien la valeur peut être modifiée suivant le temps que l'on veut attendre. Sleep(2000); end.
La méthode AddProductBitmap de IOTASplashScreenServices contient d'autres paramètres optionnels. Ainsi, il est possible de l'utiliser comme ceci :
Code delphi : Sélectionner tout 1
2SplashScreenServices.AddProductBitmap('Le titre de ma librairie', BitmapFromResource('NOMDERESSOURCE').Handle, true, 'Informations de license', 'texte ajouté après le titre');
- Compilez, installez le package et redémarrez BDS.
Si tout s'est bien passé, votre logo et votre texte apparaitront dans le splash screen.
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.