Manipulation des principaux composants avec les WinForms ...garriciut.free.fr/WEBAAINFO_0910/Doc/doc...

103
, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 1/103 1 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I. Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03 Manipulation des principaux composants avec les WinForms (C++.Net sous Visual Studio 2005) PREAMBULE- LES CONVENTIONS DE NOMMAGE DES COMPOSANTS........... 5 1- LES COMPOSANTS CONTENEURS ET DE MISE EN PAGE ................................ 6 1.1- LE COMPOSANT FORM ...........................................................................................................................6 1.1.1- CONFIGURATION DUN FORMULAIRE ............................................................................................................ 6 1.1.2- CREATION DUN FORMULAIRE (FORMULAIRE MODAL, NON MODAL, MESSAGEBOX, APPLICATION MDI)...8 1.2- LE COMPOSANT PANEL ........................................................................................................................14 1.2.1- UN PANEL POUR HABILLER LE FORMULAIRE ............................................................................................... 14 1.2.2- UN PANEL POUR CONTENIR ET MANIPULER DES COMPOSANTS (PROPRIETE CONTROLS) ........................... 14 1.3- LE COMPOSANT GROUPBOX ..............................................................................................................17 1.3.1- UN GROUPBOX POUR HABILLER LE FORMULAIRE ....................................................................................... 17 1.3.2- UN GROUPBOX POUR CONTENIR ET MANIPULER DES COMPOSANTS (AVEC RADIOBUTTON) ...................... 18 1.4- LE COMPOSANT TABCONTROL .........................................................................................................19 1.4.1- UN TABCONTROL POUR ORGANISER VISUELLEMENT LES INFORMATIONS .................................................. 19 1.4.2- UN TABCONTROL POUR SELECTIONNER DIFFERENTES PAGES ..................................................................... 20 1.5- LE COMPOSANT SPLITCONTAINER .................................................................................................23 1.5.1- UN SPLITCONTAINER POUR ORGANISER VISUELLEMENT LES INFORMATIONS............................................. 23 2- LES COMPOSANTS D’EDITION ET DE SAISIE DE TEXTE ............................... 25 2.1- LE COMPOSANT LABEL........................................................................................................................25 2.1.1- UN LABEL POUR DONNER DES INFORMATIONS ............................................................................................ 25 2.2- LE COMPOSANT TEXTBOX..................................................................................................................26 2.2.1- L’APPARENCE DUNE TEXTBOX .................................................................................................................. 26 2.2.2- LE FONCTIONNEMENT DUNE TEXTBOX (CONVERSION NUMERIQUES) ....................................................... 27 2.3- LE COMPOSANT MASKEDTEXTBOX ................................................................................................29 2.3.1- L’APPARENCE DUN MASKEDTEXTBOX....................................................................................................... 29

Transcript of Manipulation des principaux composants avec les WinForms ...garriciut.free.fr/WEBAAINFO_0910/Doc/doc...

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 1/103

1 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Manipulation des principaux composants avec

les WinForms

(C++.Net sous Visual Studio 2005)

PREAMBULE- LES CONVENTIONS DE NOMMAGE DES COMPOSANTS...........5

1- LES COMPOSANTS CONTENEURS ET DE MISE EN PAGE................................6

1.1- LE COMPOSANT FORM...........................................................................................................................6 1.1.1- CONFIGURATION D’UN FORMULAIRE ............................................................................................................6 1.1.2- CREATION D’UN FORMULAIRE (FORMULAIRE MODAL, NON MODAL, MESSAGEBOX, APPLICATION MDI)...8

1.2- LE COMPOSANT PANEL........................................................................................................................14 1.2.1- UN PANEL POUR HABILLER LE FORMULAIRE ...............................................................................................14 1.2.2- UN PANEL POUR CONTENIR ET MANIPULER DES COMPOSANTS (PROPRIETE CONTROLS) ...........................14

1.3- LE COMPOSANT GROUPBOX ..............................................................................................................17 1.3.1- UN GROUPBOX POUR HABILLER LE FORMULAIRE .......................................................................................17 1.3.2- UN GROUPBOX POUR CONTENIR ET MANIPULER DES COMPOSANTS (AVEC RADIOBUTTON)......................18

1.4- LE COMPOSANT TABCONTROL.........................................................................................................19 1.4.1- UN TABCONTROL POUR ORGANISER VISUELLEMENT LES INFORMATIONS ..................................................19 1.4.2- UN TABCONTROL POUR SELECTIONNER DIFFERENTES PAGES .....................................................................20

1.5- LE COMPOSANT SPLITCONTAINER .................................................................................................23 1.5.1- UN SPLITCONTAINER POUR ORGANISER VISUELLEMENT LES INFORMATIONS.............................................23

2- LES COMPOSANTS D’EDITION ET DE SAISIE DE TEXTE...............................25

2.1- LE COMPOSANT LABEL........................................................................................................................25 2.1.1- UN LABEL POUR DONNER DES INFORMATIONS............................................................................................25

2.2- LE COMPOSANT TEXTBOX..................................................................................................................26 2.2.1- L’APPARENCE D’UNE TEXTBOX ..................................................................................................................26 2.2.2- LE FONCTIONNEMENT D’UNE TEXTBOX (CONVERSION NUMERIQUES) .......................................................27

2.3- LE COMPOSANT MASKEDTEXTBOX ................................................................................................29 2.3.1- L’APPARENCE D’UN MASKEDTEXTBOX.......................................................................................................29

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 2/103

2 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.4- LE COMPOSANT RICHTEXTBOX .......................................................................................................30 2.4.1- L’APPARENCE D’UN RICHTEXTBOX.............................................................................................................30 2.4.2- LE FONCTIONNEMENT D’UN RICHTEXTBOX ................................................................................................31

2.5- LE COMPOSANT NUMERICUPDOWN................................................................................................33 2.5.1- L’APPARENCE D’UN NUMERICUPDOWN ......................................................................................................33 2.5.2- LE FONCTIONNEMENT D’UN NUMERICUPDOWN ..........................................................................................33

3- LES COMPOSANTS DE SAISIE D’OPTIONS..........................................................34

3.1- LE COMPOSANT CHECKBOX..............................................................................................................34 3.1.1- L’APPARENCE D’UN CHECKBOX..................................................................................................................34 3.1.2- LE FONCTIONNEMENT DE CHECKBOX .........................................................................................................35

3.2- LE COMPOSANT CHECKEDLISTBOX ...............................................................................................36 3.2.1- L’APPARENCE D’UN CHECKEDLISTBOX.......................................................................................................36 3.2.2- LE FONCTIONNEMENT D’UN CHECKEDLISTBOX ..........................................................................................36

3.3- LE COMPOSANT COMBOBOX.............................................................................................................38 3.3.1- L’APPARENCE D’UNE COMBOBOX ...............................................................................................................38 3.3.2- LE FONCTIONNEMENT D’UNE COMBOBOX ..................................................................................................39

3.4- LE COMPOSANT LISTBOX ...................................................................................................................41 3.4.1- L’APPARENCE D’UNE LISTBOX ....................................................................................................................41 3.4.2- LE FONCTIONNEMENT D’UNE LISTBOX........................................................................................................41

3.5- LE COMPOSANT RADIOBUTTON.......................................................................................................43 3.5.1- L’APPARENCE D’UN RADIOBUTTON ............................................................................................................43 3.5.2- LE FONCTIONNEMENT DE RADIOBUTTON ....................................................................................................44

4- LES COMPOSANTS DE CHOIX D’ACTIONS SUR L’INTERFACE ...................45

4.1- LE COMPOSANT BUTTON ....................................................................................................................45 4.1.1- L’APPARENCE D’UN BUTTON.......................................................................................................................45 4.1.2- LE FONCTIONNEMENT D’UN BUTTON ..........................................................................................................46

4.2- LE COMPOSANT MENUSTRIP .............................................................................................................47 4.2.1- LA CONFIGURATION D’UN MENUSTRIP ........................................................................................................47 4.2.2- LE FONCTIONNEMENT D’UN MENUSTRIP.....................................................................................................49

4.3- LE COMPOSANT CONTEXTMENUSTRIP..........................................................................................52 4.3.1- LA CONFIGURATION D’UN CONTEXTMENUSTRIP.........................................................................................52 4.3.2- LE FONCTIONNEMENT D’UN CONTEXTMENUSTRIP......................................................................................53

4.4- LE COMPOSANT TOOLSTRIP..............................................................................................................55 4.4.1- LA CONFIGURATION D’UN TOOLSTRIP .........................................................................................................55 4.4.2- LES DIFFERENTS ELEMENTS D’UN TOOLSTRIP.............................................................................................56

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 3/103

3 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

5- LES COMPOSANTS D’AFFICHAGE D’INFORMATIONS D’ETAT, D’AIDE...63

5.1- LE COMPOSANT TOOLTIP...................................................................................................................63 5.1.1- L’UTILISATION D’UN TOOLTIP .....................................................................................................................63

5.2- LE COMPOSANT PROGRESSBAR .......................................................................................................64 5.2.1- LA CONFIGURATION ET L’UTILISATION D’UNE PROGRESSBAR ....................................................................64

5.3- LE COMPOSANT STATUSSTRIP..........................................................................................................65 5.3.1- LA CONFIGURATION D’UN STATUSSTRIP .....................................................................................................65 5.3.2- LES COMPOSANTS D’UN STATUSSTRIP ........................................................................................................66

5.4- LE COMPOSANT NOTIFYICON ...........................................................................................................68 5.4.1- LA CONFIGURATION D’UN NOTIFYICON ......................................................................................................68 5.4.2- L’UTILISATION D’UN NOTIFYICON...............................................................................................................68

6- LES COMPOSANTS BOITES DE DIALOGUE ........................................................70

6.1- LE COMPOSANT FOLDERBROWSERDIALOG................................................................................70 6.1.1- LA CONFIGURATION ET L’UTILISATION D’UNE FOLDERBROWSERDIALOG.................................................70

6.2- LE COMPOSANT OPENFILEDIALOG.................................................................................................71 6.2.1- LA CONFIGURATION ET L’UTILISATION D’UNE OPENFILEDIALOG (LECTURE MUSIQUE).......................71

6.3- LE COMPOSANT SAVEFILEDIALOG.................................................................................................73 6.3.1- LA CONFIGURATION ET L’UTILISATION D’UNE SAVEFILEDIALOG..............................................................73

6.4- LE COMPOSANT PRINTDIALOG.........................................................................................................78 6.4.1- LA CONFIGURATION ET L’UTILISATION D’UNE PRINTDIALOG .....................................................................78

6.5- LE COMPOSANT COLORDIALOG ......................................................................................................80 6.5.1- LA CONFIGURATION ET L’UTILISATION D’UN COLORDIALOG ....................................................................80

6.6- LE COMPOSANT FONTDIALOG..........................................................................................................81 6.6.1- LA CONFIGURATION ET L’UTILISATION D’UNE FONTDIALOG ......................................................................81

7- LES COMPOSANTS DE MANIPULATION DE DATES.........................................82

7.1- LE COMPOSANT DATETIMEPICKER................................................................................................82 7.1.1- LA CONFIGURATION D’UN DATETIMEPICKER ..............................................................................................82 7.1.2- L’UTILISATION D’UN DATETIMEPICKER ......................................................................................................82

7.2- LE COMPOSANT MONTHCALENDAR...............................................................................................84 7.2.1- LA CONFIGURATION D’UN MONTHCALENDAR.............................................................................................84 7.2.2- L’UTILISATION D’UN MONTHCALENDAR .....................................................................................................85

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 4/103

4 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

8- LES COMPOSANTS D’AFFICHAGES STRUCTURES ..........................................86

8.1- LE COMPOSANT LISTVIEW.................................................................................................................86 8.1.1- LA CONFIGURATION D’UNE LISTVIEW .........................................................................................................86 8.1.2- L’UTILISATION D’UNE LISTVIEW .................................................................................................................88

8.2- LE COMPOSANT TREEVIEW ...............................................................................................................92 8.2.1- LA CONFIGURATION D’UN TREEVIEW..........................................................................................................92 8.2.2- L’UTILISATION D’UN TREEVIEW..................................................................................................................93

9- LES COMPOSANTS DE MANIPULATION D’IMAGES ........................................97

9.1- LE COMPOSANT PICTUREBOX...........................................................................................................97 9.1.1- LA CONFIGURATION D’UNE PICTUREBOX ...................................................................................................97

9.2- LE COMPOSANT IMAGELIST ..............................................................................................................98 9.2.1- L’UTILISATION D’UNE IMAGELIST ...............................................................................................................98

10- LES COMPOSANTS DE MANIPULATION DES PAGES WEB ..........................99

10.1- LE COMPOSANT LINKLABEL ...........................................................................................................99 10.1.1- L’ASPECT D’UN LINKLABEL.....................................................................................................................99 10.1.2- L’UTILISATION D’UN LINKLABEL.............................................................................................................99

10.2- LE COMPOSANT WEBBROWSER ...................................................................................................100 10.2.1- LA CONFIGURATION D’UN WEBBROWSER..............................................................................................100 10.2.2- LA NAVIGATION AVEC UN WEBBROWSER ..............................................................................................100

11- DES COMPOSANTS NON VISUELS .....................................................................103

11.1- LE COMPOSANT TIMER....................................................................................................................103 11.1.1- LA CONFIGURATION D’UN TIMER...........................................................................................................103 11.1.2- L’UTILISATION D’UN TIMER...................................................................................................................103

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 5/103

5 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Préambule- Les conventions de nommage des composants

COMPOSANT PREFIXE

Button btn CheckBox chk CheckListBox chkl ColorDialog cld ComboBox cb ContextMenuStrip cmn DateTimePicker dtp FolderBrowserDialog fbd FontDialog ftd Form frm GroupBox grb ImageList iml Label lbl LinkLabel lklbl ListBox lst ListView lsv MaskedTextBox mtxt MenuStrip mn MonthCalendar mc NotifyIcon nti NumericUpDown nud OpenFileDialog ofd Panel pnl PictureBox pic PrintDialog prd ProgressBar pgb RadioButton rbtn RichTextBox rtxt SaveFileDialog sfd SplitContainer spc StatusStrip sts TabControl tbc TabPage tbp TextBox txt Timer tim ToolStrip too ToolTip totp TreeView trv WebBrowser wwb

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 6/103

6 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1- Les composants conteneurs et de mise en page

1.1- Le composant FORM

La classe Form est un formulaire, c’est-à-dire soit une fenêtre, soit une boîte de dialogue. Les différents contrôles se placent sur les Forms. Les formulaires possèdent par défaut les attributs d’une fenêtre en haut : barre de titre, icône à gauche, boutons Réduire, Diminuer et Fermer à droite. Le bouton Fermer permet de fermer la Form et, donc, l’application. Les propriétés des formulaires permettent de modifier leur apparence et leur comportement.

� MEMBRES DE LA CLASSE FORM de l’espace de noms System::Windows::Forms :

http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemwindowsformsformmemberstopic.asp

Comment faire ? � Accès à une Form :

− Explorateur de solutions, Fichiers d’en-tête, double cliquer sur Form1.h ; − Cliquer sur l’onglet Form1.h [Design] du concepteur de code.

� Accès au code d’une Form : − Double cliquer sur la Form en mode Design pour ouvrir le concepteur de code.

1.1.1- Configuration d’un formulaire

Comment changer la taille et la position d’un formulaire ?

� Propriétés :

− Size (Width et Height) : dimensions du formulaire. − Location (X et Y) : coordonnées du coin supérieur gauche du formulaire. − StartPosition : position initiale du formulaire au moment de l'exécution.

Valeurs possibles : CenterParent formulaire centré dans les limites de son formulaire parent. CenterScreen formulaire centré avec les dimensions spécifiées dans Size. Manual position du formulaire déterminée par Location. WindowsDefaultBounds formulaire situé à l'emplacement et avec les limites par défaut de

Windows. WindowsDefaultLocation formulaire situé à l'emplacement par défaut de Windows avec

les dimensions spécifiées dans Size. � Méthodes :

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 7/103

7 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− Scale(float) : Dimensionne le formulaire et ses contrôles enfants éventuels au taux spécifié.

Comment changer l’aspect d’un formulaire ?

� Propriétés : − FormBorderStyle : Style de la bordure du formulaire.

Valeurs possibles : Fixed3D Bordure tridimensionnelle fixe. FixedDialog Bordure épaisse et fixe. FixedSingle Bordure fixe d'une ligne. FixedToolWindow Bordure non redimensionnable. Barre de titre réduite. None Aucune bordure. Sizable Bordure redimensionnable. SizableToolWindow Bordure de fenêtre redimensionnable. Barre de titre réduite.

− Icon et ShowIcon : icône du formulaire dans la barre de titre et dans la barre de tâche

(quand le formulaire est minimisé). − Text : titre dans la barre de titre. − Font : police du texte affiché par le contrôle. − Cursor : curseur qui est affiché lorsque le pointeur de la souris se trouve sur le

formulaire. − MainMenuStrip : menu associé au formulaire. − ContextMenuStrip : menu contextuel (obtenu par un clic droit) associé au formulaire. − WindowState (Maximized, Minimized ou Normal) : état de la fenêtre du formulaire. − Opacity : pourcentage d'opacité du formulaire. − BackgroundImage : image d'arrière-plan affichée dans le formulaire. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée dans le

formulaire. Valeurs possibles : Center L'image est centrée dans le formulaire. None L'image est alignée à gauche en haut dans le formulaire. Stretch L'image est étirée dans le formulaire. Tile L'image est affichée en mosaïque dans le formulaire. Zoom L'image est agrandie dans le formulaire.

− BackColor : couleur d'arrière-plan du formulaire.

Exemple : // this remplace Form1 dans un gestionnaire d’évènement du formulaire Form1 this→BackColor= Color ::AliceBlue ;

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 8/103

8 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.1.2- Création d’un formulaire (formulaire modal, non modal, MessageBox, application MDI)

Comment afficher/ne plus afficher un formulaire ?

� Propriétés :

− Visible : formulaire affiché ou non.

� Méthodes : − Show() : affichage du formulaire à l'utilisateur. − ShowDialog() : affichage du formulaire comme une boîte de dialogue modale. − Hide() : masquage du formulaire à l'utilisateur. − Close() : fermeture formulaire.

� Evènements :

− Load : se produit avant le premier affichage d'un formulaire. − FormClosed : se produit lorsque le formulaire est fermé.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 9/103

9 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : OUVERTURE DE BOÎTES DE MESSAGES, DE FORMULAIRES MODAL ET NON MODAL (au lancement de l’application ou à sa fermeture)

� Boîte de dialogue MESSAGEBOX (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/en-us/library/aa335424(VS.71).aspx Les autres boîtes de dialogues standards sont vues dans un chapitre ultérieur.

� Ajout d’une nouvelle Form au projet : menu contextuel dans l’explorateur de solutions, choisir Ajouter/Nouvel élément, puis choisir UI/Windows Form, donner un nom de classe. OUVERTURE D’UN FORMULAIRE MODAL au lancement de l’application :

DANS LE FICHIER DU FORMULAIRE PRINCIPAL :

#pragma once

// inclusion des classes des autre Forms créées

#include "FormModale.h"

#include "FormNonModale.h"

#pragma endregion

// ---------------------------------------------

// initialisations au lancement de l'application

// ---------------------------------------------

private: System::Void Form1_Load(System::Object^ sender,System::EventArgs^ e)

{

// Déclaration et création d'une FormModale

///////////////////////////////////////////

// NE PAS OUBLIER D'INCLURE LE .h DE LA CLASSE FormModale

FormModale^ frmModale= gcnew FormModale();

// ouverture modale de la Form créée : elle restera en premier plan tant

// qu'elle ne sera pas fermée : elle bloque l'application

/////////////////////////////////////////

// son bouton OK permet de fermer cette Form et la Form appelante en est

// informée, car la propriété DIALOGRESULT du bouton est définie à OK

if( frmModale->ShowDialog() == System::Windows::Forms::DialogResult::OK) {

//si le bouton OK a été cliqué, affichage d'un message

// voir plus bas pour une explication sur MessageBox

MessageBox::Show("Formulaire modal quitté avec OK..");

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 10/103

10 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

OUVERTURE D’UN FORMULAIRE NON MODAL au lancement de l’application :

DANS LE FICHIER DU FORMULAIRE PRINCIPAL, à la suite du Form1_Load :

// Déclaration et création d'une FormNonModale

//////////////////////////////////////////////

// NE PAS OUBLIER D'INCLURE LE .h DE LA CLASSE FormNonModale

FormNonModale^ frmNonModale= gcnew FormNonModale();

// ouverture non modale de la Form créée, qui n'empêche pas l'ouverture

// de la Form principale : elle ne bloqie pas l'application

//////////////////////////////////////////

// Pour fermer cette Form : méthode de fermeture si son bouton cliqué

frmNonModale->Show();

} // FIN Form1_Load

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 11/103

11 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

DANS LE FICHIER DU FORMULAIRE NON MODAL (FormNonModale.h) : #pragma endregion

// -----------------------------------------------------------

// fermeture de la Form non modale si son bouton OK est cliqué

// -----------------------------------------------------------

private: System::Void btnOK_Click(System::Object^ sender,System::EventArgs^ e)

{ Close(); // fermer la Form non modale }

LANCEMENT D’UNE BOÎTE DE MESSAGE à la fermeture de l’application :

DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // ---------------------------------------------

// opérations à la fermeture de l'application

// ---------------------------------------------

private: System::Void Form1_FormClosed(System::Object^ sender,

System::Windows::Forms::FormClosedEventArgs^ e) {

// boîte de message avec le message, le titre de la boîte de dialogue,

// les boutons utilisés, et le symbole graphique

MessageBox::Show("Fermeture application...", "Information",

MessageBoxButtons::OK, MessageBoxIcon::Information);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 12/103

12 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Comment utiliser des formulaires MDI (Multiple Document Interface) ?

� Propriétés : − IsMdiContainer : indique si le formulaire est parent de formulaires enfants MDI. − MdiParent : indique le formulaire parent d’un formulaire enfant.

� Méthodes :

− LayoutMdi(MdiLayout::Cascade) : organisation des formulaires enfants MDI au sein du formulaire parent MDI. Valeurs possibles : ArrangeIcons icônes enfants disposées dans le formulaire parent. Cascade fenêtres enfants disposées en cascade dans le formulaire parent. TileHorizontal fenêtres enfants disposées en mosaïque horizontalement dans le

formulaire parent. TileVertical fenêtres enfant disposées en mosaïque verticalement dans le

formulaire parent.

Exemple : CREATION D’UNE APPLICATION MDI (au lancement de l’application) : UN FORMULAIRE PARENT CONTIENT 3 FORMULAIRES ENFANTS

CREATION DES FORMULAIRES ENFANTS DANS LE FORMULAIRE PARENT : DANS LE FICHIER DU FORMULAIRE PRINCIPAL :

// -----------------------

// initialisations au

lancement de l'application

// -----------------------

private: System::Void

Form1_Load(System::Object^sen

der, System::EventArgs^ e) {

// crée de nouvelles

Forms à partir de la classe

FormNonModale

FormNonModale ^ enfant1

= gcnew FormNonModale();

FormNonModale ^ enfant2

= gcnew FormNonModale();

FormNonModale ^ enfant3

= gcnew FormNonModale();

// transformation des Forms en Form enfant ; this est la Form dans

// laquelle ce gestionnaire d'évènement est écrit:Form principale parent

enfant1->MdiParent = this;

enfant2->MdiParent = this;

enfant3->MdiParent = this;

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 13/103

13 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

// affectation des titres aux Form enfant par parcours des Forms enfants

// dans la Form parent

for (int i=0; i < this->MdiChildren->Length; i++)

this->MdiChildren[i]->Text = "Form enfant " + (i+1).ToString();

// affichage des Forms enfant dans la Form parent

enfant1->Show();

enfant2->Show();

enfant3->Show();

}

DANS LE FICHIER DE LA CLASSE DES FORMULAIRES ENFANT : // -----------------------------------------------------------

// fermeture de la Form non modale si son bouton OK est cliqué

// -----------------------------------------------------------

private: System::Void btnOK_Click(System::Object^ sender,System::EventArgs^ e)

{ Close(); // fermer la Form non modale }

PRESENTATIONS DES FORMULAIRES ENFANTS DANS LE FORMULAIRE PARENT :

DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // --------------------------------------------------------------

// menus de présentation des fenêtres enfants dans le Form parent

// --------------------------------------------------------------

private: System::Void cascadeToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ // disposition des Forms enfants en cascade

this->LayoutMdi(MdiLayout::Cascade) ; }

private: System::Void verticalToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ // disposition des Forms enfants verticalement

this->LayoutMdi(MdiLayout::TileVertical) ; }

private: System::Void horizontalToolStripMenuItem_Click(System::Object^

sender, System::EventArgs^ e)

{ // disposition des Forms enfants horizontalement

this->LayoutMdi(MdiLayout::TileHorizontal) ; }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 14/103

14 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.2- Le composant PANEL

� MEMBRES DE LA CLASSE PANEL de l’espace de noms System::Windows::Forms : http://msdn2.microsoft.com/en-us/library/system.windows.forms.panel_members(VS.80).aspx

La classe Panel est un conteneur de composants, qui permet aussi d’habiller l’interface. Le Panel est proche du GroupBox ; toutefois, seulement le Panel peut avoir des barres de défilement et seulement le GroupBox peut afficher une légende.

1.2.1- Un panel pour habiller le formulaire

Comment changer l’aspect d’un panel ?

� Propriétés : − BackColor : couleur d'arrière-plan du panel. − BackgroundImage : image d'arrière-plan affichée dans le panel. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée dans le panel. − BorderStyle : type de bordure du panel. − Cursor : forme du curseur au-dessus du contrôle.

1.2.2- Un panel pour contenir et manipuler des composants (propriété Controls)

Comment manipuler les composants d’un panel ?

� Propriétés : − Controls : collection des composants du conteneur panel. Cette classe possède divers

membres :( http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_members(VS.80).aspx)

⋅ Propriété Count : nombre de composants. ⋅ Méthode Add(control) : ajoute un composant à la collection. ⋅ Méthode Remove(control) : enlève un composant de la collection. ⋅ Méthode GetType() : indique la classe du composant.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 15/103

15 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : TRANSFERT PAR CODE DE COMPOSANTS D’UN PANEL A UN AUTRE

MODIFICATION DE L’ASPECT DES COMPOSANTS D’UN PANEL PAR CODE : DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // -----------------------------------------

// réaction à un clic sur le panel de gauche

// -----------------------------------------

private: System::Void pnlOutil_Click(System::Object^ sender,

System::EventArgs^ e)

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 16/103

16 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

{ // parcours des composants sur le panel

for (int i=0;i<pnlOutil->Controls->Count;i++)

{ // changement couleur de fond de tous les composants du panel

pnlOutil->Controls[i]->BackColor= Color::Aqua;

// détection des composants du panel qui sont de la classe Button

if ( pnlOutil->Controls[i]->GetType()->ToString() ==

"System.Windows.Forms.Button" )

{ // modification de la couleur de fond des boutons

pnlOutil->Controls[i]->BackColor= Color::Brown;

// modification du texte du bouton en forçant le type du

// control:permet d'accéder à des membres propre à button

Button ^btnTemp = safe_cast<Button ^> (pnlOutil->Controls[i]);

btnTemp->Text= "nouveau texte";

}

}

}

DEPLACEMENT DE COMPOSANTS D’UN PANEL A L’AUTRE PAR CODE : DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // -----------------------------------------

// réaction à un clic sur le panel de droite

// -----------------------------------------

private: System::Void pnlDessin_Click(System::Object^ sender,

System::EventArgs^ e)

{ // transfert du bouton btnPanel du panel de gauche vers celui de droite

pnlDessin->Controls->Add(btnPanel);

// transfert du 2° composant du panel de gauche vers le panel de droite

pnlDessin->Controls->Add(pnlOutil->Controls[1]);

// le label lblPanel est enlevé du panel de gauche

pnlOutil->Controls->Remove(lblPanel);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 17/103

17 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.3- Le composant GROUPBOX

� MEMBRES DE LA CLASSE GROUPBOX de l’espace de noms System::Windows::Forms : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.groupbox_members(VS.80).aspx

La classe Groupbox est un conteneur de composants, qui permet aussi d’habiller l’interface. Le Groupbox est proche du Panel ; toutefois, seulement le Panel peut avoir des barres de défilement et seulement le GroupBox peut afficher une légende. D’autre part, le Groupbox est surtout utilisé pour grouper les Radiobutton.

1.3.1- Un groupbox pour habiller le formulaire

Comment changer l’aspect d’un groupbox ?

� Propriétés :

− Text : intitulé au-dessus du groupbox. − RigthToLeft : position de l’intitulé à droite ou à gauche. − BackColor : couleur d'arrière-plan du groupbox. − BackgroundImage : image d'arrière-plan affichée dans le groupbox. − BackgroundImageLayout : façon dont l’image d’arrière-plan est affichée. − Cursor : forme du curseur au-dessus du contrôle. − Font : police du texte affiché par le contrôle. − FlatStyle : apparence du groupbox.

Valeurs possibles : Flat Le groupbox apparaît plat. Popup Le groupbox apparaît plat, sauf si le pointeur de souris est au-dessus

(aspect 3-dimensions). Standard Le groupbox apparaît en 3-dimensions. System L’apparence du groupbox est determinée par le système d’exploitation.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 18/103

18 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.3.2- Un groupbox pour contenir et manipuler des composants (avec RadioButton)

Comment manipuler les radiobutton placés sur un groupbox ?

� Propriétés : − Controls : collection des composants du conteneur groupbox. Cette classe possède

divers membres :( http://msdn2.microsoft.com/en-us/library/system.windows.forms.control.controlcollection_members(VS.80).aspx)

⋅ Propriété Count : nombre de composants. ⋅ Méthode int Indexof(^ control) : renvoi l’indice du contrôle spécifié dans la

collection de composants. Les indices commencent à 0 (l’indice 0 est attribué au dernier composant posé dans le groupbox).

Exemple : RECUPERATION DANS LE CODE DE L’INDICE DU BOUTON CLIQUE DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // -----------------------------------------------------------------------

// réaction à un changement de sélection d'un radiobutton

// ce gestionnaire d'évènement est affecté aux 3 radiobutton via la fenêtre

// de propriétés, onglet évènement.

// Un radiobutton doit être coché par défaut dans la fenêtre de propriétés

// (propriété Checked à true)

// -----------------------------------------------------------------------

private: System::Void rdbBlanc_CheckedChanged (System::Object^ sender,

System::EventArgs^ e)

{ // l'objet sender (radiobutton dont la

sélection a changé), est converti en

référence de radiobutton

RadioButton ^rdbSender =

safe_cast<RadioButton ^> (sender);

// l'indice du radiobutton sélectionné

est récupéré à partir du groupbox et de

sa collection de contrôles.

// Les indices sont affectés dans le

groupbox par ordre inverse de dépôt des

composants dans le groupbox ; dernier

posé = indice 0.

int indice= grbCouleur->Controls->

IndexOf(rdbSender);

// affichage dans la boîte d'édition du texte de l'option sélectionnée

txtInfo->Text="Option choisie \""+grbCouleur->Controls[indice]->Text

+"\"";

// affichage, à la suite, de l'indice du radiobutton choisi

txtInfo->Text= txtInfo->Text + " (indice " + indice.ToString() + ")";

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 19/103

19 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.4- Le composant TABCONTROL

� MEMBRES DE LA CLASSE GROUPBOX de l’espace de noms System::Windows::Forms : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.tabcontrol_members(VS.80).aspx

La classe tabControl gère un ensemble de pages d’onglets. Elle permet d’organiser visuellement et de façon compacte le contenu d’un formulaire. L’utilisateur navigue d’une page à l’autre en cliquant avec la souris sur les onglets (en-têtes des pages). Des contrôles peuvent être posés directement sur chacune des pages à onglets.

1.4.1- Un tabcontrol pour organiser visuellement les informations

Comment changer l’aspect d’un tabcontrol ?

� Propriétés : − Alignment : zone où les onglets sont disposés.

Valeurs possibles : Bottom Les onglets sont situés le long du bord inférieur du tabcontrol. Left Les onglets sont situés le long du bord gauche du tabcontrol. Right Les onglets sont situés le long du bord droit du tabcontrol. Top Les onglets sont situés le long du bord supérieur du tabcontrol.

− Appearance : apparence des onglets. Valeurs possibles : Buttons Les onglets ont l'aspect de boutons 3D. FlatButtons Les onglets ont l'aspect de boutons à deux dimensions (flat). Normal Les onglets ont un aspect standard.

− Font : police du texte affiché par le tabcontrol. − Padding : largeur X et hauteur Y des onglets. − SizeMode : mode de dimensionnement des onglets du tabcontrol.

Valeurs possibles : FillToRight La largeur de chaque onglet est dimensionnée de telle sorte que

chaque ligne d'onglets remplisse toute la largeur du tabcontrol. Fixed Tous les onglets d'un tabcontrol présentent la même largeur. Normal La largeur de chaque onglet est dimensionnée en fonction des

informations à afficher dedans.

− Multiline : en cas de nombreuses pages, indique si les onglets s’affichent sur plusieurs lignes ou si une flèche permet d’accéder aux onglets cachés.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 20/103

20 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− ImageList : contrôle ImageList contenant les images à afficher dans les onglets. Pour que l’image s’affiche bien, il faut aussi fixer la propriété ImageIndex pour chaque page (en liaison avec les indices de l’imagelist).

− TabPages : collection des pages du tabcontrol. On ajoute un pages à onglets grâce à la propriété TabPages. L'ordre des pages d'onglets dans cette collection correspond à l'ordre des onglets dans le tabcontrol.

− TabPages[i] : c’est un TabPage (cliquer sur la page pour avoir accès aux propriétés de la page) : une page à onglet de la collection du tabcontrol. Cette classe possède divers membres : (http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.tabpage_members(VS.80).aspx)

⋅ Propriété BackColor : couleur d'arrière-plan de la page. ⋅ Propriété BackgroundImage : image d'arrière-plan affichée dans la page. ⋅ Propriété BackgroundImageLayout : façon dont l’image d’arrière-plan est

affichée. ⋅ Propriété BorderStyle: type de bordure de la page. ⋅ Propriété Font : police du texte affiché dans la page. ⋅ Propriété Text : titre de l’onglet de la page. ⋅ Propriété ImageIndex : indice de l’image (dans l’imagelist associée au

tabcontrol) qui est affichée dans l’onglet de la page, devant son titre. ⋅ Propriété ImageKey : nom de l’image affichée dans l’onglet de la page.

1.4.2- Un tabcontrol pour sélectionner différentes pages

Comment sélectionner une page dans un tabcontrol ? � Propriétés :

− SelectedIndex : indice de la page à onglet (int) sélectionnée dans le tabcontrol. − Selectedtab : page à onglet (TabPage ^) sélectionnée dans le tabcontrol. − TabCount : nombre d’onglets du tabcontrol. − TabPages : collection des pages du tabcontrol. Cette classe possède divers membres :

(http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.tabcontrol.tabpagecollection_members(VS.80).aspx)

⋅ Propriété Count : nombre de pages à onglets dans la collection. ⋅ Propriété Item(indice ou name de la page) : une page à onglet dans la

collection. ⋅ Méthode IndexOf(^ TabPage) : index de la page à onglet spécifiée dans la

collection par sa référence. ⋅ Méthode IndexOf(name de la page) : index de la page à onglet spécifiée dans la

collection par son nom. � Méthodes :

− SelectTab(index de la page dans la collection tabPages ou nom de la page ou

référence du tabpage) : la page spécifiée est activée. − DeselectTab (index de la page dans la collection tabPage ou nom de la page ou

référence du tabpage) : la page qui suit la page spécifiée est activée. � Evènements :

− SelectedIndexChanged : se produit lorsque la propriété SelectedIndex change.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 21/103

21 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : RECUPERATION DANS LE CODE DE LA PAGE SELECTIONNEE CHANGEMENT DE SELECTION DE PAGE PAR CODE : DANS LE FICHIER DU FORMULAIRE PRINCIPAL :

// ---------------------

// sélection de la

première page au

démarrage

// ---------------------

private: System::Void

Form1_Load(System::Objec

t^ sender,

System::EventArgs^ e) {

tbcAide->SelectedTab=

tbcAide->TabPages[0];

}

// -----------------

// forçage de la

sélection d'une page

par clic sur un bouton

// -----------------

private: System::Void

btnSelectionnerPage2_C

lick(System::Object^

sender,

System::EventArgs^ e)

{

// sélection de la

deuxième page du

tabcontrol

TbcAide->SelectTab(1);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 22/103

22 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

DETECTION DE PAGE SELECTIONNNEE PAR CODE : DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // ---------------------------------------------

// réaction à un changement de page sélectionnée

// ---------------------------------------------

private: System::Void tbcAide_SelectedIndexChanged(System::Object^ sender,

System::EventArgs^ e) {

// construction message avec le titre d'onglet de la page sélectionnée

String ^Info= "Je suis sur la page " + tbcAide->SelectedTab->Text;

// ajout de l'indice de la page sélectionnée via le tabControl

Info= Info + " (index : "+Convert::ToString(tbcAide->SelectedIndex)+")";

// ajout du nombre de pages du tabcontrol

Info= Info + " / le nombre total de pages est : " +

Convert::ToString(tbcAide-> TabCount);

// passage à la ligne dans le message

Info= Info + Environment::NewLine;

// ajout de l'indice de la page sélectionnée via la collection tabPages

Info= Info + "Je suis sur la page " + tbcAide->TabPages ->

IndexOf(tbcAide-> SelectedTab);

MessageBox::Show(Info);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 23/103

23 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

1.5- Le composant SPLITCONTAINER

� MEMBRES DE LA CLASSE SPLITCONTAINER (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.splitcontainer_members(VS.80).aspx

La classe splitContainer permet de créer un séparateur mobile (splitter), afin de partager une fenêtre en deux parties redimensionnables.

Le splitContainer est composé de deux panels, qui sont donc des conteneurs de composants.

1.5.1- Un splitcontainer pour organiser visuellement les informations

Comment changer l’aspect d’un splitcontainer ? � Propriétés :

− BackgroundImage : image affichée dans la barre de redimensionnement. − SplitterWidth : épaisseur de la barre qui sert au redimensionnement. − IsSplitterFixed : pour fixer la barre ou la rendre mobile. − SplitterDistance : emplacement de la barre, en pixels, à partir du bord gauche ou

supérieur du SplitContainer. − SplitterIncrement : incrément de déplacement de la barre en pixels. − Orientation : orientation horizontale ou verticale des panneaux du spitcontainer. − Cursor : forme du curseur au-dessus de la barre de redimensionnement. − BorderStyle : style de la barre de redimensionnement. Valeurs possibles :

None Aucune bordure. FixedSingle Bordure à ligne simple. Fixed3D Bordure 3D.

− BackColor : couleur d'arrière-plan du splitcontainer (des deux panels). − Font : police du texte affiché par les panels. − Panel1MinSize : taille minimum dun panel gauche ou supérieur. − Panel2MinSize : taille minimum dun panel droit ou inférieur. − Panel1 : panel gauche ou supérieur du SplitContainer, en fonction de Orientation. − Panel2 : panel droit ou inférieur du SplitContainer, en fonction de Orientation.

⋅ Propriété BackColor : couleur d'arrière-plan du panel. ⋅ Propriété BackgroundImage : image d'arrière-plan affichée dans le panel. ⋅ Propriété BackgroundImageLayout : façon dont l’image d’arrière-plan est

affichée dans le panel. ⋅ Propriété Font : police du texte affiché dans le panel.

� Evènements : − SplitterMoved : lorsque la barre de redimensionnement a été déplacée. − SplitterMoving : lorsque la barre de redimensionnement est en train d’être déplacée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 24/103

24 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : CHANGEMENT DU CURSEUR LORS DU DEPLACEMENT DE LA BARRE DANS LE FICHIER DU FORMULAIRE PRINCIPAL : // ------------------------------------------------------------

// lorsque la barre de redimensionnement est en train de bouger

// ------------------------------------------------------------

private: System::Void sctInfos_SplitterMoving(System::Object^ sender,

System::Windows::Forms::SplitterCancelEventArgs^ e)

{ // curseur avec flèches Nord/Sud

spcInfos->Cursor= System::Windows::Forms::Cursors::SizeNS;

}

// ------------------------------------------------------

// lorsque la barre de redimensionnement a fini de bouger

// ------------------------------------------------------

private: System::Void sctInfos_SplitterMoved(System::Object^ sender,

System::Windows::Forms::SplitterEventArgs^ e)

{ //curseur avec flèches dans les 4 directions

spcInfos->Cursor= System::Windows::Forms::Cursors::SizeAll;

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 25/103

25 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2- Les composants d’édition et de saisie de texte

2.1- Le composant LABEL

� MEMBRES DE LA CLASSE LABEL (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.label_members(VS.80).aspx

La classe Label permet d’afficher du texte. Il sert couramment à donner un intitulé ou un titre à un autre composant.

2.1.1- Un label pour donner des informations

Comment changer l’aspect d’un label ?

� Propriétés :

− BackColor : couleur d'arrière-plan du label. − Padding : espacement entre les bords du label et son contenu. − BorderStyle : type de bordure du label. − FlatStyle : apparence du label. Valeurs possibles :

Flat Le label s'affiche sous une forme à deux dimensions. Popup Le label s'affiche sous une forme à deux dimensions et, si la souris arrive

à sa hauteur, il prend alors une forme à trois dimensions. Standard Le label s'affiche sous une forme à trois dimensions. System L'apparence du label est déterminée par l’OS.

− Image : image affichée dans le label. − ImageAlign : façon dont l’image est affichée. − ImageList : composant imagelist avec des images pour le label. Pour utiliser ces

images, il faut aussi fixer les propriétés ImageIndex ou ImageKey. Quelques propriétés : − ImageIndex : indice de l’image (dans l’imagelist associé) à afficher dans le label. − ImageKey : nom de l’image (de l’imagelist) à afficher dans le label.

− Font : police du texte affiché par le label. − ForeColor : couleur du texte dans le label. − Text : texte dans le label. − TextAlign : alignement du texte dans le label.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 26/103

26 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.2- Le composant TEXTBOX

� MEMBRES DE LA CLASSE TEXTBOX (espace de noms System::Windows::Controls) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.textbox_members(VS.80).aspx

Le contrôle TextBox est le contrôle par excellence qui permet la saisie, sur une seule ligne ou multiligne pour des longs textes.

2.2.1- L’apparence d’une textbox

Comment changer l’aspect d’une textbox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la textbox. − BorderStyle : type de bordure de la textbox.

− Text : texte dans la textbox. Exemple (textbox multilignes, des passages à la ligne) : txtFile→Text = "CONTENU DU FICHIER\r\n" + "___________________";

txtFile→Text = txtFile→Text + Environment::NewLine + Environment::NewLine; − Font : police du texte affiché par la textbox. − ForeColor : couleur du texte dans la textbox. − TextAlign : façon dont le texte est aligné. − MaxLength : maximum de caractères que l'utilisateur peut taper dans la textbox.

− Multiline : indique s'il s'agit d'une textbox multiligne. − Lines : lignes de texte contenues dans une textbox. − AcceptsReturn : indique si le fait d'appuyer sur ENTRÉE dans un contrôle TextBox

multiligne entraîne la création d'une nouvelle ligne. − AcceptsTab : indique si le fait d'appuyer sur TAB dans un contrôle zone de texte

multiligne effectue une tabulation. − ScrollBars : barres de défilement qui doivent apparaître dans une textbox multiligne. − WordWrap : indique si une textbox multiligne renvoie les mots au début de la ligne

suivante lorsque cela est nécessaire. − CharacterCasing : définit si la textbox modifie la casse des caractères au fur et à

mesure de la saisie.

− ReadOnly : indique si le texte est en lecture seule. − HideSelection : indique si le texte sélectionné dans la textbox reste en surbrillance

quand le focus passe à un autre contrôle. − PasswordChar : caractère servant à masquer les caractères d'un mot de passe dans une

textbox sur une ligne. − UseSystemPasswordChar : valeur indiquant si le texte doit apparaître comme caractère

de mot de passe par défaut.

− AutoCompleteMode : type de saisie de texte dans la textbox. Valeurs possibles : Append Ajoute le reste de la chaîne des candidats les plus probables aux

caractères existants, avec les caractères ajoutés en surbrillance.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 27/103

27 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

None Désactive la fonctionnalité de saisie semi-automatique. Suggest Affiche la liste déroulante auxiliaire (chaînes de saisie semi-

automatique suggérées) associée au contrôle d'édition. SuggestAppend Applique à la fois les options Suggest et Append.

− AutoCompleteSource : source de chaînes complètes utilisées pour la saisie semi-automatique. Quelques valeurs possibles : AllSystemSources Spécifie l'équivalent de FileSystem et AllUrl comme source. AllUrl Source= HistoryList et RecentlyUsedList. CustomSource Sources = chaînes d'un AutoCompleteStringCollection intégré. FileSystem Spécifie le système de fichiers comme source. FileSystemDirectories seuls les noms de répertoire (pas les noms de fichier) complétés. ListItems Source= éléments d’une combobox. None aucun AutoCompleteSource n'est en cours d'utilisation.

− AutoCompleteCustomSource : collection de chaînes personnalisées à utiliser lorsque la propriété AutoCompleteSource a la valeur CustomSource.

2.2.2- Le fonctionnement d’une textbox (conversion numériques)

Comment récupérer et traiter le texte d’une textbox ? � Propriétés :

− TabStop : indique si l'utilisateur peut donner le focus à la textbox avec TAB. − TabIndex : ordre de tabulation de la textbox dans son conteneur.

� Méthodes : − AppendText(String ^) : ajoute du texte au texte en cours dans une zone de texte. − Clear() : efface tout le texte du textbox. − Undo() : annule la dernière modification apportée dans la zone de texte.

� Evènements : − TextChanged : lorsque la valeur de la propriété Text change.

Comment faire des conversions à partir du text d’une textbox ?

VOIR L’EXEMPLE SUIVANT. Liens pour les conversion avec le .Net Framework : http://msdn.microsoft.com/fr-fr/library/08h86h00(VS.80).aspx http://msdn.microsoft.com/fr-fr/library/zf50za27(VS.80).aspx http://msdn.microsoft.com/fr-fr/library/system.convert(VS.80).aspx

Exemple : CONVERSION DU TEXTE D’ UNE TEXTBOX DANS TOUS LES TYPES

// -------------------------------------------------------------

// conversion numérique de texte au fur et à mesure de sa saisie

// -------------------------------------------------------------

private: System::Void txtNombre_TextChanged(System::Object^ sender,

System::EventArgs^ e) {

CONVERSIONS EN ENTIERS :

Int32 entier32; /* long*/ UInt32 uentier32; /*unsigned long*/ Int16

entier16; /* short*/ UInt16 uentier16; /*unsigned short*/ Byte uoctet;

SByte octet; String ^info; // message d'information

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 28/103

28 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

// conversion en entier 32 bits signé

if ( Int32::TryParse(txtNombre-> Text,entier32) == true )

info= "Conversion Int32 réussie de " + entier32.ToString()+"\r\n";

else info= "Echec conversion Int32 !!"+"\r\n";

if ( UInt32::TryParse(txtNombre->Text,uentier32) == true ) // 32 bits non sig

info=info+"Conversion UInt32 réussie de " + uentier32.ToString()+"\r\n";

else info=info+"Echec conversion UInt32 !!"+"\r\n";

// conversion en entier 16 bits signé

if ( Int16::TryParse(txtNombre->

Text,entier16) == true )

info=info+"Conversion Int16 réussie

de " + entier16.ToString()+ "\r\n";

else info=info+"Echec conversion Int16

!!"+"\r\n";

if ( UInt16::TryParse(txtNombre->

Text,uentier16)==true) //16 bits non sig

info=info+"Conversion UInt16

réussie de"+uentier16.ToString()+"\r\n";

else info=info+"Echec conversion UInt16

!!"+"\r\n";

// conversion contenu textbox en entier 8 bits non signé

if ( Byte::TryParse(txtNombre->Text,uoctet) == true )

info=info+"Conversion Byte réussie de " + uoctet.ToString()+"\r\n";

else info=info+"Echec conversion Byte !!"+"\r\n";

if ( SByte::TryParse(txtNombre->Text,octet) == true ) // entier 8 bits signé

info=info+"Conversion SByte réussie de " + octet.ToString()+"\r\n";

else info=info+"Echec conversion SByte !!"+"\r\n";

CONVERSION EN CARACTERE :

Char carac; // conversion contenu textbox en caractère

if ( Char::TryParse(txtNombre->Text,carac) == true )

info=info+"Conversion Char réussie de " + carac.ToString()+"\r\n";

else info=info+"Echec conversion Char !!"+"\r\n";

CONVERSIONS EN REELS :

Single reel32; /* float*/ Double reel64; /* double*/

// conversion en réel simple précision

if(Single::TryParse(txtNombre->Text,reel32))

info=info+"Conversion Single réussie de

" + reel32.ToString()+"\r\n";

else info=info+"Echec conversion Single!!"+

"\r\n";

// conversion en réel double précision

if ( Double::TryParse(txtNombre->

Text,reel64))

info=info+"Conversion Double réussie de

" + reel64.ToString()+"\r\n";

else info=info+"Echec conversion Double

!!"+"\r\n";

// affichage informations sur les conversions effectuées

MessageBox::Show(info);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 29/103

29 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.3- Le composant MASKEDTEXTBOX

� MEMBRES DE LA CLASSE MASKEDTEXTBOX ( System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.maskedtextbox_members(VS.80).aspx

La classe MaskedTextBox est un contrôle d'édition qui permet de définir des masques de chaînes pour contrôler le format de sortie de la valeur saisie.

2.3.1- L’apparence d’un maskedtextbox

Comment changer l’aspect d’un maskedtextbox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la zone de la maskedtextbox. − BorderStyle : type de bordure de la maskedtextbox. − Font : police du texte affiché par la maskedtextbox. − ForeColor : couleur du texte dans la maskedtextbox.

− Text : texte dans la maskedtextbox. − TextAlign : façon dont le texte est aligné. − ReadOnly : indique si le texte est en lecture seule. − AsciiOnly : la maskedtextbox accepte des caractères en dehors des caractères ASCII.

− PasswordChar : caractère à afficher dans la substitution pour l'entrée utilisateur. − Mask : masque de saisie ; la chaîne vide autorise toute entrée. Indications :

0 Chiffre, obligatoire. Cet élément accepte tout chiffre entre 0 et 9. 9 Chiffre ou espace, facultatif. # Chiffre ou espace, facultatif ; signes plus (+) et moins (-) autorisés. L Lettre, obligatoire. Restreint l'entrée aux lettres ASCII a-z et A-Z. ? Lettre, facultatif. Restreint l'entrée aux lettres ASCII a-z et A-Z. & Caractère, obligatoire. Si AsciiOnly= true, cet élément vaut "L". C Caractère (sauf de contrôle), facultatif. Si AsciiOnly= true, "C" vaut "?". A ou a Alphanumérique, facultatif. Si AsciiOnly= true, cet élément vaut "?". . Espace réservé aux décimales. , Espace réservé aux milliers. : Séparateur horaire. / Séparateur de date. $ Symbole monétaire. < Convertit tous les caractères qui suivent en minuscules. > Convertit tous les caractères qui suivent en majuscules. | Désactive un > ou < effectué précédemment. \ Échappement : remplace un caractère de masque par un littéral. autres Littéraux qui apparaissent tels quels dans la maskedtextbox.

− RejectInputOnFirstFailure : arrêt analyse entrée utilisateur après 1° entrée non valide. − BeepOnError : déclenchement de signal sonore pour une séquence de touches refusée. − TabStop : indique si l'utilisateur peut donner le focus à la maskedtextbox avec TAB. − TabIndex : ordre de tabulation de la maskedtextbox dans son conteneur.

� Evènements : − TextChanged : lorsque la valeur de la propriété Text change.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 30/103

30 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.4- Le composant RICHTEXTBOX

� MEMBRES DE LA CLASSE RICHTEXTBOX (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.richtextbox_members(VS.80).aspx

La classe RichTextBox est une extension du TextBox, qui permet une gestion du format RTF (pour avoir du gras, souligné, etc ...).

2.4.1- L’apparence d’un richtextbox

Comment changer l’aspect d’un richtextbox ?

� Propriétés :

− BackColor : couleur d'arrière-plan de la richtextbox. − BorderStyle : type de bordure de la richtextbox. − ScrollBars : barres de défilement apparaîssant dans une richtextbox multiligne. − Dock : ancre la richtextbox dans le formulaire. Valeurs possibles :

Bottom bord inférieur du contrôle ancré à la partie inférieure du formulaire. Fill bords du contrôle ancrés aux bords du formulaire. Left bord gauche ancré au bord gauche du formulaire. None Le statusstrip n'est pas ancré. Right bord droit du contrôle ancré au bord droit du formulaire. Top bord supérieur du contrôle ancré à la partie supérieure du formulaire.

− Text : texte dans la richtextbox − Font : police du texte affiché par la richtextbox. − ForeColor : couleur du texte dans la richtextbox. − MaxLength : maximum de caractères que l'utilisateur peut taper dans la richtextbox. − ReadOnly : indique si le texte est en lecture seule.

− Multiline : indique s'il s'agit d'une richtextbox multiligne. − WordWrap : indique si une richtextbox multiligne renvoie les mots au début de la ligne

suivante lorsque cela est nécessaire. − AcceptsTab : indique si le fait d'appuyer sur TAB effectue une tabulation. − RightMargin : marge non visible à droite ; peut fixer une largeur de ligne maximale.

− ShowSelectionMargin : indique si une marge de sélection s'affiche. − HideSelection : indique si le texte sélectionné dans la richtextbox reste en surbrillance

quand le focus passe à un autre contrôle.

− ContextMenuStrip : ContextMenuStrip associé à la richtextbox. − DetectUrls : indique si la richtextbox met automatiquement en forme les URL entrées.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 31/103

31 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.4.2- Le fonctionnement d’un richtextbox

Comment récupérer et traiter le texte d’un richtextbox ? � Propriétés :

− Lines : lignes de texte contenues dans une richtextbox. − SelectedText : texte sélectionné dans la richtextbox. − SelectedRtf : texte mis en forme au format RTF actuellement sélectionné. − Rtf : texte dans la richtextbox, y compris tous les codes RTF. − ZoomFactor : niveau de zoom actuel dans la richtextbox. − SelectionProtected : indique si la sélection de texte actuelle est protégée. − SelectionLength : nombre de caractères sélectionnés dans la richtextbox. − SelectionFont : police du texte de la sélection actuelle ou du point d'insertion. VOIR

EXEMPLE PLUS BAS. Membres de Font : http://msdn.microsoft.com/fr-fr/library/system.drawing.font_members(VS.80).aspx

− SelectionAlignment : alignement à appliquer à la sélection. Exemple : rtxtSaisie→SelectionAlignment = HorizontalAlignment::Center ; Valeurs possibles : Center Le texte est aligné au centre de la richtextbox. Left Le texte est aligné à gauche de la richtextbox. Right Le texte est aligné à droite de la richtextbox.

− SelectionBackColor : couleur du texte sélectionné. Exemple : rtxtSaisie→SelectionBackColor = Color::Red ; Valeurs possibles de Color : http://msdn.microsoft.com/fr-fr/library/system.drawing.color_members(VS.80).aspx

− SelectionColor : couleur du texte de la sélection actuelle ou du point d'insertion. − SelectionBullet : style de liste à puces appliqué à la sélection actuelle. − BulletIndent : mise en retrait utilisée lorsque le style de liste à puces est appliqué. − SelectionIndent : longueur de la mise en retrait de la ligne d'où la sélection démarre. − SelectionHangingIndent : distance entre les bords gauche de la 1° ligne de texte dans

le paragraphe sélectionné et des lignes de texte suivantes dans le même paragraphe. − SelectionRightIndent : distance entre les bords droits richtextbox-sélection. − TabStop : indique si l'utilisateur peut donner le focus à la richtextbox avec TAB. − TabIndex : ordre de tabulation de la richtextbox dans son conteneur.

� Méthodes : − Clear() : efface tout le texte de la richtextbox. − AppendText() : ajoute du texte à la zone de texte. − Copy() : copie la sélection active de la zone de texte vers le Presse-papiers. − Cut() : déplace la sélection active entre la zone de texte et le Presse-papiers. − CanPaste() : détermine si les informations du Presse-papiers peuvent-être collées. − Paste() : colle le contenu du Presse-papiers dans la richtextbox. − Undo() : annule la dernière modification apportée dans la zone de texte. − Redo() : applique à nouveau la dernière opération qui a été annulée dans la richtextbox. − LoadFile() : charge le contenu d'un fichier dans la richtextbox. − SaveFile() : enregistre le contenu de la richtextbox dans un fichier.

� Evènements : − TextChanged : lorsque la valeur de la propriété Text change. − SelectionChanged : suite à la modification du texte sélectionné dans la richtextbox. − LinkClicked : lorsque l'utilisateur clique sur un lien dans le texte de la richtextbox.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 32/103

32 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : SAISIE DE TEXTE AVEC POSSIBILITE DE MODIFIER SON STYLE

MISE EN GRAS/NORMAL D’UNE SELECTION DE TEXTE :

// --------------------------------------------------------------------

// l'utilisateur veut mettre en gras ou en normal sa sélection de texte

// --------------------------------------------------------------------

private: System::Void grasToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ // récupération de la police de la zone sélectionnée

System::Drawing::Font^currentFont = rtxtSaisie->SelectionFont;

// déclaration du nouveau style à appliquer à la sélection

System::Drawing::FontStyle newFontStyle;

// si la sélection est en gras

if (rtxtSaisie->SelectionFont->Bold)

{ // définir un style normal

newFontStyle = FontStyle::Regular;

//changer intitulé menu contextuel

grasToolStripMenuItem->Text="gras";

}

else // si sélection pas en gras

{ // définir un style gras

newFontStyle = FontStyle::Bold;

//changer intitulé menu contextuel

grasToolStripMenuItem->Text="normal";

}

// application du nouveau style à la

police du texte sélectionné

rtxtSaisie->SelectionFont = gcnew

System::Drawing::Font( currentFont->

FontFamily,currentFont->

Size,newFontStyle );

// la police passe en vert

rtxtSaisie->SelectionColor =

Color::Green;

}

DEPLACER UNE SELECTION DE TEXTE :

// ------------------------------------

// l'utilisateur veut couper

private: System::Void

couperToolStripMenuItem_Click(System::O

bject^ sender, System::EventArgs^ e)

{ rtxtSaisie->Cut(); }

// ------------------------------------

// l'utilisateur veut coller

private: System::Void

collerToolStripMenuItem_Click(System::O

bject^ sender, System::EventArgs^ e)

{ rtxtSaisie->Paste(); }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 33/103

33 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

2.5- Le composant NUMERICUPDOWN

� MEMBRES DE LA CLASSE NUMERICUPDOWN (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.numericupdown_members(VS.80).aspx

Le contrôle NumericUpDown permet d'incrémenter ou de décrémenter une valeur numérique à l'aide de boutons (flèche vers le haut ou vers le bas).

2.5.1- L’apparence d’un numericupdown

Comment changer l’aspect d’un numericupdown ? � Propriétés :

− BackColor : couleur d'arrière-plan de la zone de sélection numérique. − BorderStyle : type de bordure de la zone de sélection numérique.

− UpDownAlign : alignement des boutons HAUT et BAS sur le control. − ReadOnly : indique si le texte ne peut être modifié qu'avec les boutons HAUT et BAS. − InterceptArrowKeys : indique si l'utilisateur peut utiliser les touches HAUT et BAS

pour sélectionner des valeurs.

− Font : police du texte affiché par la zone de sélection numérique. − ForeColor : couleur du texte dans la zone de sélection numérique. − TextAlign : alignement de texte dans la zone de sélection numérique.

− DecimalPlaces : nombre de décimales à afficher dans la zone de sélection numérique − Hexadecimal : indique si la zone de sélection numérique utilise le format hexadécimal. − ThousandsSeparator : indique si le séparateur des milliers est affiché. − Minimum : valeur minimale de la zone de sélection numérique. − Maximum : valeur maximale de la zone de sélection numérique.

2.5.2- Le fonctionnement d’un numericupdown

Comment actionner un numericupdown ? � Propriétés :

− Value : valeur assignée à la zone de sélection numérique. − Increment : valeur pour incrémenter ou décrémenter la zone de sélection numérique

lors d'un clic sur les boutons haut ou bas. − TabStop : indique si l'utilisateur peut donner le focus au control avec TAB. − TabIndex : ordre de tabulation de la zone de sélection numérique dans son conteneur.

� Méthodes : − DownButton() : décrémente la valeur de la zone de sélection numérique. − UpButton() : incrémente la valeur de la zone de sélection numérique.

� Evènements : − ValueChanged : se produit lorsque la propriété Value a été modifiée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 34/103

34 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3- Les composants de saisie d’options

3.1- Le composant CHECKBOX

� MEMBRES DE LA CLASSE CHECKBOX (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.checkbox_members(VS.80).aspx

La classe CheckBox est une case à cocher dérive qui permet de faire un choix d’options avec le click gauche de la souris. Une case à cocher inaccessible est grisée.

3.1.1- L’apparence d’un checkbox

Comment changer l’aspect d’un checkbox ?

� Propriétés : − Appearance : présentation d'une checkbox sous forme de case à cocher ou de bouton. − FlatStyle : apparence de la checkbox. Valeurs possibles :

Flat la checkbox s'affiche sous une forme à deux dimensions. Popup la checkbox s'affiche sous une forme à deux dimensions et, si la souris

arrive à sa hauteur, il prend alors une forme à trois dimensions. Standard la checkbox s'affiche sous une forme à trois dimensions. System L'apparence de la checkbox est déterminée par l’OS.

− FlatAppearence : apparence de la bordure et couleurs pour indiquer les états d'activation du bouton et de la souris (propriétés FlatStyle=Flat et Appearance=Button) :

⋅ Propriété BorderColor : couleur de bordure du bouton. ⋅ Propriété BorderSize : taille, en pixels, de la bordure du bouton. ⋅ Propriété MouseDownBackColor : couleur du bouton si un clic est fait dessus. ⋅ Propriété MouseOverBackColor : couleur du bouton si la souris passe dessus.

− AutoSize : indique si la checkbox est redimensionnée en fonction de son contenu. − Padding : espacement interne, en pixels, entre le contenu de la checkbox et ses bords.

− BackColor : couleur d'arrière-plan de la checkbox. − BackgroundImage : image d'arrière-plan affichée dans la case à cocher. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

− CheckAlign : alignement horizontal et vertical d'une coche dans une checkbox. − Text : texte de la checkbox. − TextAlign : alignement du texte. − Font : police du texte affiché sur la checkbox. − ForeColor : couleur du texte. − TextImageRelation : positions relatives du texte et de l'image sur la checkbox.

− Image : image affichée sur la checkbox. − ImageAlign : façon dont l’image est affichée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 35/103

35 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− ImageList : composant imagelist avec des images pour la checkbox. Pour utiliser ces images, il faut aussi fixer les propriétés ImageIndex ou ImageKey. Quelques propriétés :

− ImageIndex : indice de l’image (dans l’imagelist associé) à afficher dans la checkbox. − ImageKey : nom de l’image (de l’imagelist) à afficher dans la checkbox.

3.1.2- Le fonctionnement de checkbox

Comment récupérer la sélection d’un checkbox ? � Propriétés :

− ThreeState : indique si la checkbox autorise trois états d'activation au lieu de deux. − AutoCheck : indique si les propriétés Checked ou CheckState et l'apparence de la

checkbox sont automatiquement modifiées lorsque l'utilisateur clique. − CheckState : indique si la checkbox est à l'état coché ou décoché par défaut. − Checked : indique si la checkbox est cochée ou décochée. − Enabled : indique si la checkbox peut interagir avec l’utilisateur (grisé ou non).

− TabStop : indique si l'utilisateur peut donner le focus à la checkbox avec TAB. − TabIndex : ordre de tabulation de la checkbox dans son conteneur.

� Evènements : − CheckedChanged : se produit lorsque la valeur de la propriété Checked change.

Exemple : COCHAGE/DECOCHAGE MULTIPLE DE CASES A COCHER

REACTION COMMUNE A UN CLIC SUR UNE DES CHECKBOX :

// -------------------------------------------------------------

// gestionnaire d'évènement commun à toutes les cases à cocher

/* POUR DONNER UN NOM GENERIQUE AU GESTIONNAIRE D'EVENEMENT :

1) changer nom de la fonction ici: Admin_CheckedChanged->User_CheckedChanged

2) lier ce gestionnaire aux évènements CheckedChanged de toutes les

CheckBox: les ajouter dans la fenêtre de propriété, bouton évènement, combobox

en face du CheckedChanged */

// -------------------------------------------------------------

private: System::Void User_CheckedChanged(System::Object^ sender,

System::EventArgs^ e) {

// conversion du composant qui a reçu

l'évènement en CheckBox

CheckBox^caseCocher=safe_cast<CheckBox^>(sender)

;

// affichage coché ou décoché, en fonction du

nouvel état d'activation de la CheckBox

if ( caseCocher->Checked == true )

MessageBox::Show(caseCocher->Text+" coché");

else

MessageBox::Show(caseCocher->Text+"décoché");

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 36/103

36 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.2- Le composant CHECKEDLISTBOX

� MEMBRES DE LA CLASSE CHECKEDLISTBOX (System::Windows::Forms) : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.checkedlistbox_members(VS.80).aspx

La classe CheckedListBox est une liste à cocher, qui permet une sélection unique ou des sélections multiples facilitées, en proposant les mêmes fonctionnalités qu'une listbox. Un point intéressant par rapport à la checkbox est que ce composant est scrollable.

3.2.1- L’apparence d’un checkedlistbox

Comment changer l’aspect d’un checkedlistbox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la liste à cocher. − BorderStyle : type de bordure de la liste à cocher. − IntegralHeight : indique si le contrôle doit être redimensionné pour éviter d'afficher

partiellement des éléments. − HorizontalScrollbar : indique si une barre de défilement horizontale est affichée. − HorizontalExtent : largeur sur laquelle la barre de défilement horizontale peut défiler. − ScrollAlwaysVisible : indique si la barre de défilement verticale est toujours affichée.

− MultiColumn : indique si la liste à cocher prend en charge les colonnes multiples. − ColumnWidth : largeur des colonnes dans une liste à cocher multicolonne. − CheckOnClick : indique si la case à cocher doit être basculée suite à un clic dessus.

− Font : police du texte affiché dans la liste à cocher. − ForeColor : couleur du texte. − Sorted : indique si les éléments de la liste à cocher sont triés dans l'ordre alphabétique.

3.2.2- Le fonctionnement d’un checkedlistbox

Comment récupérer la sélection dans un checkedlistbox ? � Propriétés :

− SelectedIndex : indice de l'élément actuellement sélectionné dans la liste à cocher. − SelectedItem : intitulé de l’élément actuellement sélectionné dans la liste à cocher. − Items : collection d'éléments de la liste à cocher : http://msdn.microsoft.com/fr-

fr/library/system.windows.forms.checkedlistbox.objectcollection_members(VS.80).aspx − TabStop : indique si l'utilisateur peut donner le focus à la liste à cocher avec TAB. − TabIndex : ordre de tabulation de la liste à cocher dans son conteneur.

� Méthodes : − GetItemChecked(index) : indique si l'élément spécifié par l’index est coché.

� Evènements : − ItemCheck : se produit lorsque l'état d'activation d'un élément de la liste à cocher

change. Le paramètre ItemCheckEventArgs de son gestionnaire d’évènement a pour Propriétés : l'indice de la case à cocher sélectionnée (Index), la valeur précédente de cette case (CurrentValue) et sa nouvelle valeur (NewValue) : CheckState::Checked, CheckState::Unchecked.

− SelectedIndexChanged : se produit lorsque la propriété SelectedIndex a été modifiée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 37/103

37 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : COCHAGE/DECOCHAGE MULTIPLE DE CASES A COCHER

RECUPERATION DES INFORMATIONS SUR LA CASE CLIQUE PAR LA LISTE A COCHER :

// --------------------------------------------------------------

// Récupération de la case cliquée et de son état (coché/décoché)

// --------------------------------------------------------------

private: System::Void chklMatieres_SelectedIndexChanged(System::Object^

sender, System::EventArgs^ e) {

// construction chaîne d'information

String ^info= "sélection : ";

// récupération indice de la case

cliquée dans la liste à cocher

info= info + chklMatieres->

SelectedIndex.ToString();

// récupération intitulé case cliquée

info= info + " - " + chklMatieres->

SelectedItem;

// récupération de l'état de la case

cliquée : cochée ou non

if ( chklMatieres-> GetItemChecked(

chklMatieres-> SelectedIndex)==true )

info= info + " - coché";

else

info= info + " - décoché";

MessageBox::Show(info);

}

RECUPERATION DES INFORMATIONS SUR LA CASE CLIQUE PAR UN EVENEMENT :

// --------------------------------------------------------------

// Récupération de la case cliquée et de son état (coché/décoché)

// --------------------------------------------------------------

private: System::Void chklMatieres_ItemCheck(System::Object^ sender,

System::Windows::Forms::ItemCheckEventArgs^ e) {

// construction chaîne d'information

String ^info= "sélection : ";

// récupération indice de la case

cliquée dans la liste à cocher

info= info + e->Index.ToString();

// récupération de l'intitulé de la

case cliquée

info= info + " - " + chklMatieres->

Items[e->Index]->ToString();

// récupération de l'état de la case

cliquée : cochée ou non

if(e->NewValue==CheckState::Checked)

info= info + " - coché";

else

info= info + " - décoché";

MessageBox::Show(info);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 38/103

38 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.3- Le composant COMBOBOX

� MEMBRES DE LA CLASSE COMBOBOX (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.combobox_members(VS.80).aspx

La classe ComboBox est la combinaison d’une liste déroulante (ListBox) et d'une zone d’édition (TextBox). Elle permet de faire un choix unique dans une liste de choix.

3.3.1- L’apparence d’une combobox

Comment changer l’aspect d’une combobox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la combobox. − IntegralHeight : redimensionnement pour éviter d'afficher des éléments partiellement. − FlatStyle : apparence de la combobox. Valeurs possibles :

Flat la combobox s'affiche sous une forme à deux dimensions. Popup la combobox s'affiche sous une forme à deux dimensions et, si la souris

arrive à sa hauteur, il prend alors une forme à trois dimensions. Standard la combobox s'affiche sous une forme à trois dimensions. System L'apparence de la combobox est déterminée par l’OS.

− MaxDropDownItems : maximum d'éléments pour la liste déroulante de la combobox. − MaxLength : nombre maximal de caractères autorisés dans la zone d’édition. − Sorted : indique si les éléments dans la combobox sont triés.

− Text : texte de la combobox. − Font : police du texte. − ForeColor : couleur du texte.

− AutoCompleteMode : type de saisie de texte dans la combobox. Valeurs possibles : Append Ajoute le reste de la chaîne des candidats les plus probables aux

caractères existants, avec les caractères ajoutés en surbrillance. None Désactive la fonctionnalité de saisie semi-automatique. Suggest Affiche la liste déroulante auxiliaire (chaînes de saisie semi-

automatique suggérées) associée au contrôle d'édition. SuggestAppend Applique à la fois les options Suggest et Append.

− AutoCompleteSource : source de chaînes complètes utilisées pour la saisie semi-automatique. Quelques valeurs possibles : AllSystemSources Spécifie l'équivalent de FileSystem et AllUrl comme source. AllUrl Source= HistoryList et RecentlyUsedList. CustomSource Sources = chaînes d'un AutoCompleteStringCollection intégré. FileSystem Spécifie le système de fichiers comme source. FileSystemDirectories seuls les noms de répertoire (pas les noms de fichier) complétés. ListItems Source= éléments d’une combobox. None aucun AutoCompleteSource n'est en cours d'utilisation.

− AutoCompleteCustomSource : collection de chaînes personnalisées à utiliser lorsque la propriété AutoCompleteSource a la valeur CustomSource.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 39/103

39 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.3.2- Le fonctionnement d’une combobox

Comment récupérer la sélection dans une combobox ? � Propriétés :

− DropDownStyle : style de la combobox. Valeurs possibles : DropDown La partie texte est modifiable. L'utilisateur doit cliquer sur le bouton

fléché pour afficher la partie liste. DropDownList L'utilisateur ne peut pas modifier la partie texte. L'utilisateur doit

cliquer sur le bouton fléché pour afficher la partie liste, qui ne s'affiche que si AutoCompleteMode est Suggest ou SuggestAppend.

Simple La partie texte est modifiable. La partie liste est toujours visible. − Items : collection d'éléments de la combobox : http://msdn.microsoft.com/fr-

fr/library/system.windows.forms.combobox.objectcollection_members(VS.80).aspx

− SelectedIndex : indice de l'élément actuellement sélectionné dans la combobox. − SelectedItem : intitulé de l’élément actuellement sélectionné dans la combobox. − TabStop : indique si l'utilisateur peut aller sur la combobox avec TAB. − TabIndex : ordre de tabulation de la combobox dans son conteneur.

� Evènements : − SelectedIndexChanged : se produit lorsque la propriété SelectedIndex a été modifiée. − TextChanged : se produit lorsque la valeur de la propriété Text est modifiée.

Exemple : RECUPERATION DU CHOIX DANS UNE COMBOBOX L’UTILISATEUR PEUT CHOISIR UN PAYS DANS LA LISTE OU LE TAPER LUI-MEME DANS LA ZONE D’EDITION :

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 40/103

40 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

REACTION A UN CHANGEMENT DE SELECTION DANS LA LISTE ET AFFICHAGE DANS UNE MESSAGEBOX (CE GESTIONNAIRE N’EST PAS EXECUTE SI LE TEXTE EST MODIFIE DANS LA ZONE D’EDITION) :

// -------------------------------------------------

// Récupération de l'élément choisi dans la combobox

// -------------------------------------------------

private: System::Void cbPays_SelectedIndexChanged(System::Object^ sender,

System::EventArgs^ e)

{ // construction chaîne d'information

String ^info= "sélection : ";

// récupération indice de l'élément cliqué dans la combobox

info= info + "("+ cbPays-> SelectedIndex.ToString() + ")";

// récupération intitulé option choisie

info= info + " - DANS LA LISTE : " + cbPays-> SelectedItem;

// récupération texte dans la zone d'édition

info= info + " - DANS LA ZONE DE TEXTE : " + cbPays-> Text;

MessageBox::Show(info); // affichage information

}

REACTION A UN CHANGEMENT DE TEXTE DANS LA ZONE D’EDITION ET AFFICHAGE DANS UNE TEXTBOX (SEULE LA PROPRIETE TEXTE PERMET DE RECUPERER LE CHOIX DE L’UTILISATEUR) :

// -------------------------------------------

// Récupération du texte tapé dans la combobox

// -------------------------------------------

private: System::Void cbPays_TextChanged(System::Object^ sender,

System::EventArgs^ e)

{ // construction chaîne d'information

String ^info= "sélection : ";

// récupération indice de l'élément cliqué dans la combobox

info= info + "("+ cbPays-> SelectedIndex.ToString() + ")";

// récupération intitulé option choisie

info= info + " - DANS LA LISTE : " + cbPays-> SelectedItem;

// récupération texte dans la zone d'édition

info= info + " - DANS LA ZONE DE TEXTE : " + cbPays-> Text;

txtInfo->Text= info; // affichage information

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 41/103

41 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.4- Le composant LISTBOX

� MEMBRES DE LA CLASSE LISTBOX (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.listbox_members(VS.80).aspx

La classe ListBox permet d'afficher une liste d'éléments dans laquelle l'utilisateur peut sélectionner un ou plusieurs éléments avec la souris.

3.4.1- L’apparence d’une listbox

Comment changer l’aspect d’une listbox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la listbox. − BorderStyle : type de bordure de la listbox. − MultiColumn : indique si la listbox prend en charge les colonnes multiples. − ColumnWidth : largeur des colonnes dans une listbox multicolonne. − Font : police du texte. − ForeColor : couleur du texte. − IntegralHeight : redimensionnement pour éviter d'afficher partiellement des éléments. − HorizontalScrollbar : indique si une barre de défilement horizontale est affichée. − HorizontalExtent : largeur sur laquelle la barre de défilement horizontale peut défiler. − ScrollAlwaysVisible : indique si la barre de défilement verticale est toujours affichée. − Items : collection d'éléments de la listbox : http://msdn.microsoft.com/fr-

fr/library/system.windows.forms.listbox.objectcollection_members(VS.80).aspx − Sorted : indique si les éléments dans la listbox sont triés.

3.4.2- Le fonctionnement d’une listbox

Comment récupérer la sélection dans une listbox ? � Propriétés :

� SelectionMode : mode de sélection dans la listbox. Valeurs possibles : MultiExtended sélections multiples avec les touches MAJ, CTRL et les flêches. MultiSimple Plusieurs éléments peuvent être sélectionnés. None Aucun élément ne peut être sélectionné. One Un seul élément peut être sélectionné.

− SelectedIndex : indice de l'élément actuellement sélectionné dans la listbox. − SelectedItem : intitulé de l’élément actuellement sélectionné dans la listbox. − SelectedItems : collection des éléments actuellement sélectionnés dans la listbox. − SelectedIndices : collection des indices des éléments sélectionnés dans la listbox. − TabStop : indique si l'utilisateur peut aller sur la listbox avec TAB. − TabIndex : ordre de tabulation de la listbox dans son conteneur.

� Méthodes : − ClearSelected() : désélectionne tous les éléments de la listbox. − GetSelected(index) : indique si l'élément spécifié est sélectionné.

� Evènements : − SelectedIndexChanged : se produit lorsque la propriété SelectedIndex a été modifiée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 42/103

42 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : RECUPERATION DE SELECTIONS MULTIPLES DANS UNE LISTBOX

RECUPERATION D’UNE SIMPLE SELECTION DANS LA LISTBOX :

// ----------------------------------------------------------------

// Récupération du ou des élément(s) sélectionné(s) dans la listbox

// ----------------------------------------------------------------

private: System::Void lstPays_SelectedIndexChanged(System::Object^ sender,

System::EventArgs^ e) {

// chaîne d'info à afficher dans 1 TextBox

String ^info;

// si un seul élément a été sélectionné

if (lstPays->SelectedIndices->Count==1)

{ // construction chaîne d'information

info= "sélection unique : ";

//récupération indice élément cliqué

info= info + "("+ lstPays->

SelectedIndex.ToString() + ")";

// récupération intitulé option choisie

info= info + " - DANS LA LISTE : " +

lstPays-> SelectedItem;

}

RECUPERATION D’UNE SELECTION MULTIPLE DANS LA LISTBOX :

// si une sélection multiple a été opérée

if ( lstPays->SelectedIndices->Count > 1)

{ // récupération nombre de sélections

info=lstPays->SelectedIndices-> Count

.ToString() + " sélections : " + "\r\n";

//récupération indices élts cliqués

for (int i=0;i<lstPays->

SelectedIndices->Count;i++)

{ info= info + "("+ lstPays->

SelectedIndices[i].ToString() + ")";

// intitulé des options choisies

info= info + " - DANS LA LISTE : "

+ lstPays-> SelectedItems[i]+"\r\n";

}

}

// affichage infos dans une TextBox

txtInfo->Text= info;

// si frane choisie, MessageBox s'ouvre

if(lstPays->GetSelected(1)==true)

MessageBox::Show("France

sélectionnée !");

}

// ---------------------------------

// sélections de la ListBox effacées

// ---------------------------------

private: System::Void btnPays_Click

(System::Object^sender, System::EventArgs^e)

{ lstPays-> ClearSelected(); }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 43/103

43 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.5- Le composant RADIOBUTTON

� MEMBRES DE LA CLASSE RADIOBUTTON (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.radiobutton_members(VS.80).aspx

La classe RadioButton permet de réaliser des boutons radios, permettant de faire une sélection unique parmi plusieurs choix.

3.5.1- L’apparence d’un radiobutton

Comment changer l’aspect d’un radiobutton ? � Propriétés :

− Appearance : présentation d'un radiobutton sous forme de case à cliquer ou de bouton. − FlatStyle : apparence du radiobutton. Valeurs possibles :

Flat le radiobutton s'affiche sous une forme à deux dimensions. Popup le radiobutton s'affiche sous une forme à deux dimensions et, si la souris

arrive à sa hauteur, il prend alors une forme à trois dimensions. Standard le radiobutton s'affiche sous une forme à trois dimensions. System L'apparence du radiobutton est déterminée par l’OS.

− FlatAppearence : apparence de la bordure et couleurs pour indiquer les états d'activation du bouton et de la souris (propriétés FlatStyle=Flat et Appearance=Button) :

⋅ Propriété BorderColor : couleur de bordure du bouton. ⋅ Propriété BorderSize : taille, en pixels, de la bordure du bouton. ⋅ Propriété MouseDownBackColor : couleur du bouton si un clic est fait dessus. ⋅ Propriété MouseOverBackColor : couleur du bouton si la souris passe dessus.

− AutoSize : indique si le radiobutton est redimensionnée en fonction de son contenu. − Padding : espacement interne, en pixels, entre le contenu du radiobutton et ses bords.

− BackColor : couleur d'arrière-plan du radiobutton. − BackgroundImage : image d'arrière-plan affichée dans le radiobutton. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

− CheckAlign : alignement horizontal et vertical d'une coche dans un radiobutton. − Text : texte du radiobutton. − TextAlign : alignement du texte. − Font : police du texte affiché sur le radiobutton. − ForeColor : couleur du texte. − TextImageRelation : positions relatives du texte et de l'image sur le radiobutton.

− Image : image affichée sur le radiobutton. − ImageAlign : façon dont l’image est affichée. − ImageList : composant imagelist avec des images pour le radiobutton. Pour utiliser ces

images, il faut aussi fixer les propriétés ImageIndex ou ImageKey. Quelques propriétés : − ImageIndex : indice de l’image (dans l’imagelist associé) à afficher dans le radiobutton. − ImageKey : nom de l’image (de l’imagelist) à afficher dans le radiobutton.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 44/103

44 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

3.5.2- Le fonctionnement de radiobutton

Comment récupérer la sélection avecdes radiobutton ? � Propriétés :

− AutoCheck : indique si les propriétés Checked et l'apparence du radiobutton sont automatiquement modifiées lorsque l'utilisateur clique.

− Checked : indique si le radiobutton est coché ou décoché. − Enabled : indique si le radiobutton peut interagir avec l’utilisateur (grisé ou non). − TabStop : indique si l'utilisateur peut donner le focus au radiobutton avec TAB. − TabIndex : ordre de tabulation du radiobutton dans son conteneur.

� Evènements : − CheckedChanged : se produit lorsque la valeur de la propriété Checked change.

Exemple : SELECTION D’UNE OPTION AVEC DES RADIOBUTTON

RECUPERATION DU CHOIX DE L’UTILISATEUR AVEC UN GESTIONNAIRE COMMUN :

// -------------------------------------------------------------

// gestionnaire d'évènement commun à tous les boutons radio

/* POUR DONNER UN NOM GENERIQUE AU GESTIONNAIRE D'EVENEMENT :

1) changer nom de la fonction ici:

rbtnAllemagne_CheckedChanged DEVIENT rbtnPays_CheckedChanged

2) lier ce gestionnaire aux évènements CheckedChanged de tous les

RadioButton: sélectionner ensemble tous les radiobutton, aller dans la

fenêtre de propriété, bouton évènement, en face du CheckedChanged choisir

le bon gestionnaire dans la liste */

// -------------------------------------------------------------

private: System::Void rbtnPays_CheckedChanged(System::Object^ sender,

System::EventArgs^ e)

{ // conversion du composant qui a reçu l'évènement en RadioButton

RadioButton ^ boutonRadio=safe_cast<RadioButton^>(sender);

// affichage sélectionné ou dé-sélectionné, en fonction du nouvel état

d'activation du RadioButton

if ( boutonRadio->Checked == true )

txtInfo->Text=txtInfo->Text+boutonRadio->Text+" sélectionné\r\n";

else

txtInfo->Text=txtInfo->Text+boutonRadio->Text+"dé-sélectionné\r\n";

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 45/103

45 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

4- Les composants de choix d’actions sur l’interface

4.1- Le composant BUTTON

� MEMBRES DE LA CLASSE BUTTON (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.button_members(VS.80).aspx La classe Button permet de déclencher une action, généralement par un click avec le bouton gauche de la souris.

4.1.1- L’apparence d’un button

Comment changer l’aspect d’un button ?

� Propriétés :

− BackColor : couleur d'arrière-plan du bouton. − BackgroundImage : image d'arrière-plan affichée dans le bouton. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

− FlatStyle : style à deux dimensions du bouton.

Valeurs possibles : Flat Le bouton s'affiche sous une forme à deux dimensions. Popup Le bouton s'affiche sous une forme à deux dimensions et si la

souris passe au-dessus, il prend alors une forme à trois dimensions. Standard Le bouton s'affiche sous une forme à trois dimensions. System L'apparence du bouton est déterminée par l’OS.

− FlatAppearence : apparence de la bordure et couleurs utilisées pour indiquer l'état d'activation du bouton et celui de la souris (si la propriété FlatStyle est Flat). Membres :

⋅ Propriété BorderColor : couleur de bordure du bouton. ⋅ Propriété BorderSize : taille, en pixels, de la bordure du bouton. ⋅ Propriété MouseDownBackColor : couleur du bouton si un clic est fait dessus. ⋅ Propriété MouseOverBackColor : couleur du bouton si la souris passe dessus.

− Text : texte sur le bouton. − TextAlign : alignement du texte sur le bouton. − Font : police du texte affiché sur le bouton.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 46/103

46 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− ForeColor : couleur du texte sur le bouton. − Padding : position du texte du bouton dans le bouton. − UseMnemonic : indique si un et commercial (&) peut figurer dans le texte du bouton. − TextImageRelation : positions relatives du texte et de l'image sur le bouton. − Image : image affichée sur le bouton. − ImageAlign : façon dont l’image est affichée. − ImageList : composant imagelist avec des images pour le bouton. Pour utiliser ces

images, il faut aussi fixer les propriétés ImageIndex ou ImageKey. Quelques propriétés de cette classe :

⋅ ColorDepth : profondeur (nombre) de couleur disponibles pour les images. ⋅ TransparentColor : couleur à traiter comme transparente. ⋅ Imagesize : taille des images dans la liste d'images, 16x16 ici. ⋅ Images : collection d’images de l’imagelist. Renseigner la propriété Name de

chaque image, afin d'y accéder facilement par la suite (correspond au Key) : imgPC→Images["RAM"] ou imgPC→Images[0].

− ImageIndex : indice de l’image (dans l’imagelist associé) à afficher dans le bouton. − ImageKey : nom de l’image (de l’imagelist) à afficher dans le bouton. − AutoSize : indique si le bouton est redimensionné en fonction de son contenu. − AutoSizeMode : mode qui permet de redimensionner automatiquement le bouton.

Valeurs possibles : GrowAndShrink Le bouton s’agrandit ou diminue pour s'adapter à son contenu. GrowOnly Le bouton s'agrandit autant que nécessaire pour s'adapter à son

contenu mais ne diminue pas en-dessous de sa propriété Size.

− Cursor : curseur qui est affiché lorsque le pointeur de la souris se trouve sur le bouton.

4.1.2- Le fonctionnement d’un button

Comment traiter l’action sur un button ?

� Propriétés :

− TabStop : indique si l'utilisateur peut octroyer le focus au bouton avec la touche TAB. − TabIndex : ordre de tabulation du bouton dans son conteneur. − DialogResult : valeur qui est retournée au formulaire parent lorsque l'utilisateur clique

sur le bouton.

� Méthodes : − Focus() : définit le focus d'entrée sur le bouton.

� Evènements : − Click : se produit suite à un clic sur le bouton.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 47/103

47 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

4.2- Le composant MENUSTRIP

� MEMBRES DE LA CLASSE MENUSTRIP (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.menustrip_members(VS.80).aspx

La classe MenuStrip permet de créer des menus. Les noms des menus sont écrits directement sur la barre du menu dans le concepteur. Il est possible d'associer une image à un élément de menu. Ne renommer que le composant MenuStrip principal,

avant d’ajouter les éléments de menu.

4.2.1- La configuration d’un menustrip

Comment remplir un menustrip ?

� Propriétés : − BackColor : couleur d'arrière-plan du menu. − BackgroundImage : image d'arrière-plan affichée dans le menu. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée. − Dock : ancre la statusstrip respectivement en bas, à gauche, à droite ou en haut du

formulaire. Valeurs possibles : Bottom bord inférieur du contrôle ancré à la partie inférieure du formulaire. Fill bords du contrôle ancrés aux bords du formulaire. Left bord gauche ancré au bord gauche du formulaire. None Le statusstrip n'est pas ancré. Right bord droit du contrôle ancré au bord droit du formulaire. Top bord supérieur du contrôle ancré à la partie supérieure du formulaire.

− LayoutStyle : indique comment les éléments sont disposés sur le menustrip.

Valeurs possibles : Flow flux horizontal ou vertical des éléments. HorizontalStackWithOverflow disposition horizontale avec dépassement éventuel. StackWithOverflow disposition automatique des éléments. Table alignement à gauche des éléments. VerticalStackWithOverflow disposition verticale des éléments avec un centrage

dans le statusstrip et dépassement éventuel.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 48/103

48 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− RenderMode : style de peinture de la barre de statut. Valeurs possibles : ManagerRenderMode, Professional, System.

− Padding : espacement interne, en pixels, entre le contenu du toolstrip et ses bords. − Text : intitulé du menu (en haut). & devant un caractère dans Text indique la lettre à

mettre après la touche ALT pour accéder à ce menu, en cas de panne de souris. − Font : police du texte affiché dans le menu. − TextDirection : orientation du texte.

Valeurs possibles : Horizontal orientation horizontale du texte. Vertical270 le texte doit pivoter de 270 degrés. Vertical90 le texte doit pivoter de 90 degrés

− ShowItemToolTips : indique si les info-bulles sont affichées pour le menustrip.

− Items : collection des éléments (ToolStripItem) qui appartiennent à un menustrip :

ToolStripMenuItem, ToolStripComboBox ou ToolStripTextBox.

⋅ Item ToolStripComboBox : zone de texte avec liste déroulante contenue

dans un menustrip. Cette classe possède différents membres ((http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripcombobox_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripTextBox : zone de texte contenue dans un menustrip. Cette

classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstriptextbox_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripMenuItem : élément de menu contenue dans un menustrip.

Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripmenuitem_members(VS.80).aspx) :

o Propriété BackColor : couleur d'arrière-plan de l’élément de menu. o Propriété BackgroundImage : image d'arrière-plan. o Propriété BackgroundImageLayout : affichage de cette image.

o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espace entre les bords du menuitem et son contenu.

o Propriété Font : police du texte affiché par l’élément de menu. o Propriété ForeColor : couleur du texte dans l’élément de menu. o Propriété Text : texte dans l’élément de menu. o Propriété TextAlign : alignement du texte dans l’élément de menu. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 49/103

49 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés. Valeurs possibles :

Image seule une image doit être affichée. ImageAndText à la fois une image et le texte sont affichés. None ni une image ni le texte ne sont affichés. Text seul le texte est affiché.

o Propriété Image : image affichée dans l’élément de menu. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image.

Valeurs possibles : None la taille de l'image ne s'ajuste pas automatiquement à son conteneur. SizeToFit la taille de l'image s'ajuste automatiquement à son conteneur.

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur

l’item. Pour voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du menustrip.

o Propriété DropDownItems : collection d'éléments du menuitem ; grâce à

l’éditeur de collection, on peut ajouter : MenuItem, ComboBox, Separator, TextBox et configurer les propriétés de ces composants.

4.2.2- Le fonctionnement d’un menustrip

Comment réagir aux choix dans le menustrip ? � Propriétés :

− Items : collection des éléments (ToolStripItem) qui appartiennent à un menustrip : ToolStripMenuItem, ToolStripComboBox ou ToolStripTextBox.

⋅ Item ToolStripMenuItem : élément de menu contenue dans un menustrip.

Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripmenuitem_members(VS.80).aspx) :

o Propriété CheckState : indique si l’élément de menu est à l'état coché ou

décoché par défaut. o Propriété Checked : indique si l’élément de menu est coché ou décoché. o Propriété CheckOnClick : indique si l’élément de menu doit apparaître

activé ou désactivé lorsqu'un clic est effectué dessus (élément à 2 états). o Propriété ShortcutKeys : touches de raccourci clavier associées à

l’élément de menu. o Propriété ShortcutKeyDisplayString : texte de la touche de raccourci. o Propriété ShowShortcutKeys : indique si les touches de raccourci

clavier associées à l’élément de menu sont affichées à côté de l’élément de menu.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 50/103

50 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Evènement Click : se produit suite à un clic sur un élément de menu. Avec le gestionnaire d’évènement associé, il est possible de programmer individuellement les réactions au clic sur chaque élément de menu. Pour ouvrir le gestionnaire d’évènement, double cliquer sur l’élément de menu. Pour faire un seul gestionnaire d’évènement pour plusieurs éléments de menu, voir l’exemple plus loin.

� Evènements :

− ItemClicked : clic sur un item du menustrip (MenuItem, ComboBox, Separator ou TextBox). Le gestionnaire d’évènement associé permet de traiter l’ensemble des clics sur tous les menuitem. La classe ToolStripItemClickedEventArgs et la propriété ClickedItem permettent d’identifier sur quel menuitem on a cliqué (intitulé menu du haut).

Exemple : FONCTIONNEMENT D’UN MENUSTRIP REACTION A UN CLIC SUR UN INTITULE DE MENU EN HAUT : // -------------------------------------------------------------

// gestionnaire d'évènement unique de tous les item du menustrip

// traite les menus de haut niveau

// -------------------------------------------------------------

private: System::Void mnDessin_ItemClicked(System::Object^ sender,

System::Windows::Forms::ToolStripItemClickedEventArgs^ e) {

// identification de l'item (ici

menu général) sur lequel

l'utilisateur a cliqué

if (e->ClickedItem->Text ==

"&Fichier")

MessageBox::Show("Fichier");

else if (e->ClickedItem->Text ==

"&Couleurs")

MessageBox::Show("Couleurs");

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 51/103

51 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

REACTIONS INDIVIDUALISEES AUX CLICS SUR UN DES ELEMENT DE MENU :

// --------------------------------

// gestionnaire d'évènement

individualisés des éléments de menu

// --------------------------------

private: System::Void

bleuToolStripMenuItem_Click(System::Obje

ct^ sender, System::EventArgs^ e)

{ MessageBox::Show("Bleu"); }

private: System::Void

rougeToolStripMenuItem_Click(System::Obj

ect^ sender, System::EventArgs^ e)

{ MessageBox::Show("Rouge"); }

REACTION COMMUNE AUX CLICS SUR UN DES ELEMENT DE MENU :

// -------------------------------------------------------------

// gestionnaire d'évènement commun à plusieurs éléments de menu

/* Ce gestionnaire d'évènement doit-être lié aux évènements click de tous les

éléments de menu concernés : les ajouter dans la fenêtre de propriété, bouton

évènement, combobox en face du Click */

// POUR DONNER UN NOM GENERIQUE AU GESTIONNAIRE D'EVENEMENT :

/* 1) changer le nom de la fonction ici :

ouvrirToolStripMenuItem_Click -> FichierToolStripMenuItem_Click 2) lier le nouveau gestionnaire aux évènements click des éléments

de menu dans la fenêtre de propriétés, bouton évènement

3) SI ERREUR, plus haut dans le fichier (dans la partie description

de Form1),changer le nom du gestionnaire d'évènement sous // Form1

this->Click+=gcnew

System::EventHandler(this,&Form1::FichierToolStripMenuItem_Click); */

// -------------------------------------------------------------

private: System::Void FichierToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{

// transformation du sender en

élément de menu

ToolStripMenuItem ^ elementMenu=

safe_cast <ToolStripMenuItem ^>

(sender);

// traitement de chaque élément de

menu, différenciation par le sender

if ( elementMenu->Text == "Ouvrir" )

MessageBox::Show("Ouvrir");

else if(elementMenu->Text=="Quitter")

MessageBox::Show("Quitter");

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 52/103

52 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

4.3- Le composant CONTEXTMENUSTRIP

� MEMBRES DE LA CLASSE CONTEXTMENUSTRIP (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.contextmenustrip_members(VS.80).aspx

La classe ContextMenuStrip représente des menus contextuels qui sont affichés lorsque l'utilisateur clique avec le bouton droit de la souris sur un contrôle ou une zone du formulaire. De nombreux composants visibles, tels que le formulaire, possèdent une propriété ContextMenuStrip, à laquelle le ContextMenuStrip créé peut-être associé, afin que le composant affiche le menu contextuel. Un ContextMenuStrip peut être utilisé par plusieurs composants. Ne renommer que le composant ContextMenuStrip

principal, avant d’ajouter les éléments de menu

contextuel.

4.3.1- La configuration d’un contextmenustrip

Comment remplir un contextmenustrip ?

� Propriétés :

− BackColor : couleur d'arrière-plan du menu contextuel. − BackgroundImage : image d'arrière-plan affichée dans le menu contextuel. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée. − LayoutStyle : indique comment les éléments sont disposés sur le contextmenustrip.

Valeurs possibles : Flow flux horizontal ou vertical des éléments. HorizontalStackWithOverflow disposition horizontale avec dépassement éventuel. StackWithOverflow disposition automatique des éléments. Table alignement à gauche des éléments. VerticalStackWithOverflow disposition verticale des éléments avec un centrage

dans le menustrip et dépassement éventuel. − Padding : espacem interne, en pixels, entre le contenu du contextmenustrip et ses bords. − RenderMode : style de peinture du menu contextuel.

Valeurs possibles : ManagerRenderMode, Professional, System.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 53/103

53 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− DropShadowEnabled : indique si un effet d'ombre tridimensionnelle apparaît lorsque le menu contextuel s'affiche.

− Font : police du texte affiché dans le menu contextuel.

− ShowCheckMargin : indique si l'espace pour une coche est affiché sur le côté gauche du menu contextuel.

− ShowImageMargin : indiquant si l'espace pour une image est affiché sur le côté gauche du menu contextuel.

− ShowItemToolTips : indique si les info-bulles sont affichées pour le contextmenustrip.

− Items : collection des éléments (ToolStripItem) qui appartiennent à un contextmenustrip : ToolStripMenuItem, ToolStripComboBox ou ToolStripTextBox, ToolStripSeparator.

⋅ Item ToolStripComboBox : zone de texte avec liste déroulante contenue

dans un contextmenustrip. Cette classe possède différents membres ((http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripcombobox_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripTextBox : zone de texte contenue dans un contextmenustrip.

Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstriptextbox_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripMenuItem : élément de menu contenue dans un

contextmenustrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripmenuitem_members(VS.80).aspx) : VOIR le paragraphe sur le composant MenuStrip.

⋅ Item ToolStripSeparator : espace pour grouper visuellement les éléments

contenus dans un contextmenustrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripseparator_members(VS.80).aspx) : VOIR le paragraphe sur le composant MenuStrip.

4.3.2- Le fonctionnement d’un contextmenustrip

Comment réagir aux choix dans le contextmenustrip ?

� Propriétés :

− AutoClose : indique si le menu contextuel doit se fermer automatiquement lorsqu'il n'est plus actif.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 54/103

54 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− Items : collection des éléments (ToolStripItem) qui appartiennent à un contextmenustrip : ToolStripMenuItem, ToolStripComboBox ou ToolStripTextBox, ToolStripSeparator.

⋅ Item ToolStripMenuItem : élément de menu contenue dans un

contextmenustrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripmenuitem_members(VS.80).aspx) : VOIR le paragraphe sur le composant MenuStrip.

� Evènements : − ItemClicked : clic sur un élément de menu du contextmenustrip. Le gestionnaire

d’évènement associé permet de traiter l’ensemble des clics sur tous les éléments du menu contextuel. La classe ToolStripItemClickedEventArgs et la propriété ClickedItem permettent d’identifier sur quel élément de menu on a cliqué.

Exemple : FONCTIONNEMENT D’UN CONTEXTMENUSTRIP REACTION COMMUNE A UN CLIC SUR UN INTITULE DE MENU : // ---------------------------------------------------------------------------

// gestionnaire d'évènement unique pour tous les éléments du ContextMenuStrip

// ---------------------------------------------------------------------------

private: System::Void cmnDessin_ItemClicked(System::Object^ sender,

System::Windows::Forms::ToolStripItemClickedEventArgs^ e) {

// identification de l'élément de menu

sur lequel l'utilisateur a cliqué

if (e->ClickedItem->Text == "Ouvrir")

MessageBox::Show("Ouvrir");

else if (e->ClickedItem->Text=="Blanc")

MessageBox::Show("Blanc");

else if (e->ClickedItem->Text=="Rouge")

MessageBox::Show("Rouge");

else if(e->ClickedItem->Text=="Quitter")

MessageBox::Show("Quitter");

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 55/103

55 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

4.4- Le composant TOOLSTRIP

� MEMBRES DE LA CLASSE TOOLSTRIP (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.toolstrip_members(VS.80).aspx La classe ToolStrip permet de créer une barre d'outils entièrement personnalisable, avec des boutons (ToolStripButton), du texte (ToolStripLabel), des zones de saisies (TextBox), des listes de choix (ComboBox), des barres de progression (ProgressBar), des séparateurs (Separator), des boutons déroulant (DropDownButton), des boutons déroulants cliquables (SplitButton).

4.4.1- La configuration d’un toolstrip

Comment paramétrer un toolstrip ?

� Propriétés :

− AutoSize : indiquant si le toolstrip est automatiquement redimensionné pour afficher l'ensemble de son contenu.

− BackColor : couleur d'arrière-plan du statusstrip. − RenderMode : style de peinture de la barre de statut.

Valeurs possibles : ManagerRenderMode, Professional, System. − BackgroundImage : image d'arrière-plan affichée dans le statusstrip. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée. − LayoutStyle : indique comment les éléments sont disposés sur le statusstrip.

Valeurs possibles : Flow flux horizontal ou vertical des éléments. HorizontalStackWithOverflow disposition horizontale avec dépassement éventuel. StackWithOverflow disposition automatique des éléments. Table alignement à gauche des éléments. VerticalStackWithOverflow disposition verticale des éléments avec un centrage

dans le statusstrip et dépassement éventuel. − Stretch : indique si le statusstrip s'étend d'un bout à l'autre dans le conteneur. − Padding : espacement interne, en pixels, entre le contenu du toolstrip et ses bords. − Dock : ancre la statusstrip respectivement en bas, à gauche, à droite ou en haut du

formulaire. Valeurs possibles :

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 56/103

56 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Bottom bord inférieur du contrôle ancré à la partie inférieure du formulaire. Fill bords du contrôle ancrés aux bords du formulaire. Left bord gauche ancré au bord gauche du formulaire. None Le statusstrip n'est pas ancré. Right bord droit du contrôle ancré au bord droit du formulaire. Top bord supérieur du contrôle ancré à la partie supérieure du formulaire.

− Font : police du texte affiché par le statusstrip. − TextDirection : orientation du texte.

Valeurs possibles : Horizontal orientation horizontale du texte. Vertical270 le texte doit pivoter de 270 degrés. Vertical90 le texte doit pivoter de 90 degrés

− ShowItemToolTips : indique si les info-bulles sont affichées pour le statusstrip. − ContextMenuStrip : ContextMenuStrip associé au statusstrip. − Items : collection des éléments qui appartiennent à un toolstrip.

4.4.2- Les différents éléments d’un toolstrip

Item ToolStripProgressBar : barre de progression Windows contenue dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripprogressbar_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espacement interne, en pixels, entre le contenu de l'élément et ses

bords. o Propriété Step : incrémentation de la valeur actuelle de la barre de progression lorsque la

méthode PerformStep() est appelée. o Propriété Style : style de la barre de progression.

Valeurs possibles : Blocks progression dans la progressbar par segments. Continuous progression en augmentant la taille d'une barre lissée continue. Marquee progression en faisant défiler en continu un bloc le long de la

progressbar à la manière d'un texte défilant.

o Propriété Value : position actuelle dans la barre de progression. o Propriété MarqueeAnimationSpeed : valeur représentant le délai entre chaque mise à

jour de l'affichage, en millisecondes. o Propriété Maximum : limite supérieure de la plage du progressbar. o Propriété Minimum : limite inférieure de la plage du progressbar.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 57/103

57 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Méthode Increment(int32) : fait avancer la position actuelle de la barre de progression de la quantité spécifiée. La propriété Value sature à Maximum ou Minimum.

o Méthode PerformStep() : fait avancer la position actuelle de la barre de progression de la quantité de la propriété Step. La propriété Value sature à Maximum ou Minimum.

Item ToolStripLabel : Label ou LinkLabel contenu dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstriplabel_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espacement entre les bords du label et son contenu.

o Propriété BackColor : couleur d'arrière-plan du label. o Propriété BackgroundImage : image d'arrière-plan du label. o Propriété BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés.

Valeurs possibles : Image seule une image doit être affichée. ImageAndText à la fois une image et le texte sont affichés. None ni une image ni le texte ne sont affichés. Text seul le texte est affiché.

o Propriété Image : image affichée dans le label. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image.

Valeurs possibles : None la taille de l'image ne s'ajuste pas automatiquement à son conteneur. SizeToFit la taille de l'image s'ajuste automatiquement à son conteneur.

o Propriété Font : police du texte affiché par le label. o Propriété ForeColor : couleur du texte dans le label. o Propriété Text : texte dans le label. o Propriété TextAlign : alignement du texte dans le label. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

o Propriété IsLink : indique si le label est un lien hypertexte. o Propriété ActiveLinkColor : couleur utilisée pour afficher un lien actif. o Propriété LinkColor : couleur utilisée pour afficher un lien normal. o Propriété VisitedLinkColor : couleur pour un lien précédemment visité. o Propriété LinkVisited : indique si un lien a été visité.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 58/103

58 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Propriété LinkBehavior : valeur qui représente le comportement d'un lien. Valeurs possibles : AlwaysUnderline Le lien s'affiche toujours avec le texte souligné. HoverUnderline Le texte est souligné lorsque la souris pointe sur le texte du lien. NeverUnderline Le texte du lien n'est jamais souligné. SystemDefault voir paramètres de la boîte de dialogue Options Internet d'IE.

Item ToolStripDropDownButton : bouton déroulable contenu dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripdropdownbutton_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espace entre les bords du bouton et son contenu. o Propriété BackColor : couleur d'arrière-plan du bouton. o Propriété BackgroundImage : image d'arrière-plan du bouton. o Propriété BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés (voir item précédent).

o Propriété Image : image affichée dans le bouton. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image (voir l’item

précédent). o Propriété Font : police du texte affiché par le bouton. o Propriété ForeColor : couleur du texte dans le bouton. o Propriété Text : texte dans le bouton. o Propriété TextAlign : alignement du texte dans le bouton. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

o Propriété ShowDropDownArrow : indique ou non que des options supplémentaires sont disponibles dans la liste déroulante.

o Propriété DropDownItems : collection d'éléments ; grâce à l’éditeur de collection, on peut ajouter : MenuItem, ComboBox, Separator, TextBox et configurer les propriétés de ces composants.

o Evènement Click : se produit suite à un clic sur le dropdownbouton.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 59/103

59 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Item ToolStripSplitButton : combinaison d’un bouton standard et d’un bouton déroulable

contenue dans un toolstrip. La différence majeure avec le DropDownButton précédent : il existe, ici, un évènement clic sur le bouton indépendant du clic sur la liste déroulante. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripsplitbutton_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espace entre les bords du bouton et son contenu. o Propriété BackgroundImage : image d'arrière-plan du bouton. o Propriété BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés (voir item

précédent). o Propriété Image : image affichée dans le bouton. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image (voir l’item

précédent). o Propriété Font : police du texte affiché par le bouton. o Propriété ForeColor : couleur du texte dans le bouton. o Propriété Text : texte dans le bouton. o Propriété TextAlign : alignement du texte dans le bouton. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

o Propriété DropDownButtonWidth : largeur, en pixels, de la partie bouton déroulant. o Propriété DropDownItems : collection d'éléments ; grâce à l’éditeur de collection, on

peut ajouter : MenuItem, ComboBox, Separator, TextBox et configurer les propriétés de ces composants.

o Evènement Click : se produit suite à un clic sur le bouton. o Evènement ButtonClick : se produit suite à un clic sur la partie bouton standard du

splitbutton.

Item ToolStripButton : bouton standard contenu dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripbutton_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété Margin : espace entre l’item et les autres items adjacents.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 60/103

60 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Propriété Padding : espace entre les bords du bouton et son contenu. o Propriété BackgroundImage : image d'arrière-plan du bouton. o Propriété BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée.

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés (voir item

précédent). o Propriété Image : image affichée dans le bouton. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image (voir l’item

précédent). o Propriété Font : police du texte affiché par le bouton. o Propriété ForeColor : couleur du texte dans le bouton. o Propriété Text : texte dans le bouton. o Propriété TextAlign : alignement du texte dans le bouton. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

o Propriété CheckState : indique si le bouton est à l'état activé ou désactivé par défaut. o Propriété Checked : indique si le bouton est activé ou désactivé. o Propriété CheckOnClick : indique si le bouton doit apparaître activé ou désactivé

lorsqu'un clic est effectué dessus (bouton à 2 états).

o Evènement Click : se produit suite à un clic sur le bouton.

Item ToolStripComboBox : zone de texte avec liste déroulante contenue dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripcombobox_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété BackColor : couleur d'arrière-plan de la combobox. o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espace entre les bords de l’item et son contenu. o Propriété FlatStyle : apparence de la combobox. Valeurs possibles :

Flat la combobox s'affiche sous une forme à deux dimensions. Popup la combobox s'affiche sous une forme à deux dimensions et, si la souris

arrive à sa hauteur, il prend alors une forme à trois dimensions. Standard la combobox s'affiche sous une forme à trois dimensions. System L'apparence de la combobox est déterminée par l’OS.

o Propriété DropDownStyle : style de la combobox.

Valeurs possibles :

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 61/103

61 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

DropDown La partie texte est modifiable. L'utilisateur doit cliquer sur le bouton fléché pour afficher la partie liste.

DropDownList L'utilisateur ne peut pas modifier la partie texte. L'utilisateur doit cliquer sur le bouton fléché pour afficher la partie liste, qui ne s'affiche que si AutoCompleteMode est Suggest ou SuggestAppend.

Simple La partie texte est modifiable. La partie liste est toujours visible.

o Propriété Text : texte dans la zone d’édition de la combobox. o Propriété ForeColor : couleur du texte dans la combobox. o Propriété Font : police du texte affiché par la combobox. o Propriété Items : collection des éléments texte de la liste déroulante. o Propriété MaxDropDownItems : nombre maximal d'éléments à afficher dans la partie de

liste déroulante de la combobox. o Propriété MaxLength : nombre maximal de caractères autorisés dans la partie modifiable

d'une zone de liste déroulante. o Propriété IntegralHeight : indique si la combobox doit être redimensionnée pour éviter

d'afficher des éléments partiellement. o Propriété Sorted : indique si les éléments dans la combobox sont triés.

o Propriété AutoCompleteMode : type de saisie de texte dans la combobox. Valeurs possibles : Append Ajoute le reste de la chaîne des candidats les plus probables aux

caractères existants, avec les caractères ajoutés en surbrillance. None Désactive la fonctionnalité de saisie semi-automatique. Suggest Affiche la liste déroulante auxiliaire (chaînes de saisie semi-

automatique suggérées) associée au contrôle d'édition. SuggestAppend Applique à la fois les options Suggest et Append.

o Propriété AutoCompleteSource : source de chaînes complètes utilisées pour la saisie semi-automatique. Quelques valeurs possibles : AllSystemSources Spécifie l'équivalent de FileSystem et AllUrl comme source. AllUrl Source= HistoryList et RecentlyUsedList. CustomSource Sources = chaînes d'un AutoCompleteStringCollection intégré. FileSystem Spécifie le système de fichiers comme source. FileSystemDirectories seuls les noms de répertoire et pas les noms de fichier seront

complétés automatiquement. ListItems Source= éléments d’une combobox. None aucun AutoCompleteSource n'est en cours d'utilisation.

o Propriété AutoCompleteCustomSource : collection de chaînes personnalisées à utiliser lorsque la propriété AutoCompleteSource a la valeur CustomSource.

o Evènement TextUpdate : lorsque le texte de la combobox a été modifié. o Evènement TextChanged : lorsque la valeur de la propriété Text change. o Evènement Click : se produit suite à un clic sur la liste déroulante.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 62/103

62 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Item ToolStripTextBox : zone de texte contenue dans un toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstriptextbox_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour

voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du toolstrip.

o Propriété BackColor : couleur d'arrière-plan de la textbox. o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espace entre les bords de l’item et son contenu. o Propriété BorderStyle : type de bordure de la textbox.

o Propriété Text : texte de la textbox. o Propriété Lines : lignes de texte contenues dans une textbox. o Propriété ForeColor : couleur du texte dans la textbox. o Propriété Font : police du texte affiché par la textbox. o Propriété TextBoxTextAlign : façon dont le texte est aligné. o Propriété MaxLength : nombre maximal de caractères que l'utilisateur peut taper ou

coller dans le contrôle TextBox. o Propriété HideSelection : indique si le texte sélectionné dans la textbox reste en

surbrillance quand le focus passe à un autre contrôle.

o Propriété ReadOnly : indique si le texte est en lecture seule. o Propriété AcceptsReturn : indique si le fait d'appuyer sur ENTRÉE dans un contrôle

TextBox multiligne entraîne la création d'une nouvelle ligne. o Propriété AcceptsTab : indique si le fait d'appuyer sur TAB dans un contrôle zone de

texte multiligne effectue une tabulation. o Propriété CharacterCasing : définit si la textbox modifie la casse des caractères au fur et

à mesure de la saisie.

o Propriété AutoCompleteMode : type de saisie de texte dans la textbox. Valeurs possibles : VOIR ELEMENT PRECEDENT.

o Propriété AutoCompleteSource : source de chaînes complètes utilisées pour la saisie semi-automatique. Valeurs possibles : VOIR ELEMENT PRECEDENT.

o Propriété AutoCompleteCustomSource : collection de chaînes personnalisées à utiliser lorsque la propriété AutoCompleteSource a la valeur CustomSource.

o Evènement TextChanged : lorsque la valeur de la propriété Text change.

Item ToolStripSeparator : espace pour grouper visuellement les éléments contenus dans un

toolstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripseparator_members(VS.80).aspx) :

o Propriété Margin : espace entre l’item et les autres items adjacents.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 63/103

63 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

5- Les composants d’affichage d’informations d’état, d’aide

5.1- Le composant TOOLTIP

� MEMBRES DE LA CLASSE TOOLTIP (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.tooltip_members(VS.80).aspx

La classe ToolTip permet d’afficher des bulles d'aides sur un composant, lorsque l'on laisse le curseur de la souris immobile dessus pendant 1 à 2 secondes. En déposant un contrôle ToolTip sur le formulaire, il s'ajoute automatiquement une propriété supplémentaire aux autres composants : ToolTip on toolTip1 (toolTip1 étant le nom par défaut du composant ToolTip déposé). Il ne reste plus qu’à renseigner cette propriété rajoutée avec le texte que l'on souhaite voir s’afficher dans la bulle d’aide.

5.1.1- L’utilisation d’un tooltip

Comment créer un tooltip ? � Propriétés :

− ToolTipTitle : titre de la fenêtre d'info-bulle. − ToolTipIcon : type d'icône à afficher le long du texte d'info-bulle.

Valeurs possibles : Error Icône d'erreur Info Icône d'information. None Icône non standard. Warning Icône d'avertissement.

− ForeColor : couleur du texte dans l’info-bulle. − BackColor : couleur d'arrière-plan de l’info-bulle. − IsBalloon : indique si l'info-bulle doit utiliser une fenêtre de bulle. − UseAnimation : effet d'animation lors de l'affichage de l'info-bulle. − UseFading : effet d'atténuation lors de l'affichage de l'info-bulle. − AutomaticDelay : délai initial pour l'info-bulle. Cette propriété permet de définir un

seul délai de temporisation qui sera utilisé pour définir les valeurs des propriétés AutoPopDelay (10 fois la valeur), InitialDelay (égal) et ReshowDelay (1/5 de la valeur).

− AutoPopDelay : durée d'affichage de l'info-bulle quand la souris s'immobilise. − InitialDelay : temps écoulé avant l'apparition de l'info-bulle. − ReshowDelay : délai qui doit s'écouler avant que s'affichent des fenêtres d'info-bulle qui

se suivent lorsque le pointeur de la souris passe d'un contrôle à un autre. − ShowAlways : apparition de l'info-bulle même si son contrôle parent n'est pas actif. − Active : valeur indiquant si l'info-bulle est actuellement active.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 64/103

64 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

5.2- Le composant PROGRESSBAR

� MEMBRES DE LA CLASSE PROGRESSBAR (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.progressbar_members(VS.80).aspx

La classe ProgressBar corrrespond à une barre de progression, qui permet d’indiquer que l’opération en cours va prendre un certain temps.

5.2.1- La configuration et l’utilisation d’une progressbar

Comment créer et utiliser une progressbar ? � Propriétés :

− Style : style de la barre de progression. Valeurs possibles : Blocks progression dans la progressbar par segments. Continuous progression en augmentant la taille d'une barre lissée continue. Marquee progression en faisant défiler en continu un bloc le long de la

progressbar à la manière d'un texte défilant.

− Value : position actuelle dans la barre de progression. − MarqueeAnimationSpeed : valeur représentant le délai entre chaque mise à jour de

l'affichage, en millisecondes. − Maximum : limite supérieure de la plage du progressbar. − Minimum : limite inférieure de la plage du progressbar. − Step : incrémentation de la valeur actuelle de la barre de progression lorsque la méthode

PerformStep() est appelée.

� Méthodes : − Increment(int32) : fait avancer la position actuelle de la barre de progression de la

quantité spécifiée. La propriété Value sature à Maximum ou Minimum. − PerformStep() : fait avancer la position actuelle de la barre de progression de la

quantité de la propriété Step. La propriété Value sature à Maximum ou Minimum.

Exemple : EVOLUTION D’UNE PROGRESSBAR GRACE A UN TIMER

// ------------------------------------------------------------------------

// Evolution dans un timer, toutes les secondes, de la barre de progression

// ------------------------------------------------------------------------

private: System::Void timAttente_Tick(System::Object^ sender,

System::EventArgs^ e)

{ /* progression de la barre selon le pas fixé avec la propriété Step. La

méthode utilisée sature automatiquement au Maximum ou au Minimum (en fonction

du signe du pas) */

pgbAttente->PerformStep();

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 65/103

65 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

5.3- Le composant STATUSSTRIP

� MEMBRES DE LA CLASSE STATUSSTRIP (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.statusstrip_members(VS.80).aspx

La classe StatusStrip représente la barre d'état que l'on peut voir dans certaines applications. Elle est généralement ancrée dans la partie basse d'une fenêtre. De la même façon que pour le contrôle ToolStrip, il est possible de rajouter des contrôles dans la barre. La différence ici est que l'on peut ajouter uniquement des labels, des progressbar, des dropdownbuttons ou des splitbuttons.

5.3.1- La configuration d’un statusstrip

Comment créer un statusstrip ? � Propriétés :

− BackColor : couleur d'arrière-plan du statusstrip. − RenderMode : style de peinture de la barre de statut.

Valeurs possibles : ManagerRenderMode, Professional, System. − BackgroundImage : image d'arrière-plan affichée dans le statusstrip. − BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée. − LayoutStyle : indique comment les éléments sont disposés sur le statusstrip.

Valeurs possibles : Flow flux horizontal ou vertical des éléments. HorizontalStackWithOverflow disposition horizontale avec dépassement éventuel. StackWithOverflow disposition automatique des éléments. Table alignement à gauche des éléments. VerticalStackWithOverflow disposition verticale des éléments avec un centrage

dans le statusstrip et dépassement éventuel.

− Stretch : indique si le statusstrip s'étend d'un bout à l'autre dans le conteneur. − Dock : ancre la statusstrip respectivement en bas, à gauche, à droite ou en haut du

formulaire. Valeurs possibles : Bottom bord inférieur du contrôle ancré à la partie inférieure du formulaire. Fill bords du contrôle ancrés aux bords du formulaire. Left bord gauche ancré au bord gauche du formulaire. None Le statusstrip n'est pas ancré. Right bord droit du contrôle ancré au bord droit du formulaire. Top bord supérieur du contrôle ancré à la partie supérieure du formulaire.

− SizingGrip : indique si une poignée de dimensionnement est affichée dans le coin inférieur droit du statusstrip.

− Font : police du texte affiché par le statusstrip. − TextDirection : orientation du texte.

Valeurs possibles : Horizontal orientation horizontale du texte. Vertical270 le texte doit pivoter de 270 degrés. Vertical90 le texte doit pivoter de 90 degrés

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 66/103

66 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− ShowItemToolTips : indique si les info-bulles sont affichées pour le statusstrip. − ContextMenuStrip : ContextMenuStrip associé au statusstrip.

5.3.2- Les composants d’un statusstrip

− Items : collection des éléments qui appartiennent à un statusstrip.

⋅ Item ToolStripProgressBar : barre de progression Windows contenue dans

un statusstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripprogressbar_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripStatusLabel : Label ou LinkLabel contenu dans un

statusstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripstatuslabel_members(VS.80).aspx) :

o Propriété ToolTipText : texte de l'info-bulle affiché si la souris passe sur l’item. Pour voir la bulle d’aide, il faut aussi affecter la valeur true à la propriété ShowItemToolTips du statusstrip.

o Propriété AutoToolTip : affichage ou non de la bulle d’aide. o Propriété Margin : espace entre l’item et les autres items adjacents. o Propriété Padding : espacement entre les bords du label et son contenu. o Propriété Spring : indique si le label remplit automatiquement l'espace

disponible sur le statusstrip lorsque le formulaire est redimensionné. o Propriété BorderStyle : type de bordure du label. o Propriété BorderSides : indique les côtés du label qui ont des bordures.

o Propriété BackColor : couleur d'arrière-plan du label. o Propriété BackgroundImage : image d'arrière-plan du label. o Propriété BackgroundImageLayout : affichage de cette image.

o Propriété DisplayStyle : définit si le texte et/ou les images sont affichés. Valeurs possibles :

Image seule une image doit être affichée. ImageAndText à la fois une image et le texte sont affichés. None ni une image ni le texte ne sont affichés. Text seul le texte est affiché.

o Propriété Image : image affichée dans le label. o Propriété ImageAlign : façon dont l’image est affichée. o Propriété ImageTransparentColor : couleur transparente dans l’image. o Propriété ImageScaling : mode de redimensionnement de l’image.

Valeurs possibles : None la taille de l'image ne s'ajuste pas automatiquement à son conteneur. SizeToFit la taille de l'image s'ajuste automatiquement à son conteneur.

o Propriété Font : police du texte affiché par le label. o Propriété ForeColor : couleur du texte dans le label.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 67/103

67 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

o Propriété Text : texte dans le label. o Propriété TextAlign : alignement du texte dans le label. o Propriété TextDirection : orientation du texte. o Propriété TextImageRelation : positions relatives du texte et de l'image.

o Propriété IsLink : indique si le label est un lien hypertexte. o Propriété ActiveLinkColor : couleur utilisée pour afficher un lien actif. o Propriété LinkColor : couleur utilisée pour afficher un lien normal. o Propriété VisitedLinkColor : couleur pour un lien précédemment visité. o Propriété LinkVisited : indique si un lien a été visité. o Propriété LinkBehavior : valeur qui représente le comportement d'un

lien. Valeurs possibles : AlwaysUnderline Le lien s'affiche toujours avec le texte souligné. HoverUnderline Le texte est souligné lorsque la souris pointe sur le texte du lien. NeverUnderline Le texte du lien n'est jamais souligné. SystemDefault voir paramètres de la boîte de dialogue Options Internet d'IE.

⋅ Item ToolStripDropDownButton : bouton déroulable contenu dans un

statusstrip. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripdropdownbutton_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

⋅ Item ToolStripSplitButton : combinaison d’un bouton standard et d’un

bouton déroulable contenue dans un statusstrip. La différence majeure avec le DropDownButton précédent : il existe, ici, un évènement clic sur le bouton indépendant du clic sur la liste déroulante. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.toolstripsplitbutton_members(VS.80).aspx) : VOIR le paragraphe sur le composant ToolStrip.

Exemple : CONFIGURATION D’UNE STATUSSTRIP AJOUT D’UNE PROGRESSBAR, D’UN LABEL ET D’UN DROPDOWNBUTTON :

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 68/103

68 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

5.4- Le composant NOTIFYICON

� MEMBRES DE LA CLASSE NOTIFYICON (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.notifyicon_members(VS.80).aspx

La classe NotifyIcon permet de programmer des processus, non dotés d'interfaces avec lesquels on interagit depuis la barre système Windows. Ce contrôle sert à avoir une icône dans la barre système (généralement utilisée pour réduire l'application), de pouvoir agir dessus par un menu contextuel, ou d'obtenir une information grâce à une bulle.

5.4.1- La configuration d’un notifyicon

Comment créer un notifyicon ? � Propriétés :

− Icon : icône visible dans la barre système Windows. − Text : texte de l’info-bulle qui s'affiche lorsque le pointeur de la souris se place sur

l'icône du composant notifyicon.

5.4.2- L’utilisation d’un notifyicon

Comment faire fonctionner un notifyicon ? � Propriétés :

− ContextMenuStrip : menu contextuel associé au composant notifyicon. Il s'affichera lors d'un click droit sur l'icône du notifyicon dans la barre système.

− BalloonTipIcon : icône à afficher sur l'info-bulle associée au composant notifyicon. − BalloonTipText : texte à afficher sur l'info-bulle associée au composant notifyicon. − BalloonTipTitle : titre de l'info-bulle affichée sur le composant notifyicon.

� Méthodes : − ShowBalloonTip(Int32, String, String, ToolTipIcon) : affiche l’info-bulle dans la

barre système Windows, pendant la période spécifiée (en ms), avec le titre, le texte et l'icône spécifiées. Exemple :

ntiInfoSystem→ShowBalloonTip(10000, "titre", "text", ToolTipIcon::Info); Valeurs possibles de ToolTipIcon : Error Icône d'erreur. Info Icône d'information. None Icône non standard. Warning Icône d'avertissement.

� Evènements : − BalloonTipClicked : se produit après un clic sur l'info-bulle. − BalloonTipClosed : se produit lorsque l'info-bulle est fermée par l'utilisateur. − BalloonTipShown : se produit lorsque l'info-bulle est affichée sur l'écran.

Exemple : MINIMISATION D’UNE APPLICATION DANS LA BARRE SYSTEME

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 69/103

69 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Après avoir ajouté et configuré un composant NotifyIcon, ajouter le menu contextuel lié à ce composant.

MINIMISATION DE L’APPLICATION ET ACTIONS DEPUIS LA BARRE SYSTEME :

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^e)

{ // au démarrage, icône invisible dans la barre système Windows

ntiInfoSystem->Visible = false; }

private:System::Void btnMin_Click(System::Object^sender,System::EventArgs^e)

{ //minimise application dans barre système

this->Hide();

ntiInfoSystem->Visible = true;

ntiInfoSystem->Text="System Info";

// affichage info bulle dans la barre système

ntiInfoSystem->ShowBalloonTip(10000, "Informations

système", "affichage date ou version OS...",

ToolTipIcon::Info); }

private: System::Void

versionOSToolStripMenuItem_Click(Sy

stem::Object^sender,System::EventAr

gs^e)

{ // affiche version OS

MessageBox::Show("Version OS :

" + Environment::OSVersion->

ToString()); }

private: System::Void

dateToolStripMenuItem_Click(System:

:Object^ sender,

System::EventArgs^ e)

{ // affiche date et heure

MessageBox::Show("Date du jour

: " + System::DateTime::Now ); }

private: System::Void

fermerToolStripMenuItem_Click(Syste

m::Object^

sender,System::EventArgs^ e)

{ Close();//fermeture

application }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 70/103

70 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6- Les composants boîtes de dialogue

6.1- Le composant FOLDERBROWSERDIALOG

� MEMBRES DE LA CLASSE FOLDERBROWSERDIALOG : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.folderbrowserdialog_members(VS.80).aspx

La boite de dialogue FolderBrowserDialog permet de parcourir les répertoires.

6.1.1- La configuration et l’utilisation d’une folderbrowserdialog

Comment paramétrer et utiliser une folderbrowserdialog ? � Propriétés :

− Description : texte descriptif affiché dans la boîte de dialogue. − SelectedPath : chemin d'accès sélectionné par l'utilisateur. − ShowNewFolderButton : bouton Nouveau dossier présennt ou non. − RootFolder : dossier racine à partir duquel la recherche démarre. Exemple :

fbdTexte→RootFolder = Environment::SpecialFolder::MyDocuments; Quelques valeurs possibles : MyComputer Dossier "Poste de travail". MyDocuments Dossier "Mes documents". MyMusic Dossier "Ma musique". MyPictures Dossier "Mes images".

� Méthodes : − ShowDialog() : exécute la boîte de dialogue en mode Modal.

� Evènements : − HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

Exemple : SELECTION DE REPERTOIRES AVEC LA BOITE DE DIALOGUE

RECUPERATION DE L’ARBORESCENCE CHOISI DANS UN FOLDERBRWSERDIALOG :

private: System::Void

btnDir_Click(System::Object^sender,S

ystem::EventArgs^e)

{

// ouverture boîte de dialogue

répertoire, récupération du chemin

choisi

fbdDir->ShowDialog();

if (fbdDir->SelectedPath !=

String::Empty)

MessageBox::Show("Répertoire

sélectionné: "+fbdDir->

SelectedPath);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 71/103

71 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6.2- Le composant OPENFILEDIALOG

� MEMBRES DE LA CLASSE OPENFILEDIALOG (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.openfiledialog_members(VS.80).aspx

La boite de dialogue OpenFileDialog permet d'ouvrir la boite d’ouverture de fichiers pour effectuer la lecture ou l'écriture d'un fichier.

6.2.1- La configuration et l’utilisation d’une openfiledialog (LECTURE MUSIQUE)

Comment paramétrer et utiliser une openfiledialog ? � Propriétés :

− FileName : nom de fichier sélectionné dans la boîte de dialogue Fichier. − Title : titre de la boîte de dialogue. − ShowReadOnly : présence d’une case à cocher en lecture seule. − ReadOnlyChecked : indique si la case à cocher en lecture seule est activée. − DefaultExt : extension de nom de fichier par défaut. Exemple : "txt". − Filter : chaîne de filtrage des noms de fichiers en cours fixant les choix possibles dans la

zone "Types de fichiers" de la boîte de dialogue. Exemples : "Text files (*.txt)|*.txt|All files (*.*)|*.*" et "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF"

− FilterIndex : indice de l'option de filtrage sélectionnée dans la boîte de dialogue. − Multiselect : indique si la boîte de dialogue permet de sélectionner plusieurs fichiers. − InitialDirectory : répertoire initial affiché dans la boîte de dialogue Fichier. Ex. : "c:\\" − RestoreDirectory : restauration ou non par la boîte de dialogue du répertoire actif à sa

valeur d'origine si l'utilisateur l'a modifié pendant la recherche des fichiers. − ShowHelp : indique si le bouton Aide est affiché. − AddExtension : ajout automatique d’une extension au nom de fichier si inexistante. − CheckFileExists : affiche un message d'avertissement si nom de fichier inexistant. − CheckPathExists : affiche un message d'avertissement si chemin d'accès inexistant. − ValidateNames : vérification ou non des noms de fichiers Win32 valides.

� Méthodes : − ShowDialog() : exécute la boîte de dialogue en mode Modal. − Stream ^OpenFile() : ouvre le fichier sélectionné par l'utilisateur dans la boîte de

dialogue avec les autorisations de lecture/écriture. Exemple : ofdTexte→FileName= nullptr; // pour ne pas avoir de nom prédéfini dans ofdTexte if ( ofdTexte→ShowDialog()) == System::Windows::Forms::DialogResult::OK ) { Stream ^file ; if ( (file = ofdTexte→OpenFile()) != nullptr )

{ /* lecture/écriture dans le fichier ici */ file→Close(); } }

Classe Stream (accès fichiers binaires, manipule des Stream) : http://msdn.microsoft.com/fr-fr/library/system.io.stream_members(VS.80).aspx Classe StreamWriter (écriture fichiers textes, manipule des StreamWriter) : http://msdn.microsoft.com/fr-fr/library/system.io.streamwriter_members(VS.80).aspx Classe StreamReader (lecture fichiers textes, manipule des StreamReader) : http://msdn.microsoft.com/fr-fr/library/system.io.streamreader_members(VS.80).aspx

� Evènements : − FileOk : se produit lorsque l'utilisateur clique sur le bouton Ouvrir. − HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 72/103

72 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : LECTURE FICHIER AUDIO AVEC UNE BOITE DE DIALOGUE

OUVERTURE FICHIER WAV ET LANCEMENT DE LA MUSIQUE : // -----------------------------

// OUVERTURE FLUX AUDIO WAV (PCM)

// -----------------------------

private: System::Void

btnOpen_Click(System::Object^sende

r,System::EventArgs^e)

{

// ouverture boîte de

dialogue "choisir un fichier"

// --------------------

if(ofdMusic->ShowDialog() ==

System::Windows::Forms::DialogResu

lt::OK)

{ //récupération nom du

fichier sélectionné

System::String ^

nameFile= ofdMusic->FileName;

MessageBox::Show("Fichier

sélectionné : " + nameFile);

//

lecture

musique POUR

UN FICHIER au

format WAV-

PCM

// ------------------

// Crée un object de

type SoundPlayer

System::Media::SoundPla

yer^ Player = gcnew

System::Media::SoundPlayer();

// Indique le chemin

d'acces au fichier a lire

Player->SoundLocation =

nameFile;

// Lance la lecture de

la musique

Player->Play();

}

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 73/103

73 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6.3- Le composant SAVEFILEDIALOG

� MEMBRES DE LA CLASSE SAVEFILEDIALOG (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.savefiledialog_members(VS.80).aspx

La boite de dialogue SaveFileDialog permet d'ouvrir la boite de sauvegarde de fichiers.

6.3.1- La configuration et l’utilisation d’une savefiledialog

Comment paramétrer et utiliser une savefiledialog ? � Propriétés :

− FileName : nom de fichier sélectionné dans la boîte de dialogue Fichier. − Title : titre de la boîte de dialogue. − DefaultExt : extension de nom de fichier par défaut. Exemple : "txt". − Filter : chaîne de filtrage des noms de fichiers en cours, qui détermine les choix

disponibles dans les zones "Enregistrer sous" ou "Types de fichiers" de la boîte de dialogue. Exemples : "Text files (*.txt)|*.txt|All files (*.*)|*.*"

"Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*" − FilterIndex : indice de l'option de filtrage sélectionnée dans la boîte de dialogue. − InitialDirectory : répertoire initial affiché dans la boîte de dialogue Fichier. Ex. : "c:\\" − RestoreDirectory : restauration ou non par la boîte de dialogue du répertoire actif à sa

valeur d'origine si l'utilisateur l'a modifié pendant la recherche des fichiers. − ShowHelp : indique si le bouton Aide est affiché. − AddExtension : ajout automatique d’une extension au nom de fichier si inexistante. − CheckFileExists : affiche un message d'avertissement si nom de fichier inexistant. − OverwritePrompt : affiche un avertissement si nom de fichier existe déjà . − CreatePrompt : demande autorisation de créer un fichier si nom de fichier inexistant. − CheckPathExists : indique si la boîte de dialogue affiche un message d'avertissement

lorsque l'utilisateur spécifie un chemin d'accès qui n'existe pas. − ValidateNames : vérification ou non des noms de fichiers Win32 valides.

� Méthodes : − ShowDialog() : exécute la boîte de dialogue en mode Modal. − Stream ^OpenFile() : ouvre le fichier sélectionné par l'utilisateur dans la boîte de

dialogue avec les autorisations de lecture/écriture. Exemple : Stream ^file ; If ( (file = sfdTexte→OpenFile()) != nullptr ) { /* lecture/écriture dans le fichier ici */ file→Close(); }

Classe Stream (accès fichiers binaires, manipule des Stream) : http://msdn.microsoft.com/fr-fr/library/system.io.stream_members(VS.80).aspx Classe StreamWriter (écriture fichiers textes, manipule des StreamWriter) : http://msdn.microsoft.com/fr-fr/library/system.io.streamwriter_members(VS.80).aspx Classe StreamReader (lecture fichiers textes, manipule des StreamReader) : http://msdn.microsoft.com/fr-fr/library/system.io.streamreader_members(VS.80).aspx

� Evènements : − FileOk : se produit lorsque l'utilisateur clique sur le bouton Enregistrer. − HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 74/103

74 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : LECTURE/ECRITURE FICHIERS TEXTE AVEC LES BOITES DE DIALOGUES

LECTURE D’UN FICHIER ET AFFICHAGE AVEC UNE MESSAGEBOX :

// pour les accès fichiers EN HAUT DU HEADER DU FORMULAIRE PRINCIPAL

namespace testComposants2 {

using namespace System::IO;

// ---------------------------------------------

// OUVERTURE D'UN FICHIER TEXTE EN LECTURE SEULE

// ---------------------------------------------

private: System::Void lireToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ // ouverture boîte de dialogue "choisir un fichier"

if (odgFileText->ShowDialog()==System::Windows::Forms::DialogResult::OK)

{ //récupération du nom du fichier sélectionné

System::String ^nameFile= odgFileText->FileName;

MessageBox::Show("Fichier sélectionné : " + nameFile);

// lecture du fichier texte sélectionné dans une boîte de message

System::IO::StreamReader ^ file = gcnew

System::IO::StreamReader(nameFile);

MessageBox::Show(file->ReadToEnd());

file->Close(); // fermeture fichier

}

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 75/103

75 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

MODIFICATION D’UN FICHIER DANS UN TEXTBOX ET SAUVEGARDE :

// ------------------------------------------------

// OUVERTURE D'UN FICHIER TEXTE EN LECTURE/ECRITURE

// ------------------------------------------------

private: System::Void modifierToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{

// ouverture boîte de dialogue "choisir un fichier"

if (odgFileText->ShowDialog()==System::Windows::Forms::DialogResult::OK)

{ //récupération du nom du fichier sélectionné

System::String ^nameFile= odgFileText->FileName;

// lecture fichier texte, affichage dans la boîte d'édition multiligne

//-----------------------------------------------------------------

// initialisation du texte dans la boîte d'édition

txtFile->Text = "CONTENU DU FICHIER " + nameFile;

txtFile->Text = txtFile->Text + "\r\n";

txtFile->Text = txtFile->Text + "___________________";

txtFile->Text=txtFile->Text+Environment::NewLine+Environment::NewLine;

// déclaration variable associée au fichier

StreamReader ^file;

try

{ // référence sur le fichier texte de nom nameFile

file = gcnew StreamReader(nameFile);

// lecture de tout le fichier et affichage dans la boîte d'édition

txtFile->Text = txtFile->Text + file->ReadToEnd ();

}

finally

{ // en cas d'échec, fermeture du fichier s'il a bien été ouvert

if (file != nullptr) file->Close();

}

}

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 76/103

76 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

MODIFICATION D’UN FICHIER DANS UN TEXTBOX ET SAUVEGARDE :

// -----------------------------

// SAUVEGARDE D'UN FICHIER TEXTE

// -----------------------------

private: System::Void sauverToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ // ouverture boîte de dialogue de sauvegarde du fichier

if (sdgFileText->ShowDialog()==System::Windows::Forms::DialogResult::OK)

{ //récupération du nom du fichier sélectionné

System::String ^nameFile= sdgFileText->FileName;

// si nom du fichier n'est pas vide, l'utiliser pour la sauvegarde

if(nameFile != "")

{ // déclaration variable associée au fichier de sauvegarde

StreamWriter ^filesave;

// référence sur le fichier texte de nom nameFile

filesave = gcnew StreamWriter(nameFile);

// écriture dans le fichier de sauvegarde

// --------------------------------------

// ajout d'information d'en-tête

filesave->Write("sauvegarde effectuée le

"+DateTime::Now+Environment::NewLine+Environment::NewLine+Environment::NewLine

+"...............");

filesave->Write(txtFile->Text); // sauve contenu de la textBox

filesave->Close(); // fermeture du fichier de sauvegarde

}

}

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 77/103

77 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : LECTURE/ECRITURE FICHIERS TEXTE AVEC LES BOITES DE DIALOGUES

LECTURE D’UN FICHIER ET AFFICHAGE AVEC UNE MESSAGEBOX :

// pour les accès fichiers EN HAUT DU HEADER DU FORMULAIRE PRINCIPAL

namespace testComposants2 { using namespace System::IO;

private:System::Void btnImage_Click(System::Object^sender,System::EventArgs^e)

{ // affichage d'une boîte de dialogue de sauvegarde afin que

l'utilisateur puisse sauver l'image associée au bouton

SaveFileDialog ^ sdgImage = gcnew SaveFileDialog();

sdgImage->Filter= "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";

sdgImage->Title = "Save an Image File";

sdgImage->ShowDialog();

System::String^nameFile=sdgImage->FileName; //récupération nom fichier

if(nameFile != "") // si le nom du fichier choisi n'est pas vide

{ // sauvegarde de l'image

System::IO::FileStream ^ fileImage =

safe_cast<System::IO::FileStream ^> (sdgImage->OpenFile());

// choix du format de sauvegarde en fonction du fichier sélectionné

// dans la boîte de dialogue de sauvegarde

switch(sdgImage->FilterIndex)

{ case 1 : btnImage->Image->

Save(fileImage,System::Drawing::Imaging::ImageFormat::Jpeg); break;

case 2 : btnImage->Image->

Save(fileImage,System::Drawing::Imaging::ImageFormat::Bmp); break;

case 3 : btnImage->Image->

Save(fileImage,System::Drawing::Imaging::ImageFormat::Gif); break;

}

fileImage->Close();

}}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 78/103

78 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6.4- Le composant PRINTDIALOG

� MEMBRES DE LA CLASSE PRINTDIALOG (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.printdialog_members(VS.80).aspx

La boite de dialogue PrintDialog permet d'ouvrir la boite d'impression.

6.4.1- La configuration et l’utilisation d’une printdialog

Comment paramétrer et utiliser une printdialog ?

� Propriétés :

− AllowCurrentPage : indique si la case d'option Page active est affichée. − AllowPrintToFile : indique si la case à cocher Imprimer dans un fichier est activée. − PrintToFile : indique si la case à cocher Imprimer dans un fichier est sélectionnée. − AllowSelection : indique si la case d'option Sélection est activée. − AllowSomePages : indique si la case d'option Pages est activée. − ShowHelp : indique si le bouton Aide est affiché.

� Méthodes :

− ShowDialog() : exécute la boîte de dialogue en mode Modal.

� Evènements :

− HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

Exemple : IMPRESSION D’UNE IMAGE AVEC LA BOITE DE DIALOGUE

// pour les impressions EN HAUT DU HEADER

namespace testComposants2 {

using namespace System::Drawing::Printing;

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 79/103

79 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

// --------------------------

// LANCEMENT D'UNE IMPRESSION

// --------------------------

private: System::Void btnImage_Click(System::Object^sender,

System::EventArgs^e)

{ // déclaration du document à imprimer

PrintDocument^ pImage = gcnew PrintDocument();

// lien entre boite de dialogue d'impression et document à imprimer

prnImage->Document = pImage;

// si l'utilisateur a validé l'impression

if (prnImage->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{ // Ajout gestionnaire d'évènement qui imprime une page: PrintAPAge

pImage->PrintPage += gcnew PrintPageEventHandler(this,

&Form1::PrintAPage);

pImage->Print(); // lancement de l'impression

}

}

// --------------------------------------------------------------------

// GESTIONNAIRE D'EVENEMENT POUR CREER LE CONTENU DE LA PAGE A IMPRIMER

// --------------------------------------------------------------------

void PrintAPage(Object^ pSender, PrintPageEventArgs^ pe)

{ Graphics^ pageImage = pe->Graphics; // définition graphique à imprimer

// récupération de l'image du bouton

Bitmap^ bmp = safe_cast <Bitmap ^> (btnImage->Image);

// image dessinée sur la page en position (x,y) et taille (width,height)

int x=100, y=10, largeur=500, hauteur= 500;

pageImage->DrawImage(bmp,x,y,largeur,hauteur);

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 80/103

80 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6.5- Le composant COLORDIALOG

� MEMBRES DE LA CLASSE COLORDIALOG (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.colordialog_members(VS.80).aspx

La boite de dialogue ColorDialog permet d'ouvrir une boite de sélection de couleur.

6.5.1- La configuration et l’utilisation d’un colordialog

Comment paramétrer et récupérer le choix d’une colordialog ? � Propriétés :

− AnyColor : indique si la boîte de dialogue affiche toutes les couleurs disponibles dans le jeu de couleurs de base.

− SolidColorOnly : indique si l’utilisateur ne peut sélectionner que des couleurs unies. − AllowFullOpen : indique si l'utilisateur peut utiliser les couleurs personnalisées. − FullOpen : indique si les contrôles permettant de créer des couleurs personnalisées

s'affichent à l'ouverture de la boîte de dialogue. − Color : couleur sélectionnée par l'utilisateur. − ShowHelp : indique si un bouton Aide figure dans la boîte de dialogue des couleurs.

� Méthodes : − ShowDialog() : exécute la boîte de dialogue en mode Modal.

� Evènements : − HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

Exemple : CHANGEMENT D’UNE COULEUR AVEC LA BOITE DE DIALOGUE

DANS LE FICHIER DU FORMULAIRE PRINCIPAL :

// --------------------------

// CHANGEMENT DE LA COULEUR DE

FOND DU TITRE

// --------------------------

private: System::Void

btnCouleur_Click(System::Object^

sender, System::EventArgs^ e)

{ // si le choix de couleur

est validé dans la boîte de

dialogue

if (cdgTitre-> ShowDialog()

== System::Windows::Forms::

DialogResult::OK)

{ // changement de la

couleur du label

lblTitre-> BackColor=

cdgTitre->Color;

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 81/103

81 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

6.6- Le composant FONTDIALOG

� MEMBRES DE LA CLASSE FONTDIALOG (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.fontdialog_members(VS.80).aspx

La boite de dialogue FontDialog permet d'ouvrir une boite de sélection de fontes.

6.6.1- La configuration et l’utilisation d’une fontdialog

Comment paramétrer et récupérer le choix d’une fontdialog ? � Propriétés :

− Font : police sélectionnée. − Color : couleur de la police sélectionnée. − MinSize : taille minimale, en points, pouvant être sélectionnée par un utilisateur. − MaxSize : taille maximale, en points, pouvant être sélectionnée par un utilisateur. − ShowApply : indique si la boîte de dialogue comporte un bouton Appliquer. − ShowColor : indiquant si la boîte de dialogue propose un choix de couleurs. − ShowEffects : indiquant si la boîte de dialogue comporte des contrôles permettant à

l'utilisateur de spécifier des options de mise en forme du texte (barré, souligné...). − ShowHelp : indiquant si la boîte de dialogue comporte un bouton Aide.

� Méthodes : − ShowDialog() : exécute la boîte de dialogue en mode Modal.

� Evènements : − Apply : l'utilisateur clique sur le bouton Appliquer dans la boîte de dialogue. − HelpRequest : l'utilisateur clique sur le bouton Aide dans la boîte de dialogue.

Exemple : CHANGEMENT DE LA FONTE AVEC LA BOITE DE DIALOGUE

DANS LE FICHIER DU FORMULAIRE PRINCIPAL :

// si l'utilisateur a

validé le choix de font

dans la boîte de

dialogue

if (fdgTitre->

ShowDialog() ==

System::Windows::Forms:

:DialogResult::OK)

{

// changement de la

couleur du label

lblTitre->Font=

fdgTitre->Font;

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 82/103

82 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

7- Les composants de manipulation de dates

7.1- Le composant DATETIMEPICKER

� MEMBRES DE LA CLASSE DATETIMEPICKER(espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.datetimepicker_members(VS.80).aspx

La classe DateTimePicker est utilisée pour permettre à l'utilisateur de sélectionner une date et une heure, et pour afficher cette valeur date et heure au format spécifié. Le DateTimePicker et le MonthCalendar sont très proches. Le DateTimePicker permet de définir un format de date personnalisé.

7.1.1- La configuration d’un datetimepicker

Comment paramétrer un datetimepicker ?

� Propriétés :

− CalendarFont : police dans le datetimepicker. − CalendarMonthBackground : couleur d’arrière plan de la zone de dates du calendrier. − CalendarTitleBackColor : couleur d'arrière-plan de la zone de titre du calendrier. − MinDate : date minimale autorisée (classe DateTime : voir la classe MonthCalendar,

paragraphe suivant). − MaxDate : date maximale autorisée (DateTime).

7.1.2- L’utilisation d’un datetimepicker

Comment faire fonctionner un datetimepicker ?

� Propriétés :

− Value : valeur de date/heure assignée au datetimepicker (DateTime). Exemple :

dtpDate→Value = DateTime::Now; MessageBox::Show( dtpDate→Value.ToString());

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 83/103

83 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− Format : format d’affichage de la date et de l’heure dans le datetimepicker. Si la propriété Format a la valeur DateTimePickerFormat.Custom, un format personnalisépeut-être défini avec la propriété CustomFormat. Valeurs possibles : Custom date/heure affichées dans un format personnalisé. Long date/heure affichées dans le format de date longue. Short date/heure affichées dans le format de date courte. Time date/heure affichées dans le format d'heure.

− CustomFormat : format d’affichage de la date, c’est une chaîne de format

personnalisée. Cette dernière peut être une combinaison de caractères de champ personnalisés et d'autres caractères littéraux (formats personnalisés : http://msdn.microsoft.com/fr-fr/library/8kb3ddd4(VS.80).aspx, formats standards : http://msdn.microsoft.com/fr-fr/library/az4se3k1(VS.80).aspx). Exemples :

format 11 octobre 2001 – jeudi ↔ "dd MMMM yyyy - dddd" format 11 octobre à 9h43 ↔ "dd MMMM 'à' h'h'mm" format 11/10/2001 09:06 ↔ "dd'/'MM'/'yyyy hh':'mm"

� Evènements :

− ValueChanged : se produit lorsque la propriété Value est modifiée.

Exemple : AFFICHAGE DE LA DATE D’UN DATETIMEPICKER DANS UN LABEL

// ----------------------------------

// RECUPERATION DE LA DATE CHOISIE

// La propriété Format = Custom

// Le CustomFormat = dddd dd MMMM yyyy // ----------------------------------

private: System::Void

dateTimePicker1_ValueChanged(System::Obj

ect^ sender, System::EventArgs^ e)

{

lblDate->Text= dtpDate->Text ;

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 84/103

84 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

7.2- Le composant MONTHCALENDAR

� MEMBRES DE LA CLASSE MONTHCALENDAR (espace de noms

System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.monthcalendar_members(VS.80).aspx

La classe MonthCalendar permet à l'utilisateur de sélectionner une date et une heure à l'aide d'un affichage visuel.

7.2.1- La configuration d’un monthcalendar

Comment paramétrer un monthcalendar ? � Propriétés :

− Font : police dans le monthcalendar. − BackColor : couleur d'arrière-plan de la zone de dates du calendrier. − TitleBackColor : couleur d'arrière-plan de la zone de titre du calendrier. − FirstDayOfWeek : premier jour de la semaine affiché dans le calendrier du mois. − MinDate : date minimale autorisée (classe DateTime : http://msdn.microsoft.com/fr-

fr/library/system.datetime_members(VS.80).aspx avec les membres : ⋅ Propriété Date : Composant Date (DateTime). ⋅ Propriété Year : année (int). ⋅ Propriété Month : mois (int). ⋅ Propriété Day : jour du mois (int). ⋅ Propriété DayOfWeek : jour de la semaine (énumération : Monday, Tuesday,

Wenesday, Thursday, Friday, Saturday, Sunday). Exemple : If ( dt.DayOfWeek == DayOfWeek::Thursday )

⋅ Propriété DayOfYear : jour de l’année (int). ⋅ Propriété Hour : heure (int). ⋅ Propriété Minute : minutes (int). ⋅ Propriété Second : secondes (int). ⋅ Propriété Millisecond : nombre de millisecondes (int). ⋅ Propriété Today : date actuelle (DateTime). ⋅ Propriété Now : temps actuel (DateTime). ⋅ Méthode ToShortDateString() : convertit au format de date courte. ⋅ Méthode ToLongDateString() : convertit au format de date longue. ⋅ Méthode ToShortTimeString() : convertit au format d'heure courte. ⋅ Méthode ToLongTimeString() : convertit au format d'heure complète. ⋅ Méthode ToString() : convertit sous forme de chaîne de caractères. ⋅ Méthode ToFileTime() : convertit la valeur de DateTime en heure de fichier

Windows. ⋅ Méthode DaysInMonth(année,mois) : retourne le nombre de jours compris

dans le mois et l'année spécifiés (donnés sous forme de int).

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 85/103

85 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− MaxDate : date maximale autorisée (DateTime). − ShowWeekNumbers : indique si le monthcalendar affiche la numérotation des

semaines (1-52) à gauche de chaque ligne de jours. − MonthlyBoldedDates : tableau d'objets DateTime qui détermine les jours du mois à

afficher en gras. Via le concepteur : cliquer sur la propriété, ajouter des jours et fixer leur Value grâce au calendrier. Modification de la propriété par code :

array<System::DateTime>^jourGras = { System::DateTime(2002,1,15,0,0,0,0), System::DateTime(2002,1,30,0,0,0,0 )};

− TodayDate : valeur utilisée par le monthcalendar comme date du jour. − ShowToday : indique si la propriété TodayDate est affichée en bas du monthcalendar. − ShowTodayCircle : indique si la date du jour est entourée par un cercle ou un carré.

7.2.2- L’utilisation d’un monthcalendar

Comment faire fonctionner un monthcalendar ? � Propriétés :

− MaxSelectionCount : nombre maximal de jours pouvant être sélectionnés. − SelectionRange : plage de dates sélectionnée dans le monthcalendar. − SelectionStart : date et heure de début de la plage de dates sélectionnée (DateTime). − SelectionEnd : date de fin de la plage de dates sélectionnée (DateTime).

� Evènements : − DateChanged : se produit lorsque la date sélectionnée est modifiée. Le paramètre

DateRangeEventArgs du gestionnaire d’évènements a pour propriétés : ⋅ Start : 1° valeur de date/heure dans la plage que l'utilisateur a sélectionnée. ⋅ End : dernière valeur de date/heure dans la plage que l'utilisateur a sélectionnée. Exemple, affichage des dates de début et de fin dans un label :

lblDate->Text = String::Format( "Date Changed: Start = {0} : End = {1}", e→Start.ToShortDateString(), e→End.ToShortDateString() );

− DateSelected : se produit lorsque l'utilisateur effectue une sélection de date explicite à l'aide de la souris. Le gestionnaire d’évènement utilise le paramètre DateRangeEventArgs (voir évènement DateChanged).

Exemple : AFFICHAGE DE LA DATE D’UN MONTHCALENDAR DANS UN LABEL

// -------------------------------

// RECUPERATION DE LA DATE CHOISIE

// -------------------------------

private: System::Void

mtcDate_DateSelected(System::Object^

sender,

System::Windows::Forms::DateRangeEventAr

gs^ e)

{

lblDate->Text= mtcDate->

SelectionStart.Date.ToString("d") ;

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 86/103

86 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

8- Les composants d’affichages structurés

8.1- Le composant LISTVIEW

� MEMBRES DE LA CLASSE LISTVIEW (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.listview_members(VS.80).aspx

La classe listview est utilisé pour afficher des listes d'éléments avec le texte de chaque élément et, éventuellement, une icône identifiant le type de l'élément. Voir par exemple, la liste de fichiers de l'Explorateur Windows.

Le contrôle ListView ressemble au contrôle ListBox dans la mesure où il affiche une liste d'éléments. La principale différence est que le contrôle ListView permet à l'utilisateur d'afficher les éléments de la liste de différentes manières.

8.1.1- La configuration d’une listview

Comment paramétrer une listview ?

� Propriétés : − Items : collection des éléments (objet ListViewItem) de la listview.

− Items[i] : c’est un ListViewItem (ajouter un item dans la propriété Items pour avoir accès aux propriétés de l’Item) : un élément de la collection de la listview. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listviewitem_members(VS.80).aspx) :

⋅ Propriété BackColor : couleur d'arrière-plan de l’élément. ⋅ Propriété Text : intitulé de l’élément. ⋅ Propriété Font : police du texte de l’élément. ⋅ Propriété Checked : élément coché ou non. ⋅ Propriété ImageIndex : indice de l’image (dans les imagelist associée au

listview via les propriétés LargeImageList et SmallImageList) qui est affichée devant l’élément.

⋅ Propriété ImageKey : nom de l’image affichée devant l’élément. ⋅ Propriété SubItems : collections contenant tous les sous-éléments de l'élément. ⋅ SubItems[i] : c’est un ListViewSubItem (ajouter un subitem dans la propriété

SubItems pour avoir accès aux propriétés du SubItem) : un sous-élément d’un élément de la collection de la listview. Cette classe possède différents membres

o Propriété BackColor : couleur d'arrière-plan du sous élément. o Propriété Text : intitulé du sous élément. o Propriété Font : police du texte du sous élément.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 87/103

87 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

− Columns : collection contenant tous les en-têtes de colonne qui apparaissent dans la listview. Ses membres : http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listview.columnheadercollection_members(VS.80).aspx

− Columns[i] : une colonne de la collection Columns (ajouter une colonne dans la propriété Columnss pour avoir accès aux propriétés de la colonne). Cette classe possède différents membres :

⋅ Propriété Text : intitulé de la colonne. ⋅ Propriété TextAlign : alignement du titre de colonne (Left, Right, Center). ⋅ Propriété Width : largeur de colonne.

− AllowColumnReorder : indique si l'utilisateur a la possibilité de réorganiser les

colonnes de la listview en faisant glisser leur en-tête. − LargeImageList et SmallImageList : composants imagelist avec les images pour la

listview, devant les intitulés des éléments. Pour utiliser ces images, il faut aussi fixer les propriétés ImageIndex ou ImageKey des éléments.

− View : façon d'afficher les éléments dans la listview.

Valeurs possibles : Details Chaque élément s'affiche sur une ligne séparée et ses sous-éléments sont

disposées en colonnes. LargeIcon Chaque élément s'affiche sous forme d'une icône de taille normale, avec

une étiquette placée au-dessous. List Chaque élément s'affiche sous forme d'une petite icône, avec une

étiquette placée à droite. Les éléments sont répartis dans des colonnes sans en-têtes.

SmallIcon Chaque élément s'affiche sous forme d'une petite icône, avec une étiquette placée à droite.

Tile Chaque élément apparaît sous la forme d'une icône normale avec l'étiquette d'élément et les informations de sous-élément à sa droite.

− GridLines : indique si un quadrillage s'affiche entre les lignes et les colonnes contenant des éléments et des sous-éléments à l'intérieur de la listview (en mode Détail).

− CheckBoxes : indique si une case à cocher doit apparaître devant chaque élément. − FullRowSelect : indique si le fait de cliquer sur un élément sélectionne aussi tous ses

sous-éléments. − Sorting : ordre de tri des éléments de la listview.

Valeurs possibles : Ascending Les éléments sont triés par ordre croissant. Descending Les nœuds sont triés par ordre décroissant. None Les éléments ne sont pas triés.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 88/103

88 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

8.1.2- L’utilisation d’une listview

Comment faire fonctionner une listview ?

� Propriétés :

− Items : collection des éléments (objet ListViewItem) de la listview. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listview.listviewitemcollection_members(VS.80).aspx), dont :

⋅ Propriété Count : nombre d'éléments figurant dans la collection. ⋅ Méthode Insert(index,^ListViewItem) : insère un élément ListViewItem dans

la collection à l'indice spécifié. ⋅ Méthode RemoveAt(index) : supprime un élément ListViewItem de la

collection à l'indice spécifié.

− Items[i] : c’est un ListViewItem : un élément de la collection de la listview. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listviewitem_members(VS.80).aspx) :

⋅ Propriété SubItems : collections contenant tous les sous-éléments de l'élément.

Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.listviewitem.listviewsubitemcollection_members(VS.80).aspx), dont :

o Propriété Count : nombre de sous-éléments figurant dans la collection. o Méthode Insert(index,^ListViewSubItem) : insère un sous-élément

ListViewSubItem dans la collection à l'indice spécifié. o Méthode RemoveAt(index) : supprime un sous-élément

ListViewSubItem de la collection à l'indice spécifié. � Evènements :

− ItemCheck : se produit lorsqu'un élément est coché ou décoché (si la propriété CheckBox est à true !). Le paramètre ItemCheckEventArgs du gestionnaire d’évèvement associé possède les membres suivants :

⋅ Propriété Index : indice de l’élément cliqué. ⋅ Propriété NewValue : état de la checkbox associée à l’élément cliqué : par

exemple, CheckState::Checked ou CheckState::Unchecked.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 89/103

89 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : GESTION DE STOC INFORMATIQUE AVEC UNE LISTVIEW

AJOUTS D’ELEMENTS A LA LISTE A PARTIR DE SAISIES UTILISATEUR :

//-----------------------------------

// Ajout d'enregistrements à la liste

//-----------------------------------

private: System::Void btnAjouter_Click(System::Object^ sender,

System::EventArgs^ e)

{ // ajout d'un nouvel enregistrement (item et 2 subitems) à partir des

// caractéristiques du matériel entrées par l'utilisateur

// ------------------------------------------------------------------

// sauvegarde des caractéristiques du nouveau matériel dans un tableau

// de string ; nouvel élément : type(item), réf(subitem), prix(subitem)

array<String^> ^ nomChamps = {txtTypeMateriel->Text,txtReference->

Text,txtPrix->Text};

// création du nouvel enregistrement à partir du nom des 3 champs, de

// l'indice de l'image associée au matériel dans une imageList, de la

// couleur du premier plan de l'enregistrement (couleur police), de la

// couleur de fond de l'enregistrement et de la font

System::Drawing::Font ^ police = gcnew System::Drawing::Font("Arial",

11, FontStyle::Bold);

ListViewItem ^ enregistrement = gcnew ListViewItem(nomChamps,-

1,Color::DarkViolet,Color::Yellow,police);

// insertion du nouvel enregistrement dans la listview, en dernier

lsvStoc->Items->Insert(lsvStoc->Items->Count, enregistrement );

// association d’un indice dans les imageList pour grande et petites

//icônes (pour les différents modes d'affichage d'icônes)

lsvStoc->Items[lsvStoc->Items->Count-1]->ImageIndex= lsvStoc->Items->

Count-1;

// zones de saisie effacée

txtTypeMateriel->Clear(); txtReference->Clear(); txtPrix->Clear();

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 90/103

90 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

GESTION VISUELLE DES ELEMENTS DE LA LISTE :

// --------------------------------------

// Suppression d'un enregistrement cliqué

// --------------------------------------

private: System::Void lsvStoc_ItemCheck(System::Object^ sender,

System::Windows::Forms::ItemCheckEventArgs^ e)

{ // si l'enregistrement choisi n'est pas le dernier

if (e->Index < lsvStoc->Items->Count -1)

{ if( e->NewValue == CheckState::Checked ) // s'il est devenu coché

{ lsvStoc->Items->RemoveAt(e->Index); //supprimer l’enregistrement

}

} }

// ------------------------------------------

// Inversion ordre de tri des enregistrements

// ------------------------------------------

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 91/103

91 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

private: System::Void btnTrier_Click(System::Object^ sender,

System::EventArgs^ e)

{ // inverser ordre tri (MARCHE SI SORTING EST A NONE DANS LE CONCEPTEUR)

if (lsvStoc->Sorting == SortOrder::Ascending)

{ // ordre décroissant selon l'item (1° colonne : type matériel)

lsvStoc->Sorting = SortOrder::Descending;

}

else

{ lsvStoc->Sorting = SortOrder::Ascending; // ordre croissant

}

}

// ---------------------------------

// Modification affichage des icônes

// ---------------------------------

private: System::Void listeToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ lsvStoc->View = View::List; // voir la liste sous forme de liste }

private: System::Void détailsToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ lsvStoc->View = View::Details; // vue détaillée de la liste }

private: System::Void miniaturesToolStripMenuItem_Click(System::Object^

sender, System::EventArgs^ e)

{ lsvStoc->View = View::SmallIcon; // vue miniatures }

private: System::Void icônesToolStripMenuItem_Click(System::Object^ sender,

System::EventArgs^ e)

{ lsvStoc->View = View::LargeIcon; // vue sous forme d'icônes }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 92/103

92 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

8.2- Le composant TREEVIEW

� MEMBRES DE LA CLASSE TREEVIEW (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.treeview_members(VS.80).aspx

La classe TreeView permet d'afficher des éléments sous une forme arborescente. Très utilisé, avec ses noeuds cliquables et déroulables, elle est au centre de beaucoup d'application, comme dans l'explorateur de fichiers de windows.

8.2.1- La configuration d’un treeview

Comment modifier l’apparence d’un treeview ? � Propriétés :

− Nodes : collection des nœuds d’arbre (objet TreeNode) du treeview. Cette classe possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.treenodecollection(VS.80).aspx), dont :

⋅ Propriété Text : intitulé du noeud. ⋅ Propriété Checked : nœud coché ou non. ⋅ Propriété ImageIndex : indice de l’image (de l’imagelist) d'un nœud d'arbre non

sélectionné ; Propriété SelectedImageIndex : indice de l’image (de l’imagelist) d’un nœud sélectionné.

− CheckBoxes : présence ou non de cases à cocher devant tous les nœuds du treeview. − ShowPlusMinus : provoque l'affichage d'un bouton (+) ou (-) à côté de chaque nœud,

permettant respectivement de développer ou réduire le noeud. − ShowRootLines : affichage ou non de lignes reliant les nœuds d'arbre racines entre eux. − ShowLines : affichage ou non de lignes qui relient les nœuds enfants à leur racine. − HotTracking : modification ou non de l'apparence des étiquettes des nœuds d'arbre

lorsque le pointeur de la souris passe dessus (éventuellement lien hypertexte).

− ImageList : composant imagelist avec les images pour le treeview, à côté des nœuds d'arbre. Pour utiliser ces images, il faut aussi fixer les propriétés ImageIndex/ImageKey et SelectedImageIndex/SelectedImageKey. Quelques propriétés de cette classe :

⋅ ColorDepth : profondeur (nombre) de couleur disponibles pour les images. ⋅ TransparentColor : couleur à traiter comme transparente. ⋅ Imagesize : taille des images dans la liste d'images, 16x16 ici. ⋅ Images : collection d’images de l’imagelist. Renseigner la propriété Name de

chaque image, afin d'y accéder facilement par la suite (correspond au Key) : imgPC→Images["RAM"] ou imgPC→Images[0].

− ImageIndex : indice de l’image (dans l’imagelist associé) affichée lorsqu' un nœud d'arbre est non sélectionné. Pour personnaliser l’image d’un nœud non sélectionné, il faut initialiser la propriété TreeNode.ImageIndex (trvStoc→Nodes[i] →ImageIndex).

− ImageKey : nom de l’image (de l’imagelist) pour un nœud d'arbre non sélectionné. − SelectedImageIndex : indice de l’image (de l’imagelist) d’un nœud d'arbre sélectionné.

Pour personnaliser l’image d’un nœud, initialiser la propriété TreeNode.SelectedImageIndex (trvStoc→Nodes[i] →SelectedImageIndex).

− SelectedImageKey : nom de l’image (de l’imagelist) pour un nœud d'arbre sélectionné.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 93/103

93 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

8.2.2- L’utilisation d’un treeview

Comment faire fonctionner un treetview ?

� Propriétés : − Nodes : collection des nœuds d’arbre (objet TreeNode) du treeview. Cette classe

possède différents membres (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.treenodecollection(VS.80).aspx), dont :

⋅ Méthode Expand() : développe un nœud du treeview : trvStoc→Nodes[0]→Expand() ;

⋅ Méthode Collapse() : réduit un nœud du treeview : trvStoc→Nodes[0]→Collapse() ;

⋅ Méthode Add(TreeNode ^) : ajoute un nœud d'arbre précédemment créé à la fin de la collection de nœuds du treeview. Différents prototypes existent pour cette fonction: http://msdn.microsoft.com/fr-fr/library/system.windows.forms.treenodecollection.add(VS.80).aspx

⋅ Méthode Remove(TreeNode ^) : supprime, de la collection de nœuds du treeview, le nœud d’arbre spécifié.

⋅ Méthode Clone() : exemple TreeNode ^noeudClone=safe_cast <TreeNode^> (trvStoc→Nodes[0]→Clone()) copie le nœud d'arbre Nodes[0] et l'ensemble du sous-arbre rattaché à ce nœud d'arbre dans un nouveau TreeNode.

− AllowDrop : indication si le treeview peut accepter des données que l'utilisateur y fait glisser. Si cette propriété est à false, aucun opération de glisser/déplacer ne sera possible.

� Méthodes :

− ExpandAll() : développe tous les nœuds du treeview. − CollapseAll() : réduit tous les nœuds du treeview. − GetNodeAt(Point) ou GetNode(X,Y) : récupère le nœud d'arbre situé au point spécifié.

� Evènements : − DoDragDrop(données à faire glisser, type de glissement) : démarre une opération

glisser-déplacer. Le type de glissement peut-être : All Les données sont copiées, supprimées de la source de glissement et

parcourues dans la cible de déplacement. Copy Les données sont copiées dans la cible de déplacement. Link Les données issues de la source de glissement sont liées à la cible de

déplacement. Move Les données issues de la source de glissement sont déplacées vers la

cible de déplacement. None La cible de déplacement n'accepte pas les données. Scroll Le défilement est sur le point de commencer ou est en cours dans la

cible de déplacement. − ItemDrag : événement déclenché du treeview source dès que l'utilisateur commence à

déplacer un nœud d'arborescence. Dans le gestionnaire d’évènements associé, il faut

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 94/103

94 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

appeler la méthode DoDragDrop() pour lancer la procédure de glisser/déplacer. Le paramètre ItemDragEventArgs du gestionnaire d’évènement possède les membres :

⋅ Propriété Button : indique les boutons de la souris sur lesquels l'utilisateur a appuyé lors de l'opération glisser. Exemple :

if (e→Button == System::Windows::Forms::MouseButtons::Left) ⋅ Propriété Item : élément que l'utilisateur fait glisser.

− DragEnter : se produit, au niveau de la destination, lorsqu'un objet (ici un nœud -

TreeNode-) est déplacé dans les limites du treeview de destination. L'événement DragEnter autorise un type de glissement (voir tableau du DoDragDrop()) sur le treeview de destination. Le paramètre DragEventArgs du gestionnaire d’évènement possède les membres suivants :

⋅ Propriété AllowedEffect : opérations de glisser-déplacer qui ont été autorisées par la source de l'événement Glisser. Voir le tableau des types de glissement.

⋅ Propriété Effect : effet provoqué sur la destination dans une opération de glisser-déplacer. Voir le tableau des types de glissement.

⋅ Propriété Data : données associées à l’opération de glisser/déplacer. Différents membres sont disponibles :

o Méthode GetData(String) ou GetData(type) : récupère les données associées au format de données ou de type de classe spécifié.

o Méthode GetDataPresent(String) ou GetDataPresent(type) : détermine si les données Data sont associées au format spécifié.

⋅ Propriété KeyState : état actuel des touches MAJ, CTRL et ALT, ainsi que l'état des boutons de la souris. Exemples :

if ( (e→KeyState & (8 + 32)) == (8 + 32) ) // détection touche CTL + ALT if ( (e→KeyState & 32) == 32 ) // détection touche ALT if ( (e→KeyState & 4) ==4 ) // détection touche SHIFT if ( (e→KeyState & 8) ==8 ) // détection touche CTL

⋅ Propriété X : coordonnée x du pointeur de la souris, en coordonnées d'écran

(pixels). ⋅ Propriété Y : coordonnée y du pointeur de la souris, en coordonnées d'écran

(pixels). Pour convertir X et Y en coordonnées clientes (position dans un composant)

Point pPixels(X,Y); Point pClient= Composant→PointToClient(pPixels) ;

− DragDrop : le dernier événement à gérer est l'événement DragDrop du treeview de

destination. Une opération de glisser-déplacer est en cours et l'objet TreeNode qui est glissé a été déplacé sur le treeviex de destination. Dans le gestionnaire d’évènement, il faut extraire l'objet TreeNode de la source, l’ajouter à la destination. Le gestionnaire d’évènements du DragDrop possède un paramètre DragEventArgs (voir l’évènement DragEnter).

− DragLeave : se produit lorsque le noeud est déplacé hors des limites du treeview de destination.

− DragOver : se produit lorsque le noeud est déplacé dans les limites du treeview de destination.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 95/103

95 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : GESTION STOCS /PANIER CLIENT AVEC DEPLACEMENT DES PRODUITS AUTORISATION DE L’OPERATION DE DEPLACEMENT :

// -----------------------------------------------------

// ItemDrag : cet événement est déclenché de la source contrôle TreeView dès

// que l'utilisateur démarre déplacer le nœud d'arborescence. Appeler alors la

// méthode DoDragDrop pour lancer la procédure de glisser/déplacer.

// -----------------------------------------------------

private: System::Void trvStoc_ItemDrag(System::Object^ sender,

System::Windows::Forms::ItemDragEventArgs^ e)

{ // démarrage d’une opération de déplacement pour l'élément glissé

DoDragDrop(e->Item, DragDropEffects::Move); }

// -----------------------------------------------------

// DragEnter : à gérer dans la destination contrôle TreeView.

// Cet événement se produit lorsque à partir de la source contrôle TreeView,

// l'utilisateur glisser l'objet TreeNode vers un point de la destination

// contrôle TreeView. L'événement DragEnter spécifie l'opération de

// déplacement/copie valide pour ce contrôle.

// -----------------------------------------------------

private: System::Void trvClient_DragEnter(System::Object^ sender,

System::Windows::Forms::DragEventArgs^ e)

{ // ATTENTION : le treeview de destination doit posséder au moins un nœud

e->Effect = DragDropEffects::Move; }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 96/103

96 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

REALISATION DU DEPLACEMENT :

// -----------------------------------------------------

// DragDrop : l'événement DragDrop de la destination contrôle TreeView.

// Cet événement se produit lorsque l'objet TreeNode qui est glissé a été

// laché sur la destination contrôle TreeView.

// l'objet TreeNode sélectionné est extrait du treeview source (trvStoc) et

// ajouté au treeview destination (trvClient).

// L'objet Data permet de récupérer les données à transférer.

// La méthode GetData de l'objet Data extrait le nœud qui est glissé à partir

// du treeview source. La méthode GetNodeAt détermine où ce nœud est ajouté // sur le contrôle de destination. Après avoir déterminé la position

// destination, ajouté le nœud source comme un enfant du nœud de destination,

// supprimer le nœud source du TreeView source (opération de déplacement).

// -----------------------------------------------------

private: System::Void trvClient_DragDrop(System::Object^ sender,

System::Windows::Forms::DragEventArgs^ e)

{

// la méthode GetDataPresent détermine si les données stockées par le

// glisser/déplacer sont disponibles.

if(e->Data->GetDataPresent("System.Windows.Forms.TreeNode"))

{

// récupération des coordonnées du pointeur de la souris dans le

// treeview de destination (trvClient)

Point p(e->X,e->Y);

// Calcul emplacement du point destination à l'écran à partir des

// coordonnées souris

Point pt = safe_cast <TreeView ^> (sender)->PointToClient(p);

// crée le noeud d'arbre destination

TreeNode ^ DestinationNode = safe_cast <TreeView ^> (sender)->

GetNodeAt(pt);

// lien vers les données à glisser/déplacer

TreeNode ^ NewNode = safe_cast <TreeNode ^> (e->Data->

GetData("System.Windows.Forms.TreeNode"));

// Ajout des données à transférer dans le noeud destination

DestinationNode->Nodes->Add(safe_cast <TreeNode ^> (NewNode->

Clone()));

// visualisation (par ouverture de l'arbre) du noeud et de ses

// enfants rajoutés

DestinationNode->ExpandAll();

// suppression du noeud d'origine

NewNode->Remove();

}

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 97/103

97 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

9- Les composants de manipulation d’images

9.1- Le composant PICTUREBOX

� MEMBRES DE LA CLASSE PICTUREBOX (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.picturebox_members(VS.80).aspx

La classe PictureBox sert à afficher des images bitmap, icône, JPEG, GIF, PNG, métafichiers (certains EMF, WMF).

9.1.1- La configuration d’une picturebox

Comment paramétrer une picturebox ? � Propriétés :

− BackColor : couleur d'arrière-plan de la picturebox.

− BackgroundImage : image d'arrière-plan affichée dans la picturebox.

− BackgroundImageLayout : façon dont l’image d'arrière-plan est affichée. − BorderStyle : type de bordure de la picturebox. − ErrorImage : image à afficher lorsqu'une erreur se produit pendant le processus de

chargement d'image ou si le chargement d'image est annulé. − Image : image que la picturebox affiche. − ImageLocation : chemin d'accès de l’image à afficher dans la picturebox. − InitialImage : image affichée au cours du chargement de l'image principale. − SizeMode : indique comment l'image est affichée.

Valeurs possibles : AutoSize La picturebox est dimensionnée selon la taille de l'image contenue. CenterImage L'image est affichée au centre de la picturebox ; si l'image est plus

grande que la picturebox, les bords externes sont découpés. Normal L'image est placée dans le coin supérieur gauche de la picturebox.

L'image est découpée si elle est plus grande que la picturebox. StretchImage L'image contenue dans la picturebox est étirée ou rétrécie pour

correspondre à la taille de la picturebox. Zoom L'image est augmentée ou réduite en conservant les proportions.

� Méthodes :

− Load() ou Load(url) : affiche l’image précisée dans ImageLocation ou affecte à ImageLocation l'URL spécifiée et affiche l'image indiquée.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 98/103

98 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

9.2- Le composant IMAGELIST

� MEMBRES DE LA CLASSE IMAGELIST (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.imagelist_members(VS.80).aspx

La classe ImageList est utilisé pour stocker des images. Son intérêt est sa facilité d'utilisation avec d'autres contrôles (ListView, TreeView, Toolbar, ...).

9.2.1- L’utilisation d’une imagelist

Comment remplir et utiliser une imagelist ? � Propriétés :

− ColorDepth : profondeur (nombre) de couleur disponibles pour les images. − TransparentColor : couleur à traiter comme transparente. Membres Color :

http://msdn2.microsoft.com/fr-fr/library/system.drawing.color_members(VS.80).aspx − Imagesize : taille des images dans la liste d'images. A fixer avant d’ajouter les images. − Images : collection d’images dans l’imagelist. Cliquer pour ajouter des images. Ne pas

oublier de renseigner la propriété Name de chaque image ajoutée, afin d'y accéder facilement par la suite (correspond au Key). Il est alors possible d’accéder à une image très facilement : imgJardin→Images["arbre"] ou imgJardin→Images[0]. La classe associée à Images possède différents membres (http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.imagelist.imagecollection_members(VS.80).aspx):

⋅ Propriété Count : nombre d'images actuellement dans la liste. ⋅ Propriété Empty : valeur indiquant si l’imagelist possède des images. ⋅ Propriété Item(index ou key) : image dans un imagelist existant. ⋅ Propriété Keys : collection de clés (noms) associée aux images d’une imagelist. ⋅ Méthode Add(image) : ajout d’une image dans l’imagelist. Exemples :

imgJardin→Images→Add( Bitmap::FromFile( "C:\\MySmallImage2.bmp" )); imgJardin→Images→Add( Image::FromFile( "c:\\FeatherTexture.bmp" ));

⋅ Méthode SetKeyName (index,name) : définit la clé de l’image d’indice donné.

Exemple : CHARGEMENT D’IMAGES DE DIFFERENTS FORMATS

TRANSFERT D’UNE IMAGE DE IMAGELIST→→→→PICTUREBOX (CHOIX DANS 1 COMBOBOX) :

// -------------------------

// Récupération du choix de

l’image dans la combobox

// -------------------------

private: System::Void cbImage_

SelectedIndexChanged(System::Obje

ct^sender, System::EventArgs^ e)

{ //transfert image de imagelist

(via son indice) vers picturebox

picImage->Image= imgImages->

Images[cbImage->SelectedIndex];

}

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 99/103

99 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

10- Les composants de manipulation des pages WEB

10.1- Le composant LINKLABEL

� MEMBRES DE LA CLASSE LINKLABEL (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.linklabel_members(VS.80).aspx

La classe LinkLabel est analogue à la classe Label, à la différence qu'elle peut afficher un lien hypertexte.

10.1.1- L’aspect d’un linklabel

Comment créer l’apparence d’un linklabel ? � Propriétés :

− BackColor : couleur d'arrière-plan. BorderStyle : type de bordure du linklabel. − Font : police du texte affiché par le contrôle. − Text : texte dans le linklabel. TextAlign : alignement du texte dans le linklabel. − Padding : espacement, en pixels, entre les bords d'un linklabel et son contenu. − ImageList : contient les images à afficher dans le linklabel. Pour que l’image s’affiche,

il faut aussi fixer la propriété ImageIndex ou ImageKey (en liaison avec l’imagelist). − Image : image affichée dans le linklabel. ImageAlign : façon dont l’image est affichée. − ImageIndex : indice de l’image, ImageKey : nom de l’image (dans l’imagelist associé).

10.1.2- L’utilisation d’un linklabel

Comment faire fonctionner un linklabel ? � Propriétés :

− LinkArea : intervalle dans le texte à traiter comme un lien hypertexte. − Links : collection de liens hypertexte contenus dans le linklabel : plusieurs liens

hypertexte peuvent être définis dans le texte du contrôle. Un membre de cette classe : ⋅ Méthode Add(int32,int32,URL) : ajoute une URL à la collection avec le

LinkArea défini en premier. − DisabledLinkColor : couleur utilisée pour afficher un lien désactivé. − ActiveLinkColor : couleur utilisée pour afficher un lien actif. − LinkColor : couleur utilisée pour afficher un lien normal. − VisitedLinkColor : couleur utilisée pour afficher un lien précédemment visité. − LinkVisited : valeur indiquant si un lien doit être affiché comme s'il avait été visité. − LinkBehavior : valeur qui représente le comportement d'un lien. Valeurs possibles :

AlwaysUnderline le lien s'affiche toujours avec le texte souligné. HoverUnderline le texte est souligné lorsque la souris pointe sur le texte du lien. NeverUnderline le texte du lien n'est jamais souligné. SystemDefault voir paramètres de la boîte de dialogue Options Internet d'IE.

� Evènements : − LinkClicked : l’utilisateur clique sur un lien hypertexte dans le linklabel. Le paramètre

LinkLabelLinkClickedEventArgs, du gestionnaire d'événements, permet d’obtenir le lien hypertexte sur lequel l'utilisateur a cliqué (propriété Link→LinkData du paramètre).

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 100/103

100 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

10.2- Le composant WEBBROWSER

� MEMBRES DE LA CLASSE WEBBROWSER (espace de noms System::Windows::Forms) :

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.webbrowser_members(VS.80).aspx La classe WebBrowser permet d'afficher très facilement des pages html et de naviguer sur le WEB. Le webbrowser peut servir à fournir une assistance utilisateur HTML intégrée ou des fonctionnalités de navigation Web dans l’application développée.

10.2.1- La configuration d’un webbrowser

Comment paramétrer un webbrowser ? � Propriétés :

− ScrollBarsEnabled : indique si des barres de défilement sont affichées. � Méthodes :

− Print() : imprime le document en cours avec les paramètres d'impression actuels. − ShowPageSetupDialog() : ouvre la boîte de dialogue Mise en page d'Internet Explorer. − ShowPrintDialog() : ouvre la boîte de dialogue Imprimer dans Internet Explorer sans

définir des valeurs d'en-tête et de pied de page. − ShowPrintPreviewDialog() : ouvre la boîte de dialogue Aperçu avant impression de IE. − ShowPropertiesDialog() : ouvre la boîte de dialogue Propriétés dans IE. − ShowSaveAsDialog() : ouvre la boîte de dialogue Enregistrer la page Web dans IE.

10.2.2- La navigation avec un webbrowser

Comment faire fonctionner un webbrowser ? � Propriétés :

− Url : URL du document par défaut au démarrage. − AllowNavigation : indique si le webbrowser peut naviguer vers une autre page après le

chargement de sa page initiale. − AllowWebBrowserDrop : indique si le webbrowser peut naviguer vers des documents

qui sont déposés sur lui. − ScriptErrorsSuppressed : indique si le webbrowser affiche des boîtes de dialogue

d'erreur. � Méthodes :

− GoHome() : navigation vers la page de démarrage. − GoBack() : navigation vers la page précédente. − GoForward() : avance dans l'historique de navigation. − Stop() : arrête le chargement de l’URL en cours. − Refresh() : actualise la page WEB actuelle. − Navigate(Url) : navigue vers une nouvelle URL. Le paramètre est une référence de

String (String ^). Si la navigation n'aboutit pas, une page indiquant le problème s'affiche. � Evènements :

− Navigated : le webbrowser a commencé à charger le document HTML. − DocumentCompleted : le webbrowser a fini de charger la page WEB. − FileDownload : le webbrowser télécharge un fichier.

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 101/103

101 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

Exemple : NAVIGATION SUR LE WEB AVEC UN LINKLABEL ET UN WEBBROWSER

NAVIGATION WEB A L’ADRESSE URL D’UN LINKLABEL :

// -------------------------------

// définition de l'adresse URL du

linklabel d’intitulé "site WEB MSDN"

// -------------------------------

private: System::Void

Form1_Load(System::Object^ sender,

System::EventArgs^e)

{

// (0,13) correspond à propriété

linkArea

llblMSDN->Links-> Add(0,

13,"www.msdn.microsoft.com");

}

// ---------------------------------------------------------------------------

// navigation à l'adresse URL du linklabel dans le WEBBROWSER et dans IE

// ---------------------------------------------------------------------------

private: System::Void llblMSDN_LinkClicked(System::Object^ sender,

System::Windows::Forms::LinkLabelLinkClickedEventArgs^ e)

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 102/103

102 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

{ // récupération de l'adresse URL stockée dans le linklabel

String^ target = dynamic_cast<String ^> (e->Link->LinkData);

txtURL->Text= target; // affichage dans le textbox en haut à droite

// navigation en lançant l'explorateur Windows (à gauche)

System::Diagnostics::Process::Start(target);

// navigation dans le WEBBROWSER dans l’application

webMSDN->Navigate( target); }

NAVIGATION WEB DANS INTERNET EXPLORER OU DANS LE WEBBROWSER :

// ------------------

// mise à jour de

l'URL dans la boîte

d'édition (en haut à

droite) lors de la

navigation dans le

WEBBROWSER

// ------------------

private: System::Void

webBrowser1_Navigated(

System::Object^sender,

System::Windows::Forms

::WebBrowserNavigatedE

ventArgs^ e)

{

txtURL->Text =

webMSDN->Url->

ToString();

}

// --------------------------------------------------------

// navigation à l'adresse URL par défaut dans le WEBBROWSER

// --------------------------------------------------------

private:System::Void btnHome_Click(System::Object^sender,System::EventArgs^ e)

{ webMSDN->GoHome(); }

// --------------------------------------------------------

// navigation à l'adresse URL précédente dans le WEBBROWSER

// --------------------------------------------------------

private: System::Void btnPrec_Click(System::Object^sender,System::EventArgs^e)

{ webMSDN->GoBack(); }

// -------------------------------------------------------------------------

// navigation à l'URL tapée dans la textbox du haut si appui sur ENTREE

// -------------------------------------------------------------------------

private: System::Void txtURL_KeyPress(System::Object^ sender,

System::Windows::Forms::KeyPressEventArgs^ e)

{ if (e->KeyChar== (char)13) // si la touche ENTREE a été actionnée

// navigation dans le WEBBROWSER à l'URL donnée dans la boîte d'édition

webMSDN->Navigate( txtURL->Text); }

, Module AAInfo : Développement d’Interfaces Windows Année 2007-2008 (FI) 103/103

103 D. Garric, I.U.T de Sénart-Fontainebleau, Dpt G.E.I.I.

Av. Pierre Point, 77 127 Lieusaint : 01.64.13.44.85 : 01.64.13.45.03

11- Des composants non visuels

11.1- Le composant TIMER

� MEMBRES DE LA CLASSE TIMER (espace de noms System::Windows::Forms) : http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.timer_members(VS.80).aspx

La classe Timer permet d'exécuter une fonction à intervalle de temps régulier. Le timer est un composant visible en mode conception, mais invisible en mode exécution de l’application.

11.1.1- La configuration d’un timer

Comment paramétrer un timer ? � Propriétés :

− Interval : intervalle de temps en milli-secondes entre deux exécutions du timer.

11.1.2- L’utilisation d’un timer

Comment faire fonctionner un timer ? � Propriétés :

− Enabled : timer lancé ou arrêté. � Méthodes :

− Start() : démarre le timer. − Stop() : arrête le timer.

� Evènements : − Tick : permet d’exécuter le gestionnaire d’évènements du timer toutes les Interval milli-

secondes. La fonction est exécutée si l'application n'est pas bloquée à faire autre chose et peut recevoir la notification du Timer.

Exemple : AFFICHAGE DE L’HEURE TOUTES LES SECONDES

CONFIGURATION DU TIMER DANS LE CODE :

// --------------------------------------- // Lancement du timer (période d'1 seconde)

// ---------------------------------------

private: System::Void Form1_Load (

System::Object^sender, System::EventArgs^e)

{ timHeure->Interval = 1000;

timHeure->Start();

}

EXECUTION DU TIMER A INTERVALLE DE TEMPS REGULIER : // ----------------------------------------

// Affichage de l'heure toutes les secondes

// ----------------------------------------

private: System::Void timHeure_Tick(System::Object^sender,System::EventArgs^e)

{ txtHeure->Text = Convert::ToString(System::DateTime::Now); }