Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  SDK  Composante  Projet  .NET  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Delphi 1
Delphi Professionnel 3.0
Introduction
Les remarques
Les oérateurs
Les instructions conditionnelles
Les instructions de boucles
Les instructions d'exceptions
Type de données élémentaires
Référence de mots réservés (mots clefs)
Référence des unités
Définition de procédures et de fonctions
Référence de procédures et fonctions
Référence des classes
Référence de constantes
Référence de variables
Référence des directives de compilation
Entier
Réel
Chaine de caractères
Pointeur
Détaillé
CLASSES
COMCTRLS
CONTROLS
DBTABLES
DIALOGS
FILECTRL
FORMS
LZEXPAND
MATH
PRINTERS
STDCTRLS
SYSTEM
SYSUTILS
Catégorie
Prototype
ANSI
ASCIZ
Base de registres
Boite de dialogue
Comptabilité
Colorimétrie
Date
Ensemble
Fichier
Imprimante
Mémoire
Monétaire
Police de caractères
Processus
Statistique
Temps
Trigonométrie
Web
Les premiers pas
Le langage Object Pascal : classes et objets
La bibliothèque d'exécution
Les classes de base de la bibliothèque
Bonjour
Astronomie
Biochimie
Conversion
Courriel
Électricité
Fichiers
Finance
Géographie
Géométrie
Histoire
Jeux & stratégies
Mathématique
Médicale
Météorologie
Océanographie
Sport
Système d'exploitation
Temps
Tri
Trigonométrie
Validation
Phase lunaire
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Bin,Hex,Base62,...
Validation
Tarif d'une piscine pour 1 mois
Texte séquentiel
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Chiffre romain
Tetris
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Créer un raccourci sur le bureau
Visualiser les variables d'environnement
Année bissextile
Calendrier
Date de la Pâque
Heure courante
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan
Cos
Sin
Courriel
Extension de nom de domaine
Alcinoe
ALGLIB
Ararat Synapse
CryptoLib4Pascal
Delphi JOSE and JWT Library
Delphi-OpenSSL
Delphi Redis Client
FBLib (Firebird Pascal Library)
FireDAC
INDY (Internet Direct)
Kastri
Mars-Curiosity
QuickLib
QuickLogger
RESTRequest4Delphi
Skia4Delphi
SynPDF
UniDAC
WinGraph
ZeosLib
Daraja (cadre d'application pour Web)
DelphiMVCFramework
DORM (Delphi ORM)
FireMonkey
Horse
LoggerPro
Router4Delphi
Spring4D
Synopse mORMot
tiOPF
TMS WEB Core
uniGUI
AWS SDK for Delphi
Remoting SDK
Python for Delphi (P4D)
VCL (Visual Component Library)
HeidiSQL
Inno Setup
JEDI
Delphi for .NET
RemObjects Chrome
Delphi versus VB
Bibliographie
Index
Préface
Notes légal
Dictionnaire
Recherche

Les classes de base de la bibliothèque

Le Delphi comprend un grand nombre de fonctions et de procédures, mais la vraie puissance de la programmation visuelle de Delphi réside dans l'énorme bibliothèque de classes l'accompagnant. La bibliothèque de classes standard de Delphi contient des centaines de classes, avec des milliers de méthodes, et elle est si grande qu'il est difficile de toute les documentés. Parmi les classes, certaines classes propose, des listes, des listes de chaînes de caractères, les collections et les flux de données. Et une grande partie des classes se trouve dans l'unité Classes.

Les classes Delphi peuvent être utilisées entièrement dans le code ou dans le concepteur visuel de formulaires. Certains d'entre eux sont des classes de composantes, apparaissant dans la palette de composantes, tandis que d'autres sont plus polyvalentes. Les termes classe et composante peuvent être utilisés presque comme des synonymes dans Delphi. Les composantes sont les éléments centraux des applications Delphi. Lorsque vous écrivez un programme, vous choisissez essentiellement un certain nombre de composantes et définissez leurs interactions. C'est tout ce qu'il y a à la programmation visuelle Delphi.

Le paquet du RTL, VCL et CLX

Jusqu'à la version 5, la bibliothèque de classes de Delphi était connue sous le nom de VCL, signifiant Visual Components Library. Puis avec Kylix, la version Delphi pour Linux, a introduit une nouvelle bibliothèque de composantes, appelée CLX (prononcé «clicks» et signifiant Component Library for X-Platform ou Cross Platform). Le Delphi 6 comprend à la fois les bibliothèques VCL et CLX. Pour les composantes visuels, les deux bibliothèques de classes sont alternatives l'une à l'autre. Cependant, les classes principales et les parties base de données et Internet des deux bibliothèques sont essentiellement partagées.

La VCL était considérée comme une seule grande bibliothèque, bien que les programmeurs se référaient à différentes parties de celle-ci (composantes, contrôles, composantes non visuels, ensembles de données, contrôles orientés données, composantes Internet,...). Le CLX introduit une distinction en quatre parties : BaseCLX, VisualCLX, DataCLX et NetCLX. Ce n'est que dans VisualCLX que la bibliothèque utilise une approche totalement différente entre les deux plates-formes, le reste du code étant intrinsèquement portable sous Linux.

Dans Delphi 6, cette distinction est soulignée par le fait que les composantes non visuels et les classes de base de la bibliothèque font partie du nouveau paquet RTL, étant utilisé à la fois par VCL et CLX. De plus, l'utilisation de ce paquet dans des applications non visuelles (par exemple, des programmes de serveur Web) vous permet de réduire considérablement la taille des fichiers à déployer et à charger en mémoire.

Sections traditionnelles de VCL

Les programmeurs Delphi utilisent pour faire référence à différentes sections de VCL avec des noms initialement suggérés pour Delphi dans sa documentation, et des noms étant devenus communs par la suite pour différents groupes de composantes. Techniquement, les composantes sont des sous-classes de la classe TComponent, étant l'une des classes racine de la hiérarchie, comme vous pouvez le voir dans la figure suivante :

En fait, la classe TComponent hérite de la classe TPersistent. Outre les composantes, la bibliothèque comprend des classes héritant directement de TObject et de TPersistent. Ces classes non-composantes sont souvent utilisées pour les valeurs de propriétés ou comme classes utilitaires utilisées dans le code; n'héritant pas de TComponent, ces classes ne peuvent pas être utilisées directement en programmation visuelle.

Pour être plus précis, les classes non-composantes ne peuvent pas être rendues disponibles dans la palette de composantes et ne peuvent pas être déposées directement dans un formulaire, mais elles peuvent être gérées visuellement avec l'inspecteur d'objets, en tant que sous-propriétés d'autres propriétés ou éléments de collections de différents types. Ainsi, même les classes sans composante sont souvent facilement utilisées lors de l'interaction avec le Form Designer.

Les classes de composantes peuvent être divisées en deux groupes principaux: les contrôles et les composantes non visuels. Les contrôles regroupe toutes les classes descendant de TControl.

Les contrôles ont une position et une taille à l'écran et s'affichent dans le formulaire au moment de la conception dans la même position qu'ils occuperont au moment de l'exécution. Les contrôles ont deux sous-spécifications différentes, basées sur des fenêtres ou graphiques.

Les composantes non visuels sont tous les composantes n'étant pas des contrôles - toutes les classes descendante de TComponent mais pas de TControl. Au moment de la conception, une composante non visuel apparaît sur le formulaire sous la forme d'une icône (éventuellement avec une légende en dessous). Au moment de l'exécution, certains de ces composantes peuvent être visibles (par exemple, les boîtes de dialogue standard) et d'autres sont toujours invisibles (par exemple, la composante de table de base de données).

Vous pouvez simplement déplacer le curseur de la souris sur un contrôle ou une composante dans le Form Designer pour voir un Tooltip (info-bulle) avec son nom et son type de classe. Vous pouvez également utiliser une option d'environnement, afficher les légendes des composantes, pour voir le nom d'une composante non visuel juste sous son icône.

La structure de CLX

C'est la subdivision traditionnelle de VCL, étant très courante pour les programmeurs Delphi. Même avec l'introduction de CLX et de nouveaux schémas de dénomination, les noms traditionnels survivront probablement et fusionneront dans le jargon des programmeurs Delphi. Le Delphi fait référence à différentes parties de la bibliothèque CLX en utilisant une terminologie sous Linux et une structure de dénomination légèrement différente (et moins claire) dans Delphi. C'est la subdivision de la bibliothèque compatible Linux :

Nom Description
BaseCLX Cette partie forme le noyau de la bibliothèque de classes, les classes les plus élevées (telles que TComponent) et plusieurs classes d'utilitaires générales (y compris les listes, les conteneurs, les collections et les flux de données). Par rapport aux classes correspondantes de VCL, le BaseCLX est en grande partie inchangé et est hautement portable entre les plates-formes Windows et Linux.
VisualCLX Cette partie contient la collection de composantes visuels, généralement indiqués comme des contrôles. C'est la partie de la bibliothèque étant la plus étroitement liée au système d'exploitation : VisualCLX est mise en oeuvre au-dessus de la bibliothèque Qt, disponible à la fois sous Windows et sous Linux. L'utilisation de VisualCLX permet une portabilité complète de la partie visuelle de votre application entre Delphi sous Windows et Kylix sous Linux. Cependant, la plupart des composantes VisualCLX ont des contrôles VCL correspondants, de sorte que vous pouvez également déplacer facilement votre code d'une bibliothèque à l'autre.
DataCLX Cette partie comprend tous les composantes liés à la base de données de la bibliothèque. En fait, DataCLX est le frontal du nouveau moteur de base de données dbExpress inclus à partir de Delphi 6 et Kylix. Le Delphi inclut également le frontal BDE traditionnel, dbGo et IBX (InterBase Express). Si nous pouvons considérer tous ces composantes comme faisant partie de DataCLX, seuls le frontal dbExpress et IBX sont portables entre Windows et Linux. Le DataCLX comprend également les composantes ClientDataSet, désormais indiqué comme MyBase, et d'autres classes associées.
NetCLX Cette partie permet d'inclure les composantes liés à Internet, du cadre d'application WebBroker, aux composantes du producteur HTML, d'Indy (Internet Direct) à Internet Express, du Site Express au support XML. Cette partie de la bibliothèque est, encore une fois, hautement portable entre Windows et Linux.

Sections spécifiques à la VCL de la bibliothèque

Les zones précédentes de la bibliothèque sont disponibles, sur Delphi et Kylix. Dans Delphi, cependant, il existe d'autres sections de VCL, qui pour une raison ou une autre sont spécifiques à Windows uniquement :

Enfin, l'installation par défaut de Delphi inclut certaines composantes tiers, tels que TeeChart pour les graphiques d'entreprise et QuickReport pour les rapports.

La classe TPersistent

La première classe de base de la bibliothèque Delphi est la classe TPersistent, ce qui est assez étrange : elle a très peu de code et presque pas d'utilisation directe, mais elle fournit une base pour toute l'idée de la programmation visuelle. Voici la définition de la classe contenu dans l'unité Classes :

  1. {$M+}
  2. Type
  3.  TPersistent=Class(TObject) 
  4.   Private 
  5.    Procedure AssignError(Source:TPersistent);
  6.   Protected 
  7.    Procedure AssignTo(Dest:TPersistent);Virtual; 
  8.    Procedure DefineProperties(Filer:TFiler); Virtual; 
  9.    Function GetOwner:TPersistent; Dynamic; 
  10.    Public Destructor Destroy; Override; 
  11.    Procedure Assign>(Source:TPersistent); Virtual; 
  12.    Function GetNamePath:string; Dynamic; 
  13.   End;

Comme son nom l'indique, cette classe gère la persistance, c'est-à-dire l'enregistrement de la valeur d'un objet dans un fichier à utiliser ultérieurement pour recréer l'objet dans le même état et avec les mêmes données. La persistance est un élément clef de la programmation visuelle. En fait au moment de la conception dans Delphi, vous manipulez des objets réels, étant enregistrés dans des fichiers DFM et recréés au moment de l'exécution lorsque le conteneur de composante spécifique - formulaire ou module de données - est créé. La prise en charge du flux de données, cependant, n'est pas intégrée dans la classe TPersistent mais est fournie par d'autres classes, ciblant TPersistent et ses descendants. En d'autres termes, vous pouvez persister avec les objets Delphi par défaut de diffusion uniquement des classes héritant de TPersistent. Une des raisons de ce comportement réside dans le fait que la classe est compilée avec une option spéciale activée, {$M+}. Cet indicateur active la génération d'informations RTTI étendues pour la partie publiée de la classe.

Le système de diffusion en continu de Delphi, en fait, n'essaie pas de sauvegarder les données en mémoire d'un objet, ce qui serait complexe à cause des nombreux pointeurs vers d'autres emplacements de mémoire, totalement dénués de sens lorsque l'objet serait rechargé. Au lieu de cela, Delphi enregistre les objets en listant la valeur de toutes les propriétés marquées d'un mot clef spécial, publié. Lorsqu'une propriété fait référence à un autre objet, Delphi enregistre le nom de l'objet ou de l'objet entier (avec le même mécanisme) en fonction de son type et de sa relation avec l'objet principal. Parmi les méthodes de la classe TPersistent, la seule que vous utiliserez généralement est la procédure Assign, pouvant être utilisée pour copier la valeur réelle d'un objet. Dans la bibliothèque, cette méthode est mise en oeuvre par de nombreuses classes non-composantes mais par très peu de composantes. En fait, la plupart des sous-classes réimplémentent la méthode AssignTo protégée virtuelle, appelée par la mis en oeuvre par défaut d'Assign. D'autres méthodes incluent DefineProperties, utilisée pour personnaliser le système de diffusion en continu et ajouter des informations supplémentaires (pseudo-propriétés), et les méthodes GetOwner et GetNamePath utilisées par les collections et autres classes spéciales pour s'identifier auprès de l'inspecteur d'objets.

Le mot-clef published

En plus des directives d'accès public, protected et private, vous pouvez utiliser une quatrième, appelée published. Pour tout champ, propriété ou méthode publié, le compilateur génère des informations RTTI étendues, de sorte que l'environnement d'exécution de Delphi ou un programme puisse interroger une classe pour son interface publiée. Par exemple, chaque composante Delphi a une interface publiée étant utilisée par l'EDI, en particulier l'inspecteur d'objets. Une utilisation régulière des champs publiés est importante lorsque vous écrivez des composantes. Habituellement, la partie publiée d'une composante ne contient aucun champ ou méthode mais des propriétés et des événements.

Lorsque Delphi génère un formulaire ou un module de données, il place les définitions de ses composantes et méthodes (les gestionnaires d'événements) dans la première partie de sa définition, avant les mots-clefs public et private. Ces champs et méthodes de la partie initiale de la classe sont publiés. La valeur par défaut est publiée lorsqu'aucun mot clef spécial n'est ajouté avant un élément d'une classe de composantes.

Pour être plus précis, published est le mot-clef par défaut uniquement si la classe a été compilée avec la directive du compilateur $M+ ou est issue d'une classe compilée avec $M+. Comme cette directive est utilisée dans la classe TPersistent, la plupart des classes de VCL et toutes les classes de composantes sont publiées par défaut. Cependant, les classes non-composantes dans Delphi (telles que TStream et TList) sont compilées avec $M- et par défaut à la visibilité publique.

Les méthodes attribuées à tout événement doivent être des méthodes publiées et les champs correspondant à vos composantes dans le formulaire doivent être publiés pour être automatiquement connectés aux objets décrits dans le fichier DFM et créés avec le formulaire.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Dimanche, le 3 janvier 2021