Project Oxygen & Ideo-LabIDEO LAB Dashboard 2026

💎 Delphi (RAD Studio) – Le Guide Ultime

Deep Dive : Object Pascal, RAD, VCL, FMX (Cross-platform), FireDAC (Data) & Composants.

1.1 Facile

1. C'est quoi Delphi ?

IDE + Langage (Object Pascal). RAD. Compile en natif (pas de VM). Borland -> Embarcadero.

RAD Object Pascal
1.2 Moyen

2. Philosophie RAD

Rapid App Development. "Drag-and-drop". Two-way tooling (.pas / .dfm).

RAD Two-way Tooling
1.3 Facile

3. Langage : Object Pascal

Syntaxe : unit, interface, implementation, begin..end;. Typage statique.

Object Pascal unit
1.4 Moyen

4. POO (Classes & Properties)

class(TObject), constructor, destructor, property (le "getter/setter").

class property
1.5 Facile

5. L'IDE (RAD Studio)

Object Inspector (Propriétés/Événements), Form Designer, Data Explorer.

IDE Object Inspector
2.1 Moyen

6. 🚀 Framework : VCL

Visual Component Library. Wrapper natif Windows (GDI). TForm, TButton, TEdit.

VCL Windows
2.2 Avancé

7. Framework : FMX

FireMonkey. Le "dérivé" cross-platform (iOS, Android, macOS, Linux). Rendu GPU.

FMX Cross-platform
2.3 Avancé

8. 💾 Data : FireDAC

Le "plugin" data n°1. TFDConnection, TFDQuery, TDataSource. Remplace le BDE.

FireDAC Data
3.1 Avancé

9. Dérivé : RAD Server (API)

Construire des APIs REST (JSON) back-end. DataSnap (Legacy) vs RAD Server (Moderne).

RAD Server API REST
3.2 Moyen

10. Plugins & Addons

L'écosystème. DevExpress, TMS Software, FastReport. Le manager GetIt.

DevExpress TMS Software
3.3 Moyen

11. Historique des Versions

Delphi 1 (1995), Delphi 7 (L'âge d'or), XE2 (FireMonkey), RAD Studio 12 (actuel).

Delphi 7 Versions
3.4 Facile

12. Fichiers & Cheat-sheet

.dpr, .pas, .dfm, .dcu, .exe. try..finally..Free;. Liens.

.pas .dfm
1.1 C'est quoi Delphi ?

Delphi est un IDE (Integrated Development Environment) et un langage (Object Pascal). Il a été créé par Borland en 1995 et est maintenant géré par Embarcadero (sous le nom de RAD Studio).

C'est le "père" du RAD (Rapid Application Development). Sa philosophie est de permettre de construire des applications (surtout de bureau Windows) incroyablement vite grâce au "drag-and-drop" de composants visuels.

Caractéristiques Clés
  • IDE Visuel : On "dessine" l'interface en déposant des boutons, grilles, etc.
  • Langage Object Pascal : Un langage structuré, fortement typé, basé sur Pascal, mais 100% orienté objet.
  • Compilation Native : Sa "killer feature". Contrairement à Java ou .NET (à l'époque), Delphi compile en code machine natif (x86/x64). Pas de VM, pas de JIT. Les .exe sont ultra-rapides et autonomes.
  • VCL (Visual Component Library) : La bibliothèque de composants pour Windows. (Voir 2.1).
  • FMX (FireMonkey) : Le "dérivé" moderne pour le cross-platform (Windows, macOS, iOS, Android, Linux). (Voir 2.2).
1.2 Philosophie RAD (Rapid Application Development)

Le cœur de Delphi est le RAD et son "Two-Way Tooling" (outillage bi-directionnel). C'est ce qui le sépare de (par exemple) Visual Basic classique.

Two-Way Tooling (Code <-> Visuel)

Le code et le designer sont *synchronisés*.

  1. Visuel -> Code : Vous glissez un TButton sur la Form (visuel). L'IDE ajoute automatiquement la ligne Button1: TButton; à votre classe (code).
  2. Code -> Visuel : Vous écrivez Button2: TButton; dans le code. Le composant *apparaît* sur le Form Designer.
.pas vs .dfm (Code vs Form)

Chaque "Form" (fenêtre) est composée de deux fichiers :

FichierDescription
Unit1.pasLe code (Object Pascal). C'est ici qu'est la logique (ex: procedure TForm1.Button1Click...).
Unit1.dfmLe layout (Delphi Form). C'est un fichier texte (ou binaire) qui stocke les *propriétés* des composants visuels (leur position, taille, couleur, texte...).
# Contenu (simplifié) de Unit1.dfm
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Ma Fenêtre'
  ClientHeight = 300
  ClientWidth = 400
  object Button1: TButton
    Left = 40
    Top = 50
    Width = 75
    Height = 25
    Caption = 'Cliquez ici'
    OnClick = Button1Click
  end
end
1.3 Langage : Object Pascal (Syntaxe)

Le langage de Delphi est Object Pascal. Il est fortement typé, non-sensible à la casse (MaVar est égal à mavar), et utilise begin...end; pour les blocs.

Structure d'un Fichier (unit)

Chaque fichier (.pas) est une "unité" (unit) qui a deux parties : interface et implementation.

unit MyUnit;

// --- 1. INTERFACE ---
// (Partie publique, "Header" C++)
// Ce qui est visible par les autres units.
interface

uses
  System.Classes, System.SysUtils; // Imports

type
  TMonType = (mtUn, mtDeux, mtTrois); // Enum
  
  TMaClasse = class(TObject)
  private
    FNom: string;
  public
    procedure FaireQuelqueChose;
  end;

// --- 2. IMPLEMENTATION ---
// (Partie privée, "cpp")
// Le code des méthodes.
implementation

procedure TMaClasse.FaireQuelqueChose;
begin
  ShowMessage('Hello'); // Fonction globale (VCL)
end;

end. // (Fin de l'unité)
Syntaxe de Base
// --- Variables ---
var
  MonEntier: Integer;
  MonTexte: string;
  MaListe: TStringList;

// --- Assignation ---
MonEntier := 10; // (Utilise ':=')
MonTexte := 'Bonjour';

// --- Contrôle (if/else) ---
if (MonEntier > 5) and (MonTexte = 'Bonjour') then
begin
  ShowMessage('Test 1 OK')
end
else
begin
  ShowMessage('Test 2 KO');
end; // (Note: le ';' est un SÉPARATEUR)

// --- Boucle For ---
for MonEntier := 1 to 10 do
begin
  // ...
end;
1.4 POO (Classes & Properties)

La POO en Object Pascal est très puissante. Toutes les classes héritent implicitement de TObject.

Classe, Constructeur & Destructeur

La gestion de la mémoire est *manuelle* (comme en C++). On doit appeler .Free (le destructeur) sur les objets qu'on crée.

type
  TPersonne = class(TObject)
  private
    FNom: string; // Convention: 'F' (Field) pour les champs privés
    FAge: Integer;
  public
    constructor Create(ANom: string; AAge: Integer); // 'A' = Argument
    destructor Destroy; override;
    
    procedure FeterAnniversaire;
  end;

// ...
constructor TPersonne.Create(ANom: string; AAge: Integer);
begin
  inherited Create; // Appelle le constructeur de TObject
  FNom := ANom;
  FAge := AAge;
end;

destructor TPersonne.Destroy;
begin
  // (Logique de nettoyage si nécessaire)
  inherited Destroy; // Appelle le destructeur parent
end;

procedure TPersonne.FeterAnniversaire;
begin
  FAge := FAge + 1;
end;
La "Killer Feature" : property (Getters/Setters)

Delphi a inventé le concept de "property" (repris par C#). C'est une méthode qui *ressemble* à une variable.

type
  TPersonne = class(TObject)
  private
    FNom: string;
    function GetNom: string;
    procedure SetNom(const Value: string);
  public
    constructor Create;
    
    // 1. Déclaration de la "Propriété"
    // (Elle "pointe" vers les méthodes getter/setter)
    property Nom: string read GetNom write SetNom;
  end;
  
// ...
function TPersonne.GetNom: string;
begin
  Result := FNom; // 'Result' est la variable de retour
end;

procedure TPersonne.SetNom(const Value: string);
begin
  if Value = '' then
    raise Exception.Create('Le nom ne peut pas être vide');
  FNom := Value;
end;

// --- Utilisation ---
var
  P: TPersonne;
begin
  P := TPersonne.Create;
  P.Nom := 'Alice'; // Appelle SetNom
  ShowMessage(P.Nom); // Appelle GetNom
  P.Free;
end;
1.5 L'IDE (RAD Studio)

L'IDE (maintenant appelé "RAD Studio") est le cœur de l'expérience Delphi. C'est là que la magie du "RAD" opère.

Les 4 Fenêtres Clés
FenêtreRôle
Form Designer (Visuel)La "toile" (le Form). C'est là que vous glissez/déposez les composants (TButton, TEdit) depuis la "Palette".
Code Editor (Code)L'éditeur pour le fichier .pas. (Accessible via la touche F12 pour basculer).
Object Inspector (Inspecteur)Le composant le plus important. Affiche (et permet de modifier) les propriétés du composant sélectionné (ex: Button1.Caption, Button1.Width).
Object Inspector (Événements)Le 2ème onglet de l'inspecteur. Affiche les *événements* (OnClick, OnKeyDown). Double-cliquez sur OnClick et l'IDE crée la méthode Button1Click pour vous.
Data Explorer

Une fonctionnalité clé est la connexion aux données *en design-time*. Vous pouvez glisser un TFDConnection, le connecter à votre BDD (SQL Server, etc.) *dans l'IDE*, glisser un TFDQuery, écrire SELECT *, et voir les données "live" dans un TDBGrid *sans jamais lancer l'application*.

2.1 🚀 Framework : VCL (Visual Component Library)

La VCL est le framework "classique" de Delphi. Il est 100% Windows-natif.

C'est une vaste bibliothèque de composants (classes) qui "enveloppent" (wrap) directement les contrôles natifs de l'API Windows (GDI, User32). C'est pourquoi les applications VCL ont toujours un look "natif" parfait et sont très légères.

Composants VCL Incontournables (T...)

La convention est que tous les types (classes) VCL commencent par T (pour "Type").

ComposantDescription
TFormLa fenêtre de base.
TApplicationL'objet global qui gère l'application (la boucle d'événements).
TButtonUn bouton (<button>).
TEditUn champ de texte (<input type="text">).
TLabelUn label texte.
TMemoUn champ texte multi-lignes (<textarea>).
TStringGrid / TDBGridUne grille (tableur). TDBGrid est la version "data-aware" (liée à une BDD).
TMainMenu / TPopupMenuPour créer les menus de la barre d'outils ou les menus contextuels (clic-droit).
Gestion des Événements

C'est la base de la VCL :

  1. Vous placez un TButton (nommé Button1).
  2. Dans l'Object Inspector, vous allez à l'onglet "Events".
  3. Vous double-cliquez sur l'événement OnClick.
  4. L'IDE vous bascule dans le code et crée le "squelette" de la méthode :
procedure TForm1.Button1Click(Sender: TObject);
begin
  // (Votre code ici)
  ShowMessage('Hello World!');
end;
2.2 Framework : FMX (FireMonkey)

FireMonkey (FMX) est le framework "dérivé", introduit en 2011 (Delphi XE2). C'est la réponse de Delphi au besoin de cross-platform.

VCL vs FMX
CritèreVCL (Classique)FMX (Moderne)
CibleWindows (32/64-bit) uniquement.Cross-Platform (Windows, macOS, iOS, Android, Linux).
RenduWrapper natif (GDI). Utilise les vrais contrôles Windows.Rendu GPU (Direct2D, OpenGL). Dessine ses propres contrôles (look "customisable").
PerformancesExtrêmement léger et rapide (natif Windows).Très rapide (accéléré GPU), mais .exe plus gros (embarque le runtime FMX).
Philosophie FMX

Avec FMX, vous écrivez votre code (logique métier, accès FireDAC) une seule fois. Vous "dessinez" votre interface une fois sur le Form Designer, et vous pouvez la compiler pour *toutes* les plateformes.

FMX gère les "styles" natifs. Votre TButton FMX ressemblera à un bouton iOS sur iOS, et à un bouton Android (Material Design) sur Android, tout en utilisant le même code source.

// Ce code Object Pascal fonctionne à l'identique sur
// Windows, iOS, et Android grâce à FMX.

procedure TForm1.Button1Click(Sender: TObject);
begin
  // TEdit (VCL) -> TEdit (FMX)
  // ShowMessage (VCL) -> TDialogService.ShowMessage (FMX)
  TDialogService.ShowMessage('Hello ' + Edit1.Text);
end;
2.3 💾 Data : FireDAC (Data Access)

FireDAC est le "plugin" (la bibliothèque) moderne et universel de Delphi pour l'accès aux données. Il remplace les anciens BDE, ADO, et DBExpress.

Les 3 Composants de liaison ("Data-Aware")

C'est le "Data Binding" visuel de Delphi :

  1. TFDConnection : La connexion (string de connexion vers SQL Server, PostgreSQL, MySQL, Oracle, SQLite, InterBase...).
  2. TFDQuery (ou TFDTable) : La requête (SELECT * FROM ...). Il contient les données en mémoire.
  3. TDataSource : Le "transformateur". C'est la colle invisible qui fait le lien entre les données (TFDQuery) et l'UI (TDBGrid).
Le Workflow (En Design-Time)

C'est ce qui rend Delphi si rapide pour les applications de gestion :

  1. Glisser un TFDConnection (configurer la BDD).
  2. Glisser un TFDQuery (écrire SELECT * FROM CLIENTS).
  3. Glisser un TDataSource (le lier au TFDQuery).
  4. Glisser un TDBGrid (une grille).
  5. Dans l'Object Inspector du TDBGrid, régler sa propriété DataSource sur le TDataSource.

Résultat : La grille se remplit avec les données de la BDD *directement dans l'IDE*, avant même d'avoir lancé l'application. La pagination, l'édition, et la sauvegarde sont (presque) automatiques.

3.1 Dérivé : RAD Server (Backend API)

Delphi n'est pas *que* pour le Desktop. On peut l'utiliser pour construire des backends (serveurs d'API) REST ultra-performants (car natifs).

1. DataSnap (Legacy)

L'ancienne technologie multi-tiers de Borland. Elle était puissante mais complexe (utilisait DCOM, TCP/IP) et a été adaptée pour le REST/JSON.

2. RAD Server (Moderne)

C'est la solution "clé en main" d'Embarcadero pour déployer des APIs REST. C'est un serveur (basé sur WebBroker, le "Nginx" de Delphi) qui gère :

  • La publication d'Endpoints REST (JSON).
  • L'analyse (Analytics).
  • La gestion des utilisateurs.
Exemple (Créer un endpoint /api/users)
// On crée un "Resource Module"
// On utilise des "Attributs" (comme en C#) pour définir les routes

[Path('users')] // -> /users
TUsersResource = class(TDataModule)
private
  FQuery: TFDQuery;
public
  [GET] // -> GET /users
  procedure GetUsers(Context: TEndpointContext);
  
  [GET, Path('{id}')] // -> GET /users/123
  procedure GetUser(Context: TEndpointContext; id: Integer);
end;

procedure TUsersResource.GetUsers(Context: TEndpointContext);
begin
  FQuery.SQL.Text := 'SELECT * FROM users';
  FQuery.Open;
  
  // Convertit le résultat de la BDD en JSON et l'envoie
  Context.Response.SetBody( FQuery.AsJSON );
end;
3.2 Plugins & Addons (L'Écosystème)

La véritable puissance de Delphi a toujours été son écosystème de composants tiers (plugins). C'est un marché de plusieurs millions de dollars. Vous pouvez acheter un composant, le glisser sur le Form, et ajouter des fonctionnalités (ex: un tableur Excel complet) à votre app en 10 minutes.

Gestionnaires de "Plugins"
OutilDescription
GetIt (Package Manager)L'outil "officiel", intégré à l'IDE RAD Studio. Permet de télécharger et d'installer des composants gratuits et payants (bibliothèques, styles, ...).
Delphi Package (.bpl)Le format "historique" d'un plugin. Un .bpl (Borland Package Library) est une .dll spéciale que l'IDE charge pour ajouter des composants à la "Palette".
Les "Big Players" (Addons Incontournables)
3.3 Historique des Versions

L'histoire de Delphi est longue et marquée par des "âges d'or". (Note : "RAD Studio" est la suite qui inclut Delphi et C++Builder).

VersionDatePropriétaireNouveauté Majeure
Delphi 11995BorlandLancement (16-bit Windows 3.1). RAD & VCL.
Delphi 21996BorlandCompilation 32-bit (Windows 95).
Delphi 72002BorlandL'ÂGE D'OR. Considérée comme la version la plus stable et la plus rapide pour Win32. (Encore utilisée en production !).
Delphi 20072007CodeGearSupporte .NET (une branche qui sera abandonnée).
Delphi XE22011EmbarcaderoRévolution : FireMonkey (FMX). Ajout du 64-bit et de la compilation macOS.
Delphi XE52013EmbarcaderoAjout de la compilation iOS & Android.
Delphi 10.x2015-2021Embarcadero(Seattle, Berlin, Rio, Sydney). Support de Linux (serveur), GetIt Manager.
RAD Studio 122023EmbarcaderoVersion actuelle. Support de Windows 11, macOS ARM64.
3.4 Fichiers & Cheat-sheet
Structure de Fichiers (Projet)
ExtensionDescription
.dprDelphi Project. Le point d'entrée (program ... begin ... end.).
.pasFichier Pascal. Le code (unit, implementation).
.dfmDelphi Form Module. Le layout (VCL).
.fmxFireMonkey X (Form). Le layout (FMX).
.dprojFichier de configuration du projet (XML, gère les options).
.dcuDelphi Compiled Unit. Le .o (objet) de Delphi.
.exeL'exécutable natif final.
Cheat-Sheet Syntaxe
// --- Assignation (pas '=') ---
MaVar := 'Valeur';

// --- Comparaison (pas '==') ---
if MaVar = 'Valeur' then ...

// --- Bloc de code ---
begin
  ...
end; // Point-virgule OBLIGATOIRE

// --- Gestion Mémoire (CRUCIAL) ---
// (Le "try...finally" est le "using" de C#)
var
  MaListe: TStringList;
begin
  MaListe := TStringList.Create;
  try
    // ... utiliser MaListe ...
  finally
    MaListe.Free; // Libère la mémoire (le destructeur)
  end;
end;

// --- Conversion (Typage fort) ---
MonInt := StrToInt('123');
MonStr := IntToStr(123);
MonStr := FloatToStr(1.23);