menu
  Home  ==>  articles  ==>  delphi  ==>  delphi_prism_tutorial   

Tutorial Delphi PRISM - John COLIBRI.


1 - Présentation de Delphi PRISM

Delphi Prism est la nouvelle plateforme qui permet de développer des applications .Net en Delphi.

De façon résumé, Delphi PRISM est

  • un compilateur Delphi (le langage Pascal Objet adapté pour les composants et le développement RAD)
  • qui génère des applications utilisant la plateforme Microsoft .Net (versions 1 à 3.5)
  • permettant de développer des applications PC (ne nécessitant pas Internet), ainsi que des applications Internet. Ces deux modes ont accès aux bases de données, ce qui est très généralement le besoin
  • l'environnement de développement est Visual Studio 2008 Shell


Du point de vue du développeur, nous allons présenter
  • une application Windows Forms
  • une application Asp.Net
  • nous en profiterons pour décrire le maniement élémentaire de l'IDE (Integrated Development Environment, soit l'environnement de développement)


L'environnement de développement est donc Visual Studio Shell, et est très similaire à l'environnement Delphi 2005 à 2009. Sa présentation générale est la suivante:

visual_studio_shell
dp_00_visual_studio_shell

où vous distinguerez sans difficulté

  • (1) le panneau pour la Forme et le Code Delphi
  • (2) la palette des composants
  • (3) l'Inspecteur d'Objets



2 - Installation de Delphi Prism

L'installation est des plus classique. Pour utiliser Delphi PRISM, il faut disposer
  • le la librairie .Net
  • de Visual Studio Shell
  • du compilateur "Oxygen" qui compile le langage Delphi pour générer des applications qui fonctionnent sous .Net
  • et optionnellement:
    • installe Mono si souhaite
    • installe des produits additionnels
      • dPack
      • aspect
      • Mac
En gros tout s'est très bien passé
  • comme nous avions la version "Electronic", nous avons utilisé l'adresse fournie par Codegear pour télécharger le lanceur
  • lancement du lanceur après décompression du .ZIP
  • même traitement pour Visual Studio Shell
  • il a fallu juste cliquer ici ou là pour accepter les accords de licence
  • enregistrement auprès de CodeGear



3 - Application Windows Forms Delphi PRISM

3.1 - Une application Windows locale

Nous retrouvons (avec plaisir) les applications Windows construites sur la plateforme Dot Net (qui, rappelons-le, avaient disparu avec Delphi 2007).

Pour créer notre application Windows Forms (WinForms pour les intimes):
   lancez Delphi Prism par "Démarrer | Programs | Delphi Prism | Delphi Prism in Visual Studio 2008"

start_delphi_prism

   la version Delphi Prism de Visual Studio Shell est chargée, et la page de démarrage affichée (Ed: la fenêtre a été rapetissée pour éviter le défilement écran dans votre Explorateur .HTML)

visual_studio_start_page

   démarrez un nouveau projet par "File | New | Project":

file_new_project

   un dialogue permettant de sélectionner le type de projet est présenté:

vs_shell_new_project_dialog

   sélectionnez "Delphi Prism | Windows | Windows Application" et cliquez "Ok"

   au bout de quelques secondes, un projet WinForms vide est créé:

empty_winforms_project



3.2 - Ajout d'un Button et d'un événement

Notre première application va afficher la fenêtre en rouge par un clic sur un Button.

Nous récupérons le Button de la Toolbox (== la Palette). Par défaut, la Toolbox est repliée sur la gauche de la fenêtre.



Pour visualiser la Toolbox
   promenez la souris du côté de l'icône située à la marge gauche (la flèche rouge)

visual_studio_toolbox

   pour fixer (pinning) cette fenêtre, cliquez la "punaise" située en haut à droite de la Toolbar

pinning_the_toolbox



Posons le Button et colorions la fenêtre en rouge:
   sélectionnez l'onglet "common controls", sélectionnez le Button et posez-le sur la forme
   cliquez deux fois sur le Button
   la fenêtre de code est ouverte, et l'événement MainForm.button1_Click a été généré
   tapez le code pour colorier la fenêtre en rouge:

backcolor_red_code



Compilons et exécutons:
   sélectionnez soit l'icône "start debugging" (flèche rouge) ou "start without debugging" (la flèche verte)

compile_and_run

   la fenêtre est affichée:

the_compiled_result



Notez que:

  • comme pour Delphi, lorsque le projet s'exécute, l'IDE présente les panneaux utiles pour suivre l'exécution (apparition des panneaux "Auto" et "Call Stack", suppression de la Toolbox et Property Inspector)
  • nous avons fixé la Toolbox. Ceci n'est naturellement pas une obligation, et certains développeurs (en Delphi 2007 ou 2009) conservent des panneaux "mobiles" pour permettre une meilleure visibilité du code
  • la zone centrale ("documents" comporte actuellement 3 onglets. L'onglet "Start Page" peut être fermée sans grand préjudice en cliquant l'icône en haut à droite:

    close_a_document

    Vous pourrez toujours la ré-ouvrir par "View | Other Window | Start page"



3.3 - Ajout d'un dialogue

Le Solution Explorer contient un certain nombre de fichiers. Pour mieux comprendre leur organisation, ajoutons une seconde fenêtre que nous allons afficher de façon modale

Par conséquent :
   cliquez la petite flèche de la seconde icône de la Toolbar "add new item", et sélectionnez le premier élément "new item" (ou clic droit sur "Solution Explorer | WindowsApplication1 | Add | New Item" ou encore "Project | Add New Item")

add_new_form

   le dialogue "New Item" est présenté

new_windows_form

   cliquez "Windows Form"

   une nouvelle forme est créée

new_windows_form_is_created

   posez un composant sur Form1, par exemple une CheckBox

   retournez sur la forme principale par "Solution Explorer | double click sur Main.Pas'

select_a_document

   posez un Button, créez son événement, et tapez le code qui ouvrira la forme de façon modale:

method MainForm.button2_Click(senderSystem.ObjecteSystem.EventArgs);
  var l_form_1Form1;
  begin
    l_form_1:= New Form1;
    if l_form_1.ShowDialogSystem.Windows.Forms.DialogResult.Cancel
      then BackColor:= Color.Lime;
  end// button2_Click

Notez que

  • nous avons ajouté une CheckBox sur Form1, car sinon le compilateur se plaignait de l'absence de FORM1.RESX


3.4 - Les fichiers utilisés

En examinant le Solution Explorer, la structure devient plus claire
  • le fichier PROGRAM.PAS est le point d'entrée principal qui lance la fenêtre MAIN.
  • pour chaque fenêtre, il y a 3 fichiers:
    • xxx.PAS qui contient notre code
    • xxx.DESIGNER.PAS qui créé les composants
    • xxx.RESX un fichier qui contient les resources (icônes etc)
  • la fenêtre qui est lancée par le programme principal est appelée MAIN
  • les autres fenêtres sont appelées FORM1, FORM2 etc


Tous ces fichiers sont placés dans:

    C:\Documents and Settings\ds\Mes documents\Visual Studio 2008\Projects\WindowsApplication1\WindowsApplication1

et voici le détail de ce répertoire (_data est un répertoire que nous avons ajouté pour nos bases de données DataSnap et Ado.Net, et qui n'a rien à voir avec cette application):

visual_studio_files



3.5 - Le code de MAIN.PAS

Le code de MAIN.PAS est ls suivant:

namespace WindowsApplication1;
  interface
    uses
      System.Drawing,
      System.Collections,
      System.Collections.Generic,
      System.Linq,
      System.Windows.Forms,
      System.ComponentModel;

    type MainForm =
             partial class(System.Windows.Forms.Form)
               private
                 method button1_Click(senderSystem.ObjecteSystem.EventArgs);
                 method button2_Click(senderSystem.ObjecteSystem.EventArgs);
               protected
                 method Dispose(disposingBoolean); override;
               public
                 constructor;
             end// MainForm

  implementation

    constructor MainForm;
      begin
        InitializeComponent();
      end// MainForm

    method MainForm.Dispose(disposingBoolean);
      begin
        if disposing then begin
          if assigned(componentsthen
            components.Dispose();
        end;
        inherited Dispose(disposing);
      end// Dispose

    method MainForm.button1_Click(senderSystem.ObjecteSystem.EventArgs);
      begin
        BackColor:= Color.Red;
      end// button1_Click

    method MainForm.button2_Click(senderSystem.ObjecteSystem.EventArgs);
      var l_form_1Form1;
      begin
        l_form_1:= New Form1;
        if l_form_1.ShowDialogSystem.Windows.Forms.DialogResult.Cancel
          then BackColor:= Color.Lime;
      end// button2_Click

  end.

Notez que

  • le mot clé UNIT est remplacé par NAMESPACE
  • la Classe est une Classe Partial. Nous retrouverons l'autre partie de cette Classe dans le fichier MAIN.DESIGNER.PAS
  • les mots clé PROCEDURE et FUNCTION ont été remplacés par METHOD
  • le CONSTRUCTOR n'a pas ce nom: c'est le constructeur par défaut
  • la méthode MainForm et le Constructor sont dans une section (repliée par défaut dans l'IDE)
  • les paramètres sont à la syntaxe .Net: e: System.Arg, le type dépendant en général de la méthode
  • les composants et les propriétés sont ceux de .Net:
    • un type Button (au lieu de tButton)
    • une propriété BackColor (au lieu de Color)
    • une valeur Color.Red (le type de l'énuméré et la valeur) au lieu de la constante clRed
    • pour créer un objet, il faut utiliser la nouvelle syntaxe New
    • l'ouverture d'une fenêtre modale se fait par ShowDialog (au lieu de ShowModal)
    • la valeur de résultat modal se désigne par System.Windows.Forms.DialogResult.Cancel (au lieu de la constante mrCancel)


A par les nouveaux mots clé, l'utilisation de la notation .Net a déjà été abondamment présentée dans nos tutoriels précédents sur Delphi .Net.



3.6 - Le code de MAIN.DESIGNER.PAS

Le contenu de MAIN.DESIGNER.PAS est le suivant

namespace WindowsApplication1;
  interface
    uses
      System.Windows.Forms,
      System.Drawing;

    type MainForm =
            partial class
              private
                componentsSystem.ComponentModel.Container := nil;
                button1System.Windows.Forms.Button;
                button2System.Windows.Forms.Button;
                method InitializeComponent;
              end;

  implementation

    method MainForm.InitializeComponent;
      begin
        var resourcesSystem.ComponentModel.ComponentResourceManager
            := new System.ComponentModel.ComponentResourceManager(typeOf(MainForm));

        self.button1 := new System.Windows.Forms.Button();
        self.button2 := new System.Windows.Forms.Button();
        self.SuspendLayout();
        // -- button1
        self.button1.Location := new System.Drawing.Point(13, 13);
        self.button1.Name := 'button1';
        self.button1.Size := new System.Drawing.Size(75, 23);
        self.button1.TabIndex := 0;
        self.button1.Text := 'button1';
        self.button1.UseVisualStyleBackColor := true;
        self.button1.Click += new System.EventHandler(@self.button1_Click);
        // -- button2
        self.button2.Location := new System.Drawing.Point(13, 43);
        self.button2.Name := 'button2';
        self.button2.Size := new System.Drawing.Size(75, 23);
        self.button2.TabIndex := 1;
        self.button2.Text := 'button2';
        self.button2.UseVisualStyleBackColor := true;
        self.button2.Click += new System.EventHandler(@self.button2_Click);
        // -- MainForm
        self.ClientSize := new System.Drawing.Size(292, 273);
        self.Controls.Add(self.button2);
        self.Controls.Add(self.button1);
        self.Icon := (resources.GetObject('$this.Icon'as System.Drawing.Icon);
        self.Name := 'MainForm';
        self.Text := 'MainForm';

        self.ResumeLayout(false);
       end// InitializeComponent

    end.

Notez que:

  • la Classe est aussi Partial
  • nous retrouvons bien la définition de nos deux Buttons
  • la méthode InitializeComponent se charge de créer les composants par code (au lieu d'utiliser, comme Delphi Win32 un fichier .DFM qui est utilisé par une procédure de l'.EXE pour créer les composants). Au niveau de résultat, c'est strictement la même chose, mais, pour de nouveaux composants cela de s'inspirer de ces instructions de création pour créer des composants nous même dynamiquement
    Cette technique était aussi la même en Delphi 2006.Net


3.7 - Le "programme" principal

Le code de PROGRAM.PAS est le suivant:

namespace WindowsApplication1;
  interface
    uses
      System.Threading,
      System.Windows.Forms;

    type Program = 
             assembly static class
               private
                 class method OnThreadException(senderObject;
                     eThreadExceptionEventArgs);
               public
                 class method Main;
               end// Program

  implementation

    [STAThread]
    class method Program.Main;
        // The main entry point for the application.
      begin
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.ThreadException += OnThreadException;
        using lMainForm := new MainForm do
          Application.Run(lMainForm);
      end// Main

    class method Program.OnThreadException(senderObject
        eThreadExceptionEventArgs);
        // Default exception handler
      begin
        MessageBox.Show(e.Exception.Message);
      end// OnThreadException

    end.

Et nous constatons que

  • la Classe contenant le programme est définie comme une Assembly, ce qui, dans la terminologie .Net est similaire à "Module" en Win32 (.DLL ou .EXE)
  • la Method de Classe Main créé bien la fenêtre principale et lance l'application


3.8 - Les autres fichiers

Le fichier xxx.SLN (sln = Solution) correspond au projet. C'est celui-ci que nous cliquons lorsque nous souhaitons charger un projet.

Le fichier .EXE est situé dans BINDEBUG et ne fait que 32 K



3.9 - Le Solution Explorer

Notre Solution Explorer se présente ainsi:

solution_explorer

Mentionnons simplement que :

  • la zone référence contient les autres "assemblies" utilisées par notre projet. C'est ici qu'il faudra éventuellement ajouter des assemblies qui ne seraient pas importés automatiquement par Delphi Prism



4 - Navigation et Raccourcis Visual Studio

4.1 - Les noms et les emplacements

Naturellement, outre les changements de noms (Propriété au lieu d' Inspecteur d'Objet, Toolbox au lieu de Palette) et d'emplacement (les Propriétés à droite au lieu de gauche etc), le plus déroutant pour les nouveaux arrivants dans le monde Visual Studio est la navigation et les raccourcis.

Voici donc un petit guide à ce sujet

4.2 - Organisation Générale Visual Studio

Visual Studio comporte deux types de panneaux
  • les "documents" qui sont situés dans le panneau central. Dans notre cas, c'est là que seront présentés
    • les formes (designer)
    • les textes
      • essentiellement les fichiers de code
      • ou d'autres fichiers (fichiers .XML, .CSS etc
  • les "tools" qui sont utilisés pour manipuler les documents. Dans notre cas :
    • la Toolbox (et le Serveur Explorer situé dans un autre onglet)
    • les Properties qui contient les propriétés et les événements
    • le Solution Explorer qui présente tous les fichiers utilisés par nos applications (dans l'onglet "Class View" une vue des Classes, mais qui n'est actuellement pas opérationnel)
    • les panneaux du bas (Output, Error list, dont nous n'aurons naturellement jamais besoin, etc)
Tous ces éléments sont éminnement "dockables".

Très vite la présentation initiale risque d'être modifiée, et de redocker les panneaux à un emplacement donné se révèle non trivial. Heureusement il existe un bouton "panique", accessible par "Window | Reset Window" que nous utilisons assez régulièrement (il existe vraissemblablement quelque part une possibilité de verrouiller le docking).



4.3 - Navigation Code / Designer

Pour un développeur, le plus crucial est la navigation Code / Forme.

Le plus simple est d'utiliser les icônes situées en haut du Solution Explorer. Naviguons par exemple entre le code et la Forme de Main:
   dans Solution Explorer, DOUBLE cliquez sur "Main"(ou sur "Main.Designer" !)
   la Forme de Main est affichée dans le panneau central des documents
   pour voir le code, cliquez sur l'icône "View Code"

select_design_document
   pour retourner sur la Forme, nous pouvons utiliser l'icône "View Designer" située à côté de "View Code"



Le panneau central ne peut pas être défilé. En revanche nous pouvons utiliser la petite flèche "Active Forms" située à côté de l'icône de fermeture de document:



4.4 - Raccourci de Navigation entre les Tools

Pour naviguer entre les panneaux nous pouvons utiliser
  • Alt F7
Par exemple
   sélectionnez Visual Studio
   tapez Alt F7
   un dialogue présentant toutes les Tools est présenté

visual_studio_tools_navigator

   la frappe répétée de F7 présentera les Tools les uns après les autres


Si par mégarde vous fermez une Tool, vous pouvez la réafficher par le menu "View"



Les Properties

Ce panneau affiche

  • les propriétés du composant sélectionné sur la Forme
  • un peu plus étonnant, les propriétés d'un fichier sélectionné (par simple clic) dans le Solution Explorer
Pour les propriétés des composants, nous basculons des propriétés aux événements en cliquant l'icône "Events" située en haut des Properties:

switch_btw_properties_and_events



Raccourcis divers

De nombreuses navigations et actions sont possibles en utilisant des raccourcis claviers. Citons entre autre

  • Ctrl Shift B pour compiler
  • Ctrl Tab pour changer de document:

    select_a_document_shortcut

  • Ctrl F6 (et Shift Ctrl F6) ont le même rôle (en évitant le dialogue)
  • F5 lance la compilation
  • pratiquement toutes les Tools sont accessibles directement par des raccourcis (par exemple Ctrl Alt X pour la ToolBox). Pour connaître ces raccourcis, voyez le menu "View"
Nous ne pouvons pas dire que ces choix de raccourcis nous ont transporté d'allégresse. Toutefois il doit être possible de les redéfinir ("Tools | Options | Environment | Keyboard). Pour une présentation plus complète des raccourcis Visual Studio, consultez le les pages MSDN




5 - Application ASP.NET avec Delphi PRISM

Voici une application Asp.Net simple
   fermez l'application précédente par "File | Close Solution"
Il est possible de gérer plusieurs projets simultanément, mais nous préférons travailler projet par projet s'ils n'ont aucun lien en commun



Voici notre exemple qui colorie une page .HTML en rouge:
   créez une application Asp.Net par "File |

select_a_document_shortcut

   un dialogue nous propose soit une application Asp.Net soit un service Web:

select_internet_applicatino

   sélectionnez l'application Asp.Net

   au bout de quelques instants, une nouvelle application Asp.Net est présentée:

asp_net_default_application



Notez que

  • comme d'habitude, dans l'IDE, une fenêtre Asp.Net comporte trois partie
    • le texte du "modèle", stocké dans un fichier xxx.Aspx
    • la Forme, qui représente la page telle que la verra l'utilisateur (designer, qui est une représentation graphique du fichier .ASPX)
    • le code, contenant nos événements, contenu ici dans le fichier xxx.ASPX.PAS
  • il existe comme d'habitude un fichier WEB.CONFIG (gestion de la sécurité, des Data Providers etc) et un MACHINE.CONFIG global
  • pour naviguer de l'une de ces partie à une autre, nous utilisons
    • les icônes "code" et "designer" au dessus du Solution Explorer (flèches mauves et bleues)
    • les icônes au bas du document (flèches rouges)
  • le projet indique "c:\..\Website1\. En fait, les paramètres du projet (*.SLN) sont sous "PROJECTS" alors que les fichiers Asp.Net sont sous "WEBSITES":

    asp_net_files

    Le répertoire APP_DATA est, comme d'habitude, créé pour placer les données propres à notre "site", comme, par exemple une base de données Blackfish Sql.



Ajoutons notre bouton:
   cliquez le bouton "Design" en bas du document
   la Forme est présentée
   depuis la page "Standard" de la ToolBox, déposez un Button et un Label
   voici le résultat:

page_with_a_button

   cliquez deux fois sur Button1 pour créer l'événement
   tapez le code qui affiche un texte dans Label1

method _Default.Button1_Click(senderSystem.ObjecteSystem.EventArgs);
  begin
    Label1.Text:= 'hello world';
  end// 

   lancez la compilation / exécution

   Delphi Prism
  • compile le code
  • lance le serveur local (le cousin de Cassini) que vous pouvez afficher en cliquant sur son icône située sur le "tray icon":

    asp_net_development_server

  • lance votre explorateur web par défaut (FireFox dans notre cas)
  • charge dans ce Browser notre page:

    asp_net_page_in_the_default_browser

   cliquez "Button1"
   après un aller retour, le résultat est affiché:

hello_world



Mentionnons que la dernière icône située en haut et à droite du Solution Explorer lance l'outil d'administration du site (la sécurité, les rôles, profils etc, cf notre article sur le sujet):

web_admin_tool




6 - Notre Opinion et quelques Commentaires

6.1 - Un bref historique

Comme nous l'avons déjà présenté dans l'article sur les versions Delphi :
  • Delphi 2006 .Net permettait de développer des applications utilisant la librairie .Net
    • en utilisant directement la librairie .Net
      • pour Windows Forms (non internet)
      • pour Asp.Net (internet)
    • en utilisant une couche d'adaptation pour avoir le même code que sous Win32, Vcl.Net. Le même code Win32 pouvait être compilé, en utilisant simplement une autre librairie sous-jacente

    win32_vs_dot_net_delphi_2006

  • Rad Studio 2007 ne permettait plus que la création d'applications Asp.Net, mais avec la version 2.0 de .Net
  • Delphi 2009 était purement Win32


Delphi PRISM permet donc à nouveau de réaliser des applications
  • non Internet
  • Asp.Net pour Internet (plus des services Web)
et en ayant accès aux nouveautés de la version 3.5 de .Net

Commercialement, Delphi PRISM est fourni avec "Rad Studio 2009", avec Delphi 2009 pour la partie Win32, et Delphi PRISM pour la partie .Net

win32_vs_dot_net_rad_studio_2009



Certains regrettent l'abandon de Vcl.Net, qui permettait de compiler indifféremment avec la librairie Win32 ou .Net. D'autres affirment que l'adaptation difficile entre deux librairies assez différentes faisaient de Vcl.Net un produit hybride, que ne pouvait être parfait ni dans le monde Win32 ni dans celui de .Net.

Pour notre part, nous n'avons guère utilisé cette version Vcl.Net. A droite ou a gauche, mais pas au milieu. Pour des applications utilisant la syntaxe Win32 (les tEdit, les tStringlist), travailler directement en Win32 offre l'avantage de l'accès direct à la librairie et de la performance (compilation, vitesse d'exécution, et, in fine, coût de développement).

Au contraire, la possibilité d'écrire du code Delphi (= Pascal objet) pour accéder en direct à la librairie .Net (Clr, Fcl) nous paraissaient une ouverture majeure. Force est de reconnaître que Microsoft, avec ses moyens, impose un peu la tendance. Par exemple les génériques et méthodes anonymes de Delphi 2009 "suivent" les concepts introduits par .Net 2.0. Il reste donc important de garder un oeuil attentif sur les nouveautés introduites par .Net

Vous l'avez compris, nous ne regrettons en rien l'abandon de Vcl.Net

En revanche, nous avons du mal à comprendre pourquoi Codegear n'a pas pu adapter leur compilateur à la librairie .Net 3.5. Ils avaient déjà réalisé un compilateur "Delphi Pascal => .Net 2.0", et avaient déjà un IDE sous la main.

RemObject a du réaliser un travail bien plus important en adaptant leur compilateur "Pascal => .Net 3.5" à la plateforme Visual Studio. Marc HOFFMAN de RemObject a souligné que la majeure partie de leur temps a été de trouver les points d'entrée dans Visual Studio, et que ceci n'a été possible que grâce à des contacts personnels avec les développeurs de Microsoft. Edifiant pour ceux qui souhaitent utiliser Visual Studio Shell.



6.2 - RemObjects

Cette société a commencé par offrir une couche d'accès aux bases de donnée et aux objets distribuée "Data Abstract".

Puis elle a ajouté un compilateur "Pascal => .Net". Lorsque Microsoft a lancé .Net, ils ont activement soutenu les organisations qui créaient des compilateurs de n'importe quel langage (Prolog, Fortran, Lisp, Pascal etc) vers le code intermédiaire MSIL (Microsoft Intermediate Language). L'environnement .Net se chargeait de passer du MSIL vers le code natif.

En Octobre 2000 une version Open Source (Component Pascal, Université de Queensland) étaient disponible sur le Web. Nous ignorons si RemObject a utilisé ou non cette base pour créer sa première version "Pascal => .Net" (Chrome), mais cette version a été une base pour explorer certaines extensions de Delphi Pascal.

RemObjects a ensuite proposé le compilateur Oxygen.

C'est ce compilateur qui a été intégré à Delphi PRISM



6.3 - Delphi PRISM

En résumé, pour constituer Delphi PRISM
  • Microsoft offre
    • un Ide générique "vide" comportant un inspecteur d'objet, une palette et une zone pour les "documents".
      Les personne souhaitant utiliser cet Ide installent leur produit par dessus, et c'est ce qu'a réalisé RemObjects.
    • la librairie .Net. Donc
      • une couche de gestion (compilateur, gestionnaire mémoire, vérification des types)
      • une librairie de composants (Edit, Collection)
  • RemObject ajoute
    • un compilateur "Pascal" vers le code intermédiaire .Net
    • le raccordement entre ce langage et l'Ide et la librairie .Net
    • accessoirement la librairie Data Abstract
  • Codegear encapsule le tout
    • en ajoutant la couche d'accès aux données dbx4 / DataSnap et Blackfish Sql


6.4 - Nos commentaires sur l'utilisation de PRISM



6.4.1 - Le code Delphi Pascal

Pour le langage :
  • quelques modifications de forme
    • utilisation de Method, Assembly etc, et de nouveaux mots clé
  • utilisation des librairies et conventions .Net
    • signatures différentes (paramètres événement, par exemple)
    • librairie FCL


En revanche, nous bénéficions
  • d'une syntaxe Pascal
    • Begin et End etc
    • plus important, With, variables globales, constantes, paramètres valeur et variable, Units comme élément d'aggrégation, séparation de l'Interface et de l'Implementation
  • de nombreux ajouts propres à .Net
    • les génériques et les méthodes anonymes
    • les extensions de type LINQ (qui semblerait toutefois en voie d'obsolescence du côté de Microsoft)
  • les extensions RemObject : Marc HOFFMAN a incorporé quelques unes de ses marottes, comme
    • les contrats (DBC Design By Contract, cher à Bertrand MEYER)
    Nous approuvons fortement ces amélioration, et ne pouvons que souhaiter qu'elles soient incorporées prochainement à Delphi Win32


6.4.2 - Quant à l'IDE:

Nous avons relevé
  • des nouveautés superficielles
    • au niveau des noms et de la position
      • la Palette s'appelle la Toolbox et est à gauche
      • le gestionnaire de projet s'appelle le "Solution Explorer"
      • l'Inspecter d'Objet s'appelle Properties et ne comporte pas d'onglet "événement"
      Pas très grave: nous savons à priori ce qu'il faut trouver (une Palette, un un Inspecteur d'Object, une zone de conception et un Editeur de code). Donc il suffit de chercher un peu
    • au niveau des raccourcis
      • pas, semble-t-il de raccourci pour basculer entre le concepteur et l'inspecteur (F11 et F12)
      • des raccourcis compliqués en général (Ctrl Shift B !)
    • docking très sensible, et impossibilité de le bloquer
  • quelques fonctionnalités non implémentées
    • possibilité d'effacer un fichier depuis le Solution Explorer
    • impossibilité d'utiliser "Clic Droit | Sauvegarder" sur chaque fichier dans le Solution Explorer
    • "Enregistrer sous" pénible
    • dans les options, absence semble-t-il de spécifier les chemins de destination de l'.EXE, les chemins de recherche des Unités
  • absences de certaines possibilités ou composants:
    • le Class Explorer
    • certains composants utilisant les bases de données (tXxxConnection etc). L'ensemble se fait en utilisant des Wizards (ou ensuite par code)


Nous avons aussi trouvé certaines lenteurs. Mais comme nous avons utilisé un PC à 1.400 Mhz et 512 Mb de mémoire, vous bénéficierez sans aucun doute avec les PC actuels d'une meilleure performance.



6.4.3 - Linux et Mac

Nous ne l'avons pas mentionné, mais Delphi PRISM permet de développer des applications destinées à Linux (via la librairie MONO qui émule .Net) et Mac Intosh (via une version de Mono pour Mac)



6.4.4 - L'aide et la Documentation

C'est peut-être là que le bat blesse.

Actuellement F1 n'est pas implémenté, mais devrait être ajouté par la suite

La documentation est proposée sous forme de Page Wikipedia :

prismwiki



Notez que

  • il est recommandé de télécharger régulièrement les mises à jour, la version initiale (4 Meg) étant constamment enrichie (12 Meg pour notre téléchargement Février 2009)
  • ATTENTION, il existe aussi Delphi Prism qui est un Wiki sans le soutien de Codegear, et plutôt creux
  • pour avoir une vision plus épurée et hiérarchique de ce Wiki, nous avons créé un outil qui présente les fichiers .HTML avec un accès par TreeView:

    prism_wiki_viewer



Ce qui manque le plus est l'aide .Net. Pour Delphi 2006 et 2007, Codegear avait licencié l'aide Microsoft. Même si les exemples sont en C#, c'était une source inestimable pour explorer la librairie (les Classes, leurs relations, les propriétés, événements et méthodes) et pour les exemples très nombreux. Sans ce type de document, comment donc deviner que pour ouvrir un dialogue il faut utiliser "ShowDialog" et pas "ShowModal" ?

La page "téléchargement recommandé" de Delphi Prism suggère de télécharger le Visual Studio SDK (136 Megs, 6 heures à 61 Kbd)

Pour le moment, nous utilisons l'aide Microsoft fournie avec Delphi 2007.



La situation n'est pas sans espoir:

  • pour ceux qui ont Delphi 2006 ou 2007, utiliser l'aide Microsoft
  • télécharger le Sdk Microsoft
  • utiliser l' Object Browser ("View | Object Browser", alias "Alt Ctrl J"):

    dot_net_object_browser

  • user et abuser du "code completion". Un de nos clients m'a récemment montré une technique à laquelle je n'avais pas pensé: pour visualiser les méthodes et propriétés d'une Forme, tapez "Self." (Self et un point).
  • finalement, F1 devrait arriver
  • utiliser les newsgroups Delphi PRISM.

    Nous avons utilisé nos aspirateur Internet (déjà publiés en source) pour avoir une copie locale ayant un moteur de recherche avec AND, OR, NOT, parenthèses etc. Mais naturellement la version en ligne est aussi utilisable

  • faire appel à MSDN (le site d'information développeur Microsoft), les sites .Net (comme Code Project), ou, plus généralement Google.


6.5 - La Roadmap Prism

Nick HODGES a publié une Roadmap PRISM qui a été traduite en Français par Thierry LABORDE. Cette feuille de route indique que:
  • l'intégration d'accès aux bases de données va s'étoffer. En particulier
    • la possibilité de créer des serveurs DataSnap
    • l'utilisation de l'"Entity Framework" qui semble le remplaçant de LINQ
  • l'intégration de Nunit, l'environnement de test unitaire


6.6 - Notre recommandation

En conclusion
  • Delphi PRISM nous permet de "recoller" aux nouveautés Microsoft
  • les personnes ayant déjà utilisé une version Delphi .Net seront rapidement opérationnels, ayant uniquement à se familiariser avec Visual Studio.
  • en revanche débuter dans le monde .Net en utilisant Delphi PRISM ne sera pas évident compte tenu de la documentation actuelle. Naturellement des articles sur Developpez ou ailleurs - :) -vous aideront à découvrir ce monde nouveau
Et compte tenu de la position privilégiée de Delphi PRISM (syntaxe Delphi PASCAL avec accès au monde .Net), nous avons déjà organisé des Formations Delphi PRISM




7 - Télécharger le code source Delphi

Vous pouvez télécharger les (petits) projets présentés dans cet article: Ce .ZIP qui comprend:
  • le .DPR, la forme principale, les formes annexes eventuelles
  • les fichiers de paramètres (le schéma et le batch de création)
  • dans chaque .ZIP, toutes les librairies nécessaires à chaque projet (chaque .ZIP est autonome)
Ces .ZIP, pour les projets en Delphi 6, contiennent des chemins RELATIFS. Par conséquent:
  • créez un répertoire n'importe où sur votre machine
  • placez le .ZIP dans ce répertoire
  • dézippez et les sous-répertoires nécessaires seront créés
  • compilez et exécutez
Ces .ZIP ne modifient pas votre PC (pas de changement de la Base de Registre, de DLL ou autre). Pour supprimer le projet, effacez le répertoire.

La notation utilisée est la notation alsacienne qui consiste à préfixer les identificateurs par la zone de compilation: K_onstant, T_ype, G_lobal, L_ocal, P_arametre, F_unction, C_lasse. Elle est présentée plus en détail dans l'article La Notation Alsacienne



Comme d'habitude:

  • nous vous remercions de nous signaler toute erreur, inexactitude ou problème de téléchargement en envoyant un e-mail à jcolibri@jcolibri.com. Les corrections qui en résulteront pourront aider les prochains lecteurs
  • tous vos commentaires, remarques, questions, critiques, suggestion d'article, ou mentions d'autres sources sur le même sujet seront de même les bienvenus à jcolibri@jcolibri.com.
  • plus simplement, vous pouvez taper (anonymement ou en fournissant votre e-mail pour une réponse) vos commentaires ci-dessus et nous les envoyer en cliquant "envoyer" :
    Nom :
    E-mail :
    Commentaires * :
     

  • et si vous avez apprécié cet article, faites connaître notre site, ajoutez un lien dans vos listes de liens ou citez-nous dans vos blogs ou réponses sur les messageries. C'est très simple: plus nous aurons de visiteurs et de références Google, plus nous écrirons d'articles.



8 - Liens et Références

Quelques liens utiles:
  • le   Visual Studio Shell : l'IDE générique Microsoft

  • les pages MSDN, comme, par exemple:
  • le   PrismWiki

  • Les newsgroups Delphi PRISM   accessibles par https://forums.codegear.com/category.jspa?categoryID=51 sont les suivants:
    embarcadero.public.delphiprism.aspnet.webservices
    embarcadero.public.delphiprism.compactframework
    embarcadero.public.delphiprism.language
    embarcadero.public.delphiprism.mono.linux
    embarcadero.public.delphiprism.mono.osx
    embarcadero.public.delphiprism.non-technical
    embarcadero.public.delphiprism.silverlight
    embarcadero.public.delphiprism.thirdpartytools
    embarcadero.public.delphiprism.winforms
    embarcadero.public.delphiprism.wpf

  • La Roadmap PRISM se trouve à Prism Roadmap, avec une traduction française sur le site de Logix

  • Nous proposons aussi des Formations Delphi PRISM dont le programme détaillé se trouve sur notre site.



9 - L'auteur

John COLIBRI est passionné par le développement Delphi et les applications de Bases de Données. Il a écrit de nombreux livres et articles, et partage son temps entre le développement de projets (nouveaux projets, maintenance, audit, migration BDE, migration Xe_n, refactoring) pour ses clients, le conseil (composants, architecture, test) et la formation. Son site contient des articles avec code source, ainsi que le programme et le calendrier des stages de formation Delphi, base de données, programmation objet, Services Web, Tcp/Ip et UML qu'il anime personellement tous les mois, à Paris, en province ou sur site client.
Créé: feb-09. Maj: aou-15  148 articles, 471 sources .ZIP, 2.021 figures
Contact : John COLIBRI - Tel: 01.42.83.69.36 / 06.87.88.23.91 - email:jcolibri@jcolibri.com
Copyright © J.Colibri   http://www.jcolibri.com - 2001 - 2015
Retour:  Home  Articles  Formations  Développement Delphi  Livres  Pascalissime  Liens  Download
l'Institut Pascal

John COLIBRI

+ Home
  + articles_avec_sources
    + bases_de_donnees
    + web_internet_sockets
    + prog_objet_composants
    + office_com_automation
    + colibri_utilities
    + uml_design_patterns
    + graphique
    + delphi
      – delphi_8_vcl_net
      – d8_windows_forms
      – turbo_delphi
      – les_versions_delphi
      – roadmap_delphi_6/7
      – ide_delphi_2006
      – rad_studio_2007
      – roadmap_delphi_4/8
      – raccourcis_clavier
      – delphi_prism
      – roadmap_delphi_8/10
      – demos_sur_sourceforge
      – delphi_xe
      – migration_unicode
      – delphi_xe2
      – delphi_xe2_tour
      – roadmap_2011
      – maj_delphi_xe2_1
      – delphi_xe3_lancement
      – delphi_xe3_et_apres
      – delphi_xe3_infos
      – delphi_xe3_recap
      – roadmap_mobile_studio
      – delphi_xe4_ios
      – delphi_xe4_android
      – roadmap_delphi_2014
      – rachat_embarcadero
    + outils
    + firemonkey
    + vcl_rtl
    + colibri_helpers
    + colibri_skelettons
  + formations
  + developpement_delphi
  + présentations
  + pascalissime
  + livres
  + entre_nous
  – télécharger

contacts
plan_du_site
– chercher :

RSS feed  
Blog

Audit Delphi Bilan technique (technologie, méthodes, architecture, organisation, techologie et version, formation, gestion de projet) et recommandations - Tél 01.42.83.69.36
Formation Bases de Données Interbase / Firebird Gestion de bases de données : les composants Ibx, connexion, accès aux tables, édition d'états - 3 jours
Formation Rave Report Constructions d'états, avec prévisualisation, génération .HTML ou .PDF - 2 jours