Les Bases pour programmer avec PILIB

From PilibWiki

Jump to: navigation, search

Section Précédente : Organiser une fenêtre | | Retour au sommaire | | Section Suivante : Le Graphisme





Vous savez maintenant créer une fenêtre, y ajouter des objets, et les disposer dans cet fenêtre. C'est bien, mais pas trés actif tout ça...

Nous en arrivons donc au sujet de cette section : rendre actif vos éléments. Et pour commencer simplement, je les bouttons comme permiers candidats.


L'utilisation des Bouttons

Vous avez pu le constater, une fois le boutton posé dans la fenêtre, le seul élément que nous n'avons pas utilisé est l'entier (integer) que nous lui avons associé. Une fois initialisé, si vous ne lui avais pas attribué de valeur, sa valeur est aléatoire,(Je recommande fortement de tous les initialiser à 0 pour vous y retrouver) mais une fois que vous cliquez sur le boutton qui lui est associé, sa valeur sera aussitôt passée à 1.

Nous allons donc procéder selon cet ordre. (imaginons que l'entier du boutton soit appelé "i") Lancement du programme : initialisation de l'entier à 0 (i=0) Fonctionnement normal du programme : i=0 L'utilisateur presse le boutton : - Passage de i=0 à i=1 - Lancement de l'action générée par le boutton - Fin de l'action, passage de i=1à i=0 Retour au fonctionnement normal du programme. Attention !! Si vous ne réinitialisez pas la variable à 0, l'action associée au boutton vas boucler.

Mais comme rien ne vaut un bon exemple, jetez un oeil à ceci : Nous voulons afficher une MessageBox lorsque l'utilisateur presse le gros boutton de 30 hauteur sur 50 de largeur intitulé VALIDER.

Attention, afin de permettre l'accés au site en faible résolution, certaines lignes ont été coupées, puis reportés sur la ligne suivante. Le symbole suivant les accompagnes : /!\

program example
use pimod
implicit none
integer(kind=kptr) :: i=0,Win,iclos,But,reponse=0
call piinit

call gkwindow(c('Bouton'),0,0,Win,iclos)

call gkbutton(c('VALIDER'),But,i)
call gkput(0,0,30,50,Win,But)

call gkshow(Win) 
do while(iclos.eq.0)
	call gkproc
	if(i==1) then
		call gkmsgbox(c('Etes vous certain de voulo /!\
                              ir continuer ?'),4,2,reponse)
		i=0
	end if
end do
call gkdestroy(Win)
end program example

et voici ce que l'on obtient :


Boutton actif et MSGBOX
Boutton actif et MSGBOX


Nous voilà donc avec sur les bras un programme qui ne sert à rien. Mais au moins, vous savez maintenant comment fonctionnent les bouttons.

Passons maintenant aux MessageBox.

L'utilisation des MessageBox

Nous allons reprendre le programme précédent, mais nous arranger pour que la MessageBox ne serve plus à rien, c'est à dire que nous allons récupérer la valeur de la réponse de l'utilisateur (ici oui ou non). Rajoutons tout d'abord un print dans le programme :

Attention, afin de permettre l'accés au site en faible résolution, certaines lignes ont été coupées, puis reportés sur la ligne suivante. Le symbole suivant les accompagnes : /!\

	if(i==1) then
		call gkmsgbox(c('Etes vous certain de voulo /!\
                              ir continuer ?'),4,2,reponse)
		print *,reponse
		i=0
	end if

Dans ce cas, vous observerez dans votre console, que si l'utilisateur répond oui, la variable reponse vaut 4, et si il répond non, elle vaut 5. Enfin, si votre utilisateur n'a rien compris et qu'il à cliqué sur fermer (ba oui, ya des neuneux partout, faut y penser), reponse vaut -4. (reportez vous au paragraphe MessageBox dans la section objet pour plus de détails).

La variable reponse fonctionne donc comme la variable associé au boutton, mais au lieu de toujours valoir 1, elle prend une valeur specifique en fonction du choix de l'utilisateur.

Je vous propose donc de modifier notre programme, et d'afficher d'autres MessageBoxs en fonction de la réponse.

Oui => Lancement de la procédure. Non => Procedure annulée. Fermer => On quitte le programme en entier. (ici, les variables OUI et NON ne seront pas utilisées).


program example
use pimod
implicit none
integer(kind=kptr) :: i=0,Win,iclos,But,reponse=0,OUI=0,NON=0
call piinit

call gkwindow(c('Bouton'),0,0,Win,iclos)

call gkbutton(c('VALIDER'),But,i)
call gkput(0,0,30,50,Win,But)

call gkshow(Win) 
do while(iclos.eq.0)
   call gkproc
     if(i==1) then
        call gkmsgbox(c('Etes vous certain de voulo /!\
                      ir continuer ?'),4,2,reponse)
	if (reponse==4) call gkmsgbox(c('Lancement /!\
                        de la procedure.'),1,0,OUI)
	if (reponse==5) call gkmsgbox(c('Procedure /!\
                        annulee.'),1,0,NON)
	if (reponse==-4) then
	call gkdestroy(Win)
	STOP
        end if
        i=0
     end if
end do
call gkdestroy(Win)
end program example


Les MSGBOX
Les MSGBOX


Les messages boxes ne sont donc pas bien dur à utiliser, et elles sont trés utiles.

Passons maintenant aux zones de texte et aux textes.

L'utilisation des Zones de texte et des textes

Avec PILIB, il est possible de changer à tout moments la valeur des textes affichés à l'écran, ou de récupérer les valeurs de textes entrées dans les zones prévues à cet effet.

Imaginons que vous souhaitiez posséder une fenêtre avec 1 texte simple, 1 boutton, et 1 zone de texte. Lorsque l'utilisateur clique sur le boutton, le texte dans la zone de texte doit être affiché à la place du texte simple d'origine.

Tout d'abord, il vas faloir utiliser des conversions, PILIB n'étant pas en tout point du fortran.


Section Précédente : Organiser une fenêtre | | Retour au sommaire | | Section Suivante : Le Graphisme

Personal tools