|
|
|||||||||||
|
La conception de formulaire dans Visual Studio 2003
repose sur la notion de composant et de contrôle. L'utilisation d'un composant s'avère généralement plus productive que l'instanciation manuelle de classe par codage. Un contrôle est un composant visuel. Sa classe de base est Control, qui hérite de Component. Il se manipule selon le même principe qu'un composant, mais est représenté visuellement sur le formulaire. Sa taille et sa position peuvent être modifiées. La copie d'écran ci-dessous montre un formulaire en mode conception, avec un contrôle nommé colorControl1 sur la surface de travail, et deux composants mainMenu1 et formManager1 dans la zone du bas. Dans la suite de cet article, nous présenterons la réalisation du composant FormManager et du contrôle ColorControl.
Visual Studio instancie le composant ou le contrôle pour permettre sa manipulation dans l'EDI. Les composants pour le Compact Framework doivent donc être déclinés en deux versions, l'une pour le Compact Framework sous Windows CE et l'autre pour Visual Studio sous Windows. Chaque version correspond à un assemblage distinct : l'assemblage d'exécution pour le Compact Framework, et l'assemblage de conception (ou design) pour Visual Studio. Plusieurs articles disponibles sur Internet (dont l'article de Laurent Docquir sur CodePPC Développer des contrôles mobiles pour Visual Studio .NET 2003 et CF) exposent des procédures pour créer ces deux assemblages à partir du même code source. Ces procédures s'avèrent relativement délicates, car par défaut Visual Studio ne sait pas partager du code entre deux projets, mais le duplique. Il faut donc mettre en oeuvre des palliatifs, qui vont du fichier .bat de compilation au regroupement manuel de projets dans un même dossier, en passant par l'utilisation du partage de fichier dans Visual Source Safe. La réalisation d'un assemblage de conception n'est pas possible avec Visual Basic .NET, et doit être effectuée en C#. Le compilateur Visual Basic .NET ne supporte pas en effet les références simultanées sur les assemblages System.Windows.Forms et System.CF.Windows.Forms qui définissent des classes de même nom dans un même espace de noms. Ceci impose pratiquement C# comme langage de développement de composants pour Visual Studio...
Pour les besoins de mon ouvrage Le guide de la programmation
.NET pour la mobilité (éditions ESKA-SYBEX), j'ai réalisé
un assistant pour Visual Studio - ou wizard - qui produit une solution
composée de deux projets C# partageant les mêmes fichiers
source dans le même dossier. Le premier projet correspond à
l'assemblage d'exécution, l'autre à l'assemblage de conception.
L'assistant génère également le support d'une directive
de compilation DESIGN pour distinguer le code spécifique au mode
conception, les procédures d'installation des assemblages dans
Visual Studio et les déclarations d'attribut adéquates.
Cet assistant s'appelle odewit.Wizard. Il est distribué sous la
forme d'un freeware, disponible sur le site www.odewit.net.
Pour installer l'assistant, décompactez sur votre
disque local le fichier odewit.Wizard.zip. Copiez le fichier odewit.Wizard.dll dans C:\Program
Files\Microsoft Visual Studio .NET 2003\Common7\IDE (ou le dossier
équivalent pour une installation non-standard). Placez-vous sur la ligne de commande de Visual Studio,
par le menu Démarrer - Programmes - Microsoft Visual Studio
.NET 2003 - Outils Visual Studio .NET - Visual Studio .NET 2003 Command
Prompt. Positionnez-vous dans le dossier C:\Program Files\Microsoft
Visual Studio .NET 2003\Common7\IDE et saisissez le commande suivante
: regasm odewit.Wizard.dll Effectuez une copie de sauvegarde de votre dossier C:\Program
Files\Microsoft Visual Studio .NET 2003\VC#. Copiez le dossier VC# depuis le dossier odewit.Wizard
vers le répertoire d'installation de Visual Studio.NET 2003 (C:\Program
Files\Microsoft Visual Studio .NET 2003). Il contient des dossiers
qui existent déjà, mais la copie n'écrase aucun fichier.
Lors de la demande de confirmation de remplacement de dossier, choisissez
"Tous".
Après avoir installé l'assistant, créez un nouveau projet de type Bibliothèque de composants Smart Device. Nommez-le par exemple odewit.Tools. Visual Studio génère une nouvelle solution, comportant dans le même dossier deux projets : odewit.Tools pour l'exécution sous le Compact Framework, et odewit.Tools.Design pour le mode conception sous Visual Studio.
La directive de compilation conditionnelle DESIGN est active dans le projet odewit.Tools.Design, mais pas dans odewit.Tools.
Pour créer un composant non-visuel, ajoutez dans le projet odewit.Tools un élément de type Composant bi-mode, nommé FormManager (par exemple). Ce type d'élément est spécifique à notre assistant. La classe générée hérite de Component. En mode conception, elle est paramétrée par des attributs ToolBoxItemFilterAttribute, requis pour l'affichage des composants dans la boîte à outils : #if DESIGN Ajoutez le composant au projet odewit.Tools.Design, et enrichissez son code.
Dans le projet odewit.Tools, ajoutez une référence sur les assemblages System.Windows.Forms.dll et System.Drawing.dll Pour créer un contrôle visuel, ajoutez dans le projet odewit.Tools un élément de type Classe, nommé ColorControl (par exemple). Cette classe doit être modifiée pour hériter de Control et implémenter sa logique. using System; namespace odewit.Tools Ajoutez la classe ColorControl au
projet odewit.Tools.Design.
Modifiez manuellement l'espace de noms par défaut dans les propriétés du projet de conception (odewit.Tools.Design) en lui assignant la valeur odewit.Tools. Une bitmap 16 couleurs de dimensions 16x16 portant le nom du composant (par exemple FormManager.bmp pour le composant FormManager) peut être ajoutée au projet contenant le code du composant. Elle est automatiquement prise en compte par la boîte à outils pour le représenter. Sa propriété Action de génération doit être basculée à la valeur Ressource incorporée. Ajoutez ainsi au projet odewit.Tools.Design les bitmaps FormManager.bmp et ColorControl.bmp.
L'association entre le contrôle connu par Visual Studio et le contrôle à déployer pour l'exécution se fait dans le fichier AssemblyInfo.cs par l'attribut RuntimeAssemblyAttribute, nécessaire en mode conception. Le constructeur de cet attribut prend en argument le nom qualifié de l'assemblage pour l'exécution, composé du nom du fichier sans l'extension .dll, de sa version, de sa culture, et de sa clé publique. Ce code a été généré par notre assistant. La version spécifiée dans
l'attribut RuntimeAssemblyAttribute doit correspondre exactement
à celle spécifiée dans l'attribut AssemblyVersionAttribute.
La notation 1.0.*, qui signifie que les numéros de build et de
révision sont incrémentés automatiquement, ne doit
pas être utilisée. Il est donc nécessaire d'incrémenter
manuellement les numéros de version, tels que 1.0.1.2. Générez la solution, puis exécutez la procédure de mise à jour des dossiers de déploiement et de conception, à l'aide des fichiers de commande générés dans le répertoire des sources par notre assistant :
La copie échoue si une instance de Visual Studio utilise déjà le composant FormManager ou le contrôle ColorControl. Ajoutez les composants de odewit.Tools.Design
à la boîte à outils, depuis le chemin des assemblages
de conception (par défaut C:\Program Files\Microsoft Visual
Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\Designer). Le composant FormManager et le contrôle ColorControl apparaissent alors dans la boîte à outils, et peuvent être utilisés dans des formulaires.
|
|||||||||||
|
Copyright 2001-2004 - Tous droits réservés Toutes les autres marques et produits présents dans ces pages sont la propriété exclusive de leurs sociétés respectives. |