TP Commercial, version WinForm

Pré-requis :

Il faut disposer de l'application "Commerciaux" fonctionnant et produisant un fichier sérialisé.

1) Préparation de l'application.

Rappel : lorsque l'on crée une application VS, l'environnement crée une solution et un projet, c'est dans le projet que l'on écrit le code et qui contient la méthode Main ; une solution peut contenir plusieurs projets.

Ouvrons la solution/projet contennant l'application Commerciaux"

A partir de l'explorateur de solution, ajoutons (click droit) un nouveau projet (WF_Commerciaux) de type Application Windows ; la configuration devient :

En cliquant (click droit) sur ce nouveau projet, indiquer que ce projet est le projet de demarrage.
Par ailleurs dans chaque formulaire créé, il faudra ajouter l'inclusion du namespace "commerciaux" (si c'est le nom du namespace de votre projet console).
               using Commerciaux;

Il faut aussi indiquer que chaque classe du projet console est public. Ajouter pour chaque classe :
public class Commercial //
pour la classe Commercial

En effet, par défaut chaque classe d'un namespace n'est visible qu'à l'intérieur du namespace.

2) L'application WinForm

Cette application contient plusieurs formulaires. L'application (les fichiers exécutables et le fichier de données sérialisé) est diponible ici.
Après avoir télécharger le fichier zip, il faut décompresser l'ensemble et lancer l'application WF_Commerciaux.exe.
L'application commence par ouvrir le fichier de données : Fichier/ouvrir le fichier service.sr.

Travail à faire
Tester et observer l'application.

2.1- Le formulaire principal

Il permet de sélectionner les deux options du menu Fichier et d'accéder au menu Commercial.

Travail à faire
Construire ce formulaire en ajoutant un composant de type MenuStrip ; remplir le menu avec ses options.

Ce formulaire est le formulaire principal et contient les autres ; ceci est possible grâce au mécanisme de fenêtre MDI ; dans la fenêtre de propriété du formulaire indiquer que ce formulaire est un conteneur MDI :

L'option Ouvrir lance une boite de dialogue allant chercher un fichier; c'est l'objet OpenFileDialog qui s'en chargera; ce n'est pas un composant graphique mais ses services pourront être utilisés dans le code.

Travail à faire

- Déposer un objet OpenFileDialog dans le formulaire
- Ajouter deux champs privés dans le formulaire

- Dans l'événement click du menu fichier/ouvrir, écrire le code qui :
                         1) ouvre la boite de dialogue,
                         2) récupère le fichier sélectionné par l'utilisateur,
                         3) appelle la méthode qui charge le ServiceCommercial à partir du fichier.
- Dans l'événement click du menu fichier/enregistrer, écrire le code qui permet de sauvegarder le ServiceCommercial dans le fichier.

Les options du menu Commercial ouvre chacune un formulaire différent. C'est l'événement click de chaque sous-menu qui appellera le nouveau formulaire.

Chaque formulaire a besoin du ServiceCommercial récupéré dans le formulaire principal ; le formulaire principal passera cet objet à la construction :


La première ligne crée un nouveau formulaire (d'ajout d'un commercial)
La seconde ligne indique que son formulaire parent est le formulaire courant.
La troisième ligne montre le formulaire.

Ceci ne peut se faire bien sûr que si un formulaire nommé ici FrmAjoutCommercial a été créé en conception et que son constructeur a été modifié. Chaque classe formulaire contiendra un champ privé de type ServiceCommercial.

Travail à faire
Effectuer cette opération pour les trois formulaires, dans un premier temps chaque formulaire créé ne contiendra rien.

Tester et vérifier que chaque formulaire s'ouvre bien à partir des menus.

             2.2- Le formulaire d'ajout d'un commercial

Celui-ci contient différentes contrôles :

La première chose à faire après le dépot des composants sur le formulaire est de modifier la propriété Name, en respectant les règles suivantes :

Composant
Préfixe
Exemple
Formulaire Frm FrmAjoutCommercial
Button btn btnValider
TextBox txt txtNom
Label lbl lblNom
ListBox lst lstPuissance
GroupBox grBox grBoxCategorie
RadioButton rdBtn rdBtnCategorie
CheckBox chk chkVille
DateTimerPicker dtp dtpDate
ComboBox cbm cbmNom

Il n'est pas nécessaire de renommer les composants qui ne seront jamais utilisés dans le code comme c'est souvent le cas des Label.

Le chargement des valeurs "en dur" dans la ListeBox se fait à l'ouverture du formulaire (événement Load) en utilisant la méthode Add de la propriété Items.
Le bouton valider teste le RadioButton "checké", crée un nouveau commercial et l'ajoute au service commercial.

Travail à faire
Construire le formulaire. Tester que le nouveau commercial est bien enregistré dans le fichier sérialisé.

2.3- Le formulaire d'ajout de notes de frais

La liste des commerciaux est remplie à partir de tous les commerciaux du service commercial (méthode Add, cf plus haut).

La sélection d'un radioButton fait apparaître les champs nécessaires à la saisie de la note de frais concernée (cf démo)

Le bouton valider ajoute au commercial sélectionné la note de frais (Transport, midi ou nuité) correspondante. Pour récupérer le commercial, il faudra extraire le nom et le prénom à partir de la sélection de la liste (SelectedItem) en utilisant la méthode split de la chaîne.

Travail à faire
Construire le formulaire. Imaginer un test pour vérifier que la note de frais a bien été ajoutée au bon commercial.

2.4- Le formulaire de visualisation des notes de frais

La gestion de la liste des commerciaux est identique au formulaire précédent.
Lorsque l'on clique sur un commercial, ses notes apparaîssent (événement selectedIndexChanged) . Il faudra utiliser la méthode ToString écrite dans l'application console.

Travail à faire
Construire le formulaire. Tester.