Une calculatrice - Tutoriel

Dans ce tutoriel nous essayerons de vous guider pour cr�er une calculatrice de base, identique � celle de MS-Windows. Nous utiliserons les fonctions GUI de AutoIt.
Il est consid�r� que vous �tes d�j� familiaris� avec la cr�ation et le lancement de scripts AutoIt comme indiqu� dans l'     exemple.


Cr�ation de l'interface graphique (GUI) - (Design)

Dans cette partie nous commencerons par la cr�ation de l'interface graphique (GUI). Il est bon d'avoir une id�e de la conception bas�e sur l'utilit� de notre programme.
C'est-�-dire combien et quels types de contr�les nous aurons besoin. Dans notre cas, nous utiliserons le m�me mod�le que la calculatrice de Windows.
Dans la Fig. 1, nous pouvons voir � quoi ressemblera notre calculatrice.

Fig. 1

Pour commencer la cr�ation de notre interface, nous devons inclure quelques librairies qui d�clare des constantes que nous utiliserons dans notre bo�te de dialoque. Ces constantes contiennent des valeurs num�riques de styles et des param�tres qui d�finissent l'apparence de chaque contr�le, ainsi que les valeurs pour les �v�nements et �tats. (Normalement, "GUIConstantsEx.au3" existe d�j� dans le r�pertoire d'installation de AutoIt). Plus tard, nous verrons comment l'employer, mais pour l'instant nous allons simplement inclure cette librairie en �crivant dans notre script les lignes suivantes:

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>


Comme il est dit dans le tutoriel simple, pour commencer la cr�ation de notre fen�tre, nous devons d�finir les param�tres de celle-ci : le titre, la taille et la position, avec GUICreate(). Les param�tres de la fen�tre seront les suivants :
Titre = "Calculator"
Largeur = 260
Hauteur = 230
Donc les lignes de notre code seraient:

GUICreate("Calculator", 260, 230)


Pour stocker l'identifiant(ID) de chaque contr�le
Dans la partie d�finition, nous mettrons l'assignation des variables pour chaque bouton que nous cr�ons. Lorsque nous faisons cette affectation, la variable stocke l' ID du contr�le qui nous permettra de d�finir "leur action" pendant l'ex�cution. See     exemple.

Nommer les Variables
L'attribution d'un nom pour chaque variable et une chose personnelle, mais il est important d'�tre clair lors de celle-ci, pour une meilleure compr�hension de ce qu'elle repr�sente. Comme on le voit dans l'exemple suivant, la syntaxe utilise : $CTRL_btn1 ce qui signifie "POUR le Contr�le GUI - C'est un bouton, Chiffre #1", les param�tres pour l'exemple de ce bouton sont les suivants:
Text ="1", Left=54, Top = 138, Width = 36, Height = 29

$CTRL_btn1 = GUICtrlCreateButton("1", 54, 138, 36, 29)

Comme je l'ai mentionn� auparavant, cela permet d'avoir un code plus clair.

Cr�ation de chaque contr�le
Comme nous pouvons le voir dans la Fig.1, nous devons cr�er plusieurs boutons, que nous d�finirons avec GUICtrlCreateButton. Les boutons que nous d�finirons seront : les chiffres de 0 � 9, les op�rateurs, les boutons m�moire tel que Memory Clear("MC"), Memory Restore ("MR"), etc.
Vous pouvez copier le code ci-dessous et l'ajouter � votre script:

; Boutons des chiffres
Local $CTRL_btn0 = GUICtrlCreateButton("0", 54, 171, 36, 29)
Local $CTRL_btn1 = GUICtrlCreateButton("1", 54, 138, 36, 29)
Local $CTRL_btn2 = GUICtrlCreateButton("2", 93, 138, 36, 29)
Local $CTRL_btn3 = GUICtrlCreateButton("3", 132, 138, 36, 29)
Local $CTRL_btn4 = GUICtrlCreateButton("4", 54, 106, 36, 29)
Local $CTRL_btn5 = GUICtrlCreateButton("5", 93, 106, 36, 29)
Local $CTRL_btn6 = GUICtrlCreateButton("6", 132, 106, 36, 29)
Local $CTRL_btn7 = GUICtrlCreateButton("7", 54, 73, 36, 29)
Local $CTRL_btn8 = GUICtrlCreateButton("8", 93, 73, 36, 29)
Local $CTRL_btn9 = GUICtrlCreateButton("9", 132, 73, 36, 29)
Local $CTRL_btnPeriod = GUICtrlCreateButton(".", 132, 171, 36, 29)

; Boutons M�moire
Local $CTRL_btnMClear = GUICtrlCreateButton("MC", 8, 73, 36, 29)
Local $CTRL_btnMRestore = GUICtrlCreateButton("MR", 8, 106, 36, 29)
Local $CTRL_btnMStore = GUICtrlCreateButton("MS", 8, 138, 36, 29)
Local $CTRL_btnMAdd = GUICtrlCreateButton("M+", 8, 171, 36, 29)

; Boutons Op�rations
Local $CTRL_btnChangeSign = GUICtrlCreateButton("+/-", 93, 171, 36, 29)
Local $CTRL_btnDivision = GUICtrlCreateButton("/", 171, 73, 36, 29)
Local $CTRL_btnMultiplication = GUICtrlCreateButton("*", 171, 106, 36, 29)
Local $CTRL_btnSubtract = GUICtrlCreateButton("-", 171, 138, 36, 29)
Local $CTRL_btnAdd = GUICtrlCreateButton("+", 171, 171, 36, 29)
Local $CTRL_btnAnswer = GUICtrlCreateButton("=", 210, 171, 36, 29)
Local $CTRL_btnInverse = GUICtrlCreateButton("1/x", 210, 138, 36, 29)
Local $CTRL_btnSqrt = GUICtrlCreateButton("Sqrt", 210, 73, 36, 29)
Local $CTRL_btnPercentage = GUICtrlCreateButton("%", 210, 106, 36, 29)
Local $CTRL_btnBackspace = GUICtrlCreateButton("Backspace", 54, 37, 63, 29)
Local $CTRL_btnClearE = GUICtrlCreateButton("CE", 120, 37, 62, 29)
Local $CTRL_btnClear = GUICtrlCreateButton("C", 185, 37, 62, 29)

Local $CTRL_EdtScreen = GUICtrlCreateEdit("0.", 8, 2, 239, 23)
Local $CTRL_LblMemory = GUICtrlCreateLabel("", 12, 39, 27, 26)


Apr�s avoir d�fini la cr�ation de chaque contr�le, il est important d'ajouter la ligne suivante pour montrer votre boite de dialogue, en utilisant GUISetState().

GUISetState()


Boucle des messages
Comme il est expliqu� dans le     , the function GUIGetMsg() donne une valeur de sortie d'un �v�nement de la boite de dialogue, repr�sent� dans ce cas par la variable $msg qui est �valu�e chaque fois qu'une boucle Do..Until se r�p�te. Pour cette partie nous ajouterons seulement un �v�nement simple, qui se r�p�te dans un cycle infini jusqu'� ce que l'�v�nement soit la constante $GUI_EVENT_CLOSE (�gale � -3) , ce qui fermera la fen�tre et terminera le script. Voici donc la suite du script :

Local $msg
Do
   $msg = GUIGetMsg()

Until $msg = $GUI_EVENT_CLOSE


Application des Styles
Jusque l�, nous avons �t� capable de finir l'ossature de notre boite de dialogue. Vous pouvez d�j� ex�cuter le script et constater qu'il ressemble d�j� � une calculatrice. En y regardant de plus pr�s, vous constaterez quelque chose de non d�sir� dans le design. Le contr�le EDIT qui repr�sente l'afficheur des chiffres ne s'affiche pas correctement, nous devons donc appliquer certains styles d'apparence (voir la Fig. 2). Pour corriger cette apparence, nous utiliserons l'EDITION des styles:

Fig. 2

Pour cette partie, nous avons seulement besoin de modifier deux lignes de notre code.

Premi�re modification: Dans la premi�re modification, nous ajouterons dans la ligne de la variable $CTRL_EdtScreen, une d�finition pour mettre le contr�le (Edit) en lecture seule ($ES_READONLY) et une autre pour le justifier � droite ($ES_RIGHT), pour assembler ces deux variable nous utiliserons BitOR comme cela est pr�sent� dans la ligne de code ci-dessous. Nous ajouterons aussi $WS_EX_STATICEDGE to the parameter of style �tendu (exStyle) pour donner une apparence creuse � la bordure. Pour plus d'informations sur la table des styles pour le contr�le EDIT, cliquez ici. (Pour une explication d�taill�e de chaque style).

Local $CTRL_EdtScreen = GUICtrlCreateEdit("0.", 8, 2, 239, 23, BitOR($ES_READONLY, $ES_RIGHT), $WS_EX_STATICEDGE)


Deuxi�me modification: Dans la deuxi�me modification, nous modifierons la ligne de la variable $CTRL_LblMemory, qui contient un contr�le de type LABEL nous montrant l'�tat du stockage m�moire) que nous avons vu dans la deuxi�me partie. Nous allons d�finir que ce contr�le (Label) sera creux ($SS_SUNKEN) comme cela est pr�sent� dans la ligne de code. Pour la table des r�f�rences de styles des contr�le LABEL, cliquez ici.

Local $CTRL_LblMemory = GUICtrlCreateLabel("", 12, 39, 27, 26, $SS_SUNKEN)


Apr�s avoir effectu� ces modifications, lancez votre script. Vous pouvez voir le changement d'apparence dans la Fig. 3, maintenant notre calculatrice ressemble � la Fig. 1, vue au d�part. Vous pouvez aussi regarder     ppour r�f�rence.

Fig. 3


En guise d'exercice, vous essayerez de mettre le style $BS_FLAT en param�tre de quelques boutons, et vous les verrez en style plat.