Partie III : 2) Fenêtres plus complexes

 
Nous arrivons enfin dans la partie la plus intéressante de LB, son interface graphique.
Jusqu'à maintenant nous étions resté en console mais désormais nous allons utiliser les fenêtres avec des boutons, des listes, du texte etc ...



Une simple fenêtre



Notre première fenêtre sera très simple (d'où le titre :) ).
Elle sera complètement vide avec pour titre "Ma première fenêtre".
Comme à mon habitude je vais donner le code puis l'expliquer :
Code VB :
nomainwin
 
open "Ma première fenêtre" for window as #main
print #main,"trapclose [quit]"
 
wait
 
[quit]
close #main
end


Déjà vous pouvez remarquer la faible longueur de ce code par rapport à un autre langage plus bas niveau (si vous en connaissez un).

Bon, nous voulons ouvrir une fenêtre donc nous n'avons plus besoin de la console d'où la première ligne qui empêche la console de s'ouvrir. Quelque soit sa position dans votre code l'instruction nomainwin bloquera la console.
Ensuit nous avons l'ouverture de la fenêtre. Ce code ressemble étrangement à celui de l'ouverture d'un fichier vous ne trouvez pas ? Mais il est différent (sinon il ouvrirait un fichier :) ). D'abord on a open, puis le nom que l'on veux donner à la fenêtre (entre guillemets) , ensuite un for et ce que l'on veux ouvrir, dans ce cas là une fenêtre(= window) et pour finir as suivi du handle de notre fenêtre. Par contre c'est comme les fichiers : interdit d'ouvrir deux fenêtre avec le même handle.
La ligne suivante aussi ressemble à l'écriture dans un fichier mais cette fois c'est "dans" la fenêtre que l'on écrit grâce à son handle. Cela ne veut pas dire que du texte va s'afficher dans la fenêtre mais que l'on donne certain ordre à la fenêtre. Dans ce cas là on lui donne l'ordre d'aller à l'étiquette [quit] lorsque l'on appuie sur la croix de la fenêtre.
L'instruction suivante vous est encore inconnu mais si vous parlez/comprenez légèrement l'anglais wait signifie attendre. Je vous en reparle juste après l'explication de la fin du code.
Puis nous trouvons l'étiquette [quit]. C'est-à-dire que c'est là que le programme va allez lorsque l'utilisateur appuiera sur la croix.
Lorsque le programme arrive à la ligne close #main qui il ferme la fenêtre puis se termine avec end

Je vous reparle de wait maintenant car vous voyez que si on ne dit pas au programme d'attendre que quelque chose se passe il va directement arriver sur close #main et se terminer, mais tout ça à la vitesse éclaire. Essayez d'enlever le wait et regarder ce qui se passe.
Rapide n'est-ce pas ?
En effet, wait sert à dire au programme qu'il doit attendre que l'utilisateur fasse quelque chose. Dans notre cas, la seule action traitée est la demande de fermeture de la fenêtre.

Quelques choses sont à retenir:
  • On ne doit surtout pas ouvrir plusieurs fenêtre avec le même handle en même temps
  • On doit fermer la fenêtre avant que le programme se termine sous peine d'erreur
  • Il est préférable d'attendre que l'utilisateur l'ai demandé pour fermer la fenêtre. Enfin, après c'est votre programme, vous en faite ce que vous voulez ;)


Une fenêtre avec du texte



Bon je ne sais pas vous mais moi je la trouve un peu vide cette fenêtre. Non ?
Et bien remplissons la.
On va mettre du texte dedans, par exemple : "C'est ma première fenêtre en Liberty Basic"
Pour ajouter un objet dans une fenêtre il faut lui dire avant de l'ouvrir.
On doit déjà dire quel objet c'est exactement. Dans notre cas se sera un statictext. Il y a beaucoup d'objets différents, il y aura donc un chapitre expliquant les plus importants.
Pour en revenir a notre statictext, il attend plusieurs informations comme où se placer dans la fenêtre, quelle taille il a et bien sûr le texte qu'il y aura dedans. Mais il ne faut pas oublier le plus important, dans quelle fenêtre sera placée notre objet car on peut ouvrir plusieurs fenêtres en même temps.
Tous ses paramètres de notre statictext devrons lui être donnés dans un certain ordre :
  • Tout d'abord on écrit statictext
  • Ensuite on écrit le handle de notre objet. C'est un handle un peu spécial puisqu'il faut qu'il commence par le handle de la fenêtre où doit se trouver notre objet puis il est suivi d'un point et d'un autre handle qui sera celui de l'objet, libre à vous de mettre celui que vous voulez. Cet handel n'est pas forcement unique mais si l'on veut changer le texte de notre statictext (on verra un peu plus loin comment faire) on aura des problème. On devra donc mettre pour notre fenêtre #main.texte. J'aurai aussi bien put mettre #main.txt mais pas #fenetre.texte puisqu'il ne serait pas allé dans la bonne fenêtre.
  • Après ce handel complexe un truc tout simple : le texte que l'on veut mettre. Entre guillemets s'il vous plait.
  • Puis viens la position en X de l'objet dans la fenêtre.
  • Et puis celle en Y.
  • Enfin nous lui donnons sa taille, d'abord sa largeur puis sa hauteur.


Avec tout ça nous obtenons la ligne qui nous permet de créer notre objet :
Code VB :
statictext #main.texte, "C'est ma première fenêtre en Liberty Basic", 15, 30, 200, 25


Et donc nous avons tout le code permettant de créé une fenêtre avec notre texte dedans :
Code VB :
nomainwin
 
statictext #main.texte, "C'est ma première fenêtre en Liberty Basic", 15, 30, 200, 25
open "Ma première fenêtre" for window as #main
print #main,"trapclose [quit]"
 
wait
 
[quit]
close #main
end


On compile et on obtient ... une magnifique fenêtre :D
Magnifique, magnifique ... faudrait pas exagérer non plus ! C'est juste une fenêtre avec du texte.
Ouai bon ...
Je vous mets une image avec les mesures pour que vous puissiez repérer où est quoi :



Options de la fenêtre



Maintenant que nous savons comment créer une fenêtre et placer des objets dedans que diriez vous de contrôler sa taille et sa position sur l'écran.


La taille




Lorsque votre programme vas lire l'instruction qui commande l'ouverture de la fenêtre (open pour ceux qui ont la mémoire courte) il va allez consulter deux variables. Ces deux variables sont WindowHeight et WindowWidth qui permettent respectivement de donner la hauteur (par défaut à 360 pixels) et la largeur (par défaut à 320 pixels) de la fenêtre.
Donc pour changer la taille de notre fenêtre il faut changer ces variables avant d'ouvrir la fenêtre.
Donc pour obtenir une fenêtre de 500x500 on fait comme cela :
Code VB :
nomainwin
 
WindowHeight=500
WindowWidth=500
 
statictext #main.texte, "C'est ma première fenêtre en Liberty Basic", 15, 30, 200, 25
open "Ma première fenêtre" for window as #main
print #main,"trapclose [quit]"
 
wait
[quit]
close #main
end


C'est ici que LB est bizarre car ce sont les dimensions externes de la fenêtre.
Voici une image pour vous montrez de quoi je parle :




La position




Pour la position c'est pareil que pour la taille. Deux variables, nommées UpperLeftX et UpperLeftY, qui donnent respectivement la position en X et celle en Y de la fenêtre par rapport au coin supérieur gauche de l'écran.

Saviez-vous qu'il existe aussi deux variables qui donnent la taille de l'écran ?
Ce sont DisplayHeight et DisplayWidth qui sont respectivement la hauteur de l'écran et sa largeur.
Avec toutes ces variables on peut placer notre fenêtre au centre de l'écran grâce à ce code :
Code VB :
WindowHeight=500
WindowWidth=500
UpperLeftX=DisplayWidth/2-WindowWidth/2
UpperLeftY=DisplayHeight/2-WindowHeight/2


Ce qui nous donne :
Code VB :
nomainwin
 
WindowHeight=500
WindowWidth=500
UpperLeftX=DisplayWidth/2-WindowWidth/2
UpperLeftY=DisplayHeight/2-WindowHeight/2
 
statictext #main.texte, "C'est ma première fenêtre en Liberty Basic", 15, 30, 200, 25
open "Ma première fenêtre" for window as #main
print #main,"trapclose [quit]"
 
wait
[quit]
close #main
end




Et voila, vous savez désormais comment ouvrir une fenêtre et y placer du texte.

 
Cette page a été consultée 3659 fois