<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
 <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 <META NAME="GENERATOR" CONTENT="lfparser_2.52">
 <META NAME="LFCATEGORY" CONTENT="SoftwareDevelopment">
 <link rel="icon" href="../../common/images/lf-16.png" type="image/png">
 <TITLE>lf329, SoftwareDevelopment: Gambas: le Basic pour Linux</TITLE>
<style type="text/css">
<!--
 td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 }
 pre { font-family:monospace,Courier }
 pre.code { font-family:monospace,Courier;background-color:#aedbe8; }
 p.cl { color:#EE9500 }
 table.left { margin-right:0.3cm }
 a.nodec { text-decoration:none }
 p.trans { font-size:8pt; text-align:right }
 p.clbox { width:50%; alignment:center; background-color:#FFD700; 
           border-style:none; border-width:medium; border-color:#FFD700; 
           padding:0.5cm;  text-align:center }
 p.code { width:80%; alignment:center; background-color:#aedbe8; 
          border-style:none; border-width:medium; border-color:#aedbe8; 
          padding:0.1cm;  text-align:left }
 p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; 
          border-width:medium; border-color:#AAAAAA; padding:0.5cm ; 
          margin-top:0.1cm; margin-right:1cm; margin-left:1cm; 
          text-align:center }
 div.tbbutton {
   background: #ddd;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   margin: 2px 5px 2px 5px;
   text-align: center;
   width: 20em;
   line-height: 1.2em;
   padding: 2px;
   font-size: 12px;
   white-space: nowrap;
   color: #555;
 }
 div.bbutton {
   background: #ddd;
   border-right: 1px solid #aaa;
   border-bottom: 1px solid #aaa;
   float: left;
   margin: 2px 5px 2px 5px;
   text-align: center;
   line-height: 1.2em;
   padding: 2px;
   font-size: 12px;
   white-space: nowrap;
   color: #555;
 }
-->
</style>
 
</HEAD>
<BODY bgcolor="#ffffff" text="#000000">
 <!-- this is generated html code. NEVER use this file for your
 translation work. Instead get the file with the same article number
 and .meta.shtml in its name. Translate this meta file and then
 use lfparser program to generate the final article -->
 <!-- lfparser can be obtained from http://main.linuxfocus.org/~guido/dev/lfparser.html -->

<!-- this is used by a number of tools:
 =LF=AUTHOR: Jon&aacute;s Alvarez
 =LF=CAT___: SoftwareDevelopment
 =LF=TITLE_: Gambas: le Basic pour Linux
 =LF=NUMBER: 329
 =LF=ANAME_: article329.shtml
 =LF=PARSER: 2.52
 -->

<!-- 2pdaIgnoreStart -->

<!-- start navegation bar, current, style=2 -->
 <!-- top navegation bar -->
 <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%">
   <TR bgcolor="#2e2292">
     <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width=
       "100%">
         <TR><TD width="319"><a href="../../index.shtml"><IMG src="../../common/images/logolftop_319x45.gif"
           alt="[LinuxFocus-icon]" width="319" height="45" align="left" 
           border="0"></a></TD>

           <TD class="top">
             <TABLE summary="topbar_1_links" width="100%">
               <TR align="right">
                 <TD class="top">
                 
                 <A class="nodec" href="../../index.shtml"><FONT color=
                 "#DDDDDD" size="2">&lt;--</FONT></A> &nbsp;| 
                 <A class="nodec" href="../index.shtml"><FONT color=
                 "#DDDDDD" size="2">Sommaire</FONT></A> &nbsp;| 
                 <A class="nodec" href="../map.html"><FONT color=
                 "#DDDDDD" size="2">Carte</FONT></A> &nbsp;| 
                 <A class="nodec" href="../indice.html"><FONT color=
                 "#DDDDDD" size="2">Index</FONT></A> &nbsp;| 
                 <A class="nodec" href="../Search/index.html"><FONT color=
                 "#DDDDDD" size="2">Recherche</FONT></A> </TD>
                 
               </TR>

               <TR align="right">
                 <TD class="top">
                   <HR width="100%" noshade size="1">
                 </TD>
               </TR>
             </TABLE>
           </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end top navegation bar -->
 <!-- blue bar -->
 <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center"
 width="90%">
   <TR bgcolor="#00ffff">
     <TD><IMG src="../../common/images/transpix.gif" width="1" height=
     "2" alt=""></TD>
   </TR>
 </TABLE>
 <!-- end blue bar -->
 <!-- bottom navegation bar -->
 <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center"
 width="94%">
   <TR bgcolor="#000000">
     <TD>
       <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width=
       "100%">
         <TR align="center">
           <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color=
           "#FFFFFF">Nouvelles</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color=
           "#FFFFFF">Archives</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../Links/index.html"><FONT color=
           "#FFFFFF">Liens</FONT></A> </TD>
           <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD>
           <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color=
           "#FFFFFF">A propos</FONT></A> </TD>
         </TR>
       </TABLE>
     </TD>
   </TR>
 </TABLE>
 <!-- end bottom navegation bar -->
<!-- stop navegation bar -->

<!-- SSI_INFO -->

<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfdynahead ver 1.5 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Ce document est disponible en: <A href="../../English/March2004/article329.shtml">English</a> &nbsp;<A href="../../Castellano/March2004/article329.shtml">Castellano</a> &nbsp;<A href="../../ChineseGB/March2004/article329.shtml">ChineseGB</a> &nbsp;<A href="../../Deutsch/March2004/article329.shtml">Deutsch</a> &nbsp;<A href="../../Francais/March2004/article329.shtml">Francais</a> &nbsp;<A href="../../Russian/March2004/article329.shtml">Russian</a> &nbsp;<A href="../../Turkce/March2004/article329.shtml">Turkce</a> &nbsp;</FONT></TD></TR></TABLE><br>
 


<!-- SSI_INFO STOP -->
<!-- 2pdaIgnoreStop -->

<!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_START -->
<TABLE ALIGN="LEFT" BORDER="0" WIDTH="195" summary="about the author" class="left">
<TR>
<TD>

<img src="../../common/images2/JonasAlvarez.jpg" alt=
    "Jonas Alvarez" width="170" height="128">
<BR>par  Jon&aacute;s Alvarez <br> <small>&lt;jalvarez(at)eitb.com&gt;</small>
<BR><BR>
<I>L&acute;auteur:</I><BR>
<!-- aboutauthor_start -->
<p>Jon&aacute;s Alvarez a travaill&eacute; comme d&eacute;veloppeur d'application pour
les environnements UNIX et Windows pendant de nombreuses ann&eacute;es. Il donne, en
autres, diff&eacute;rents cours sur les syst&egrave;mes d'exploitation, les r&eacute;seaux et le d&eacute;veloppement.
</p>
<!-- aboutauthor_stop -->
<!-- TRANSLATED_TO fr -->
<BR><BR><I>Traduit en Français par:</I><BR>
Laurent RICHARD. <small>&lt;kouran(at)linuxmail.org&gt;</small>
<br>
<!--
 =LF=TRANSTO=fr: Laurent RICHARD.
-->
<!-- TRANSLATED_TO_STOP -->
<!-- INDEX_START -->
<BR><i>Sommaire</i>:
<UL>
  <LI><A HREF="#329lfindex0">Introduction</A></LI>
  <LI><A HREF="#329lfindex1">Qui est int&eacute;ress&eacute; par Gambas?</A></LI>
  <LI><A HREF="#329lfindex2">L'exemple</A></LI>
  <LI><A HREF="#329lfindex3">Et la touche finale : Gambas est multilingue comme il se doit</A></LI>
  <LI><A HREF="#329lfindex4">Conclusion</A></LI>
  <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=329">Talkback form for this article</A></LI>
</UL>

</TD></TR></TABLE>
<!-- INDEX_STOP -->
<!-- SHORT_BIO_ABOUT_THE_AUTHOR_AND_INDEX_STOP -->
<!-- HEAD_OF_THE_ARTICLE_START -->
<br>&nbsp;
<table border="0"><tr><td>
<!-- tr_staticssi include virtual -->
<!-- tr_staticssi exec cmd -->
<!-- addedByLfPdf ver 0.1 -->
<TABLE style="border-style:outset; border-width:1px" align="right" bgcolor="#ff9616" cellspacing="1"><TR><TD bgcolor="#ff9616">
        <a href="../Archives/lf-2004_03-0329.pdf"><small>PDF</small></a>
        </TD></TR></TABLE>
         

<H2>Gambas: le Basic pour Linux</H2>
 <img src="../../common/images2/article329/gamba.png" alt=
    "Dessin d'un gamba" width="187" height="103">
<!-- ABSTRACT OF THE ARTICLE -->
<P><i>R&eacute;sum&eacute;</i>:
<P>
<!-- articleabstract_start -->
<p>Gambas est l'un des programmes de Basic, disponibles actuellement pour
Linux. Dans cet article, nous allons d&eacute;velopper un exemple dans lequel nous
constaterons que Gambas est simple et puissant pour les t&acirc;ches quotidiennes.</p>
<!-- articleabstract_stop -->

<br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br>
</td></tr></table>
<!-- HEAD_OF_THE_ARTICLE_STOP -->
<!-- BODY_OF_THE_ARTICLE_START -->


    <A NAME="329lfindex0">&nbsp;</A>
<H2>Introduction</H2>


    <p>Un des langages de programmation le plus simple et le plus complet,
destin&eacute; principalement aux d&eacute;butants, est sans conteste le Basic. Jusqu'&agrave; pr&eacute;sent,
l'environnement le plus courant pour le d&eacute;veloppement d'application en Basic
est l'IDE Visual Basic de Microsoft. Actuellement, Linux se propage de plus en
plus sur le bureau de l'utilisateur. Avant limit&eacute; aux seuls serveurs et utilis&eacute;
par des gourous, il est devenu un syst&egrave;me d'exploitation pour les ordinateurs
clients donnant une r&eacute;ponse aux besoins tels la consultation des courriers
&eacute;lectroniques, la navigation sur Internet ainsi que l'&eacute;dition de texte. En
suivant cette tendance, de nombreux environnements de d&eacute;veloppement en Basic
sont actuellement accessibles. Gambas, que nous allons &eacute;tudier dans cette
article, est un des ces environnements graphique pour le BASIC. Avec un style de
 programmation similaire &agrave; celui du Visual Basic, que nous verrons plus tard,
il poss&egrave;de &eacute;galement ces propres <a href=
    "http://www.binara.com/gambas-wiki/bin/view/Gambas/DifferencesFromVB">
    diff&eacute;rences</a>. La version que je vais utiliser est la 0.64a,
incluse dans ma distribution SuSE 9.0. En lisant ces lignes, vous pourrez voir
sur <a href="http://gambas.sourceforge.net/">la page du projet de Gambas</a> que
la derni&egrave;re version est la 0.81. Mais cela ne devrait pas affecter notre
article.</p>

    <A NAME="329lfindex1">&nbsp;</A>
<H2>Qui est int&eacute;ress&eacute; par Gambas?</H2>


    <p>En tant que d&eacute;veloppeur d'applications en Visual Basic pendant un moment,
je n'ai eu besoin que de lancer l'application pour m'y retrouver et d&eacute;velopper
l'exemple de cet article. De plus, c'est la premi&egrave;re fois que j'utilise Gambas.
Cela prouve que quiconque ayant d&eacute;j&agrave; travaill&eacute; avec Visual Basic peut l'utiliser. Pour le
reste, il est un exemple de la simplicit&eacute; avec laquelle le Basic peut &ecirc;tre
simple et utile pour pas mal de choses.</p>

    <A NAME="329lfindex2">&nbsp;</A>
<H2>L'exemple</H2>


    <p>Vu que j'aime apprendre en pratiquant, nous allons d&eacute;buter avec un
exemple. C'est une application tr&egrave;s simple qui affiche un chronom&egrave;tre avec un
d&eacute;compte &agrave; l'&eacute;cran. Nous pouvons modifier le temps, l'arr&ecirc;ter et le lancer quand
nous le d&eacute;sirons.</p>

    <p>Juste apr&egrave;s avoir lanc&eacute; Gambas, nous faisons la connaissance de son
assistant:</p>

    <center>
      <img src=
      "../../common/images2/article329/WelcomeToGambas.png" border=
      "0" alt="d&eacute;marrage" width="412" height="361">
    </center>
    <br>
    <br>


    <p>Nous choisissons <b>New Project</b>. Dans la fen&ecirc;tre suivante, on nous
demande le <b>nom du projet</b>. Notre projet s'appellera <i>CountDown</i>.
Sur la <b>deuxi&egrave;me bo&icirc;te de dialogue</b>, nous devons choisir le
<b>r&eacute;pertoire du projet</b>. Nous s&eacute;lectionnons notre r&eacute;pertoire de travail et
nous &eacute;crivons le nom du r&eacute;pertoire dans lequel nous allons travailler dans la
zone de texte du bas.</p>

    <center>
      <img src="../../common/images2/article329/NewProject.png"
      border="0" alt="nouveau projet" width="589" height="541">
    </center>
    <br>
    <br>


    <p>Si c'est la premi&egrave;re fois que nous d&eacute;marrons Gambas ou si nous n'avons
pas d&eacute;sactiv&eacute; l'option, nous verrons l'astuce du jour. Nous lisons ce qui nous
int&eacute;resse et nous fermons la fen&ecirc;tre. Nous sommes d&eacute;j&agrave; dans l'environnement,
pr&ecirc;t &agrave; travailler. Nous pouvons voir plusieurs fen&ecirc;tres sur notre bureau. Si nous
sommes dans un environnement comme KDE avec plusieurs fen&ecirc;tres, nous pourrions
&ecirc;tre int&eacute;ress&eacute;s &agrave; en allouer une &agrave; Gambas et donc avoir toutes ses fen&ecirc;tres sous
contr&ocirc;le. Personnellement, une des premi&egrave;res options que j'active dans KDE est
celle permettant &agrave; chaque bureau de n'afficher que ces propres ic&ocirc;nes.</p>

    <p>Nous allons cr&eacute;er le formulaire principal de l'application. Pour cela,
nous allons faire un clic-droit sur n'importe quelle partie de la fen&ecirc;tre du
projet et cr&eacute;ons un nouveau formulaire.</p>

    <center>
      <img src="../../common/images2/article329/NewForm.png"
      border="0" alt="nouveau formulaire" width="374" height="295">
    </center>
    <br>
    <br>


    <p>Dans la bo&icirc;te de dialogue, nous indiquons le nom du formulaire (dans
notre cas <i>FCountDown</i>) avec toutes les valeurs qui sont laiss&eacute;es par
d&eacute;faut.</p>

    <p></p>

    <center>
      <img src="../../common/images2/article329/NewFormDialog.png"
      border="0" alt="nouveau formulaire de dialogue" width="514" height="495">
    </center>
    <br>
    <br>


    <p>Nous avons d&eacute;j&agrave; notre premier formulaire qui est vide jusqu'&agrave; pr&eacute;sent.
</p>

    <center>
      <img src="../../common/images2/article329/FCuentaAtras0.png"
      border="0" alt="form" width="376" height="247">
    </center>
    <br>
    <br>


    <p>Nous allons inclure ici les contr&ocirc;les pour notre chronom&egrave;tre. Nous allons
cliquer sur les &eacute;l&eacute;ments de la barre d'outils que nous allons inclure dans
notre formulaire. Nous pouvons voir leur nom si nous d&eacute;pla&ccedil;ons la souris au
dessus de chaque contr&ocirc;le. Au moyen d'un double clic, le contr&ocirc;le sera
positionn&eacute; &agrave; l'extr&eacute;mit&eacute; gauche de notre formulaire. Avec un simple clic, nous
allons changer sa taille et le positionner dans la partie du formulaire vers
laquelle nous le destinons. Pour notre programme, nous allons avoir besoin d'une
&eacute;tiquette, une zone de texte, une minuterie, trois boutons dont un bouton &agrave;
bascule.
</p>

    <p></p>

    <center>
      <img src=
      "../../common/images2/article329/BarraDeControles.png"
      border="0" alt="contr&ocirc;les" width="129" height="378">
    </center>
    <br>
    <br>


    <p>Une fois que tous les contr&ocirc;les sont en place, nous devrions avoir
quelque chose qui ressemble &agrave; ceci (plus ou moins, chacun des contr&ocirc;les pouvant
&ecirc;tre positionn&eacute; n'importe o&ugrave;) :</p>

    <center>
      <img src="../../common/images2/article329/FCuentaAtras1.png"
      border="0" alt="contr&ocirc;les en place" width="292" height="255">
    </center>
    <br>
    <br>


    <p>Une fois que nous avons les contr&ocirc;les dans notre formulaire, nous allons
changer les noms de ceux-ci pour avoir quelque chose qui a du sens pour nous.
Pour cela, nous &eacute;ditons la propri&eacute;t&eacute; <b>Name</b> sur la
<b>feuille des propri&eacute;t&eacute;s</b>. Si nous ne voyons pas la
<b>feuille des propri&eacute;t&eacute;s</b> sur l'&eacute;cran, nous pouvons l'activer depuis la
fen&ecirc;tre du projet avec le bouton de propri&eacute;t&eacute;s. Pour le trouver nous pouvons
bouger la souris au dessus des boutons afin de localiser celui qui nous
int&eacute;resse.</p>

    <p>Je nomme le contr&ocirc;le <i>Label1</i> en <i>lblContador:</i>. Je clique sur
le contr&ocirc;le et ensuite, je change son nom dans la <b>feuille des propri&eacute;t&eacute;s</b>.
 Pour cela, j'&eacute;dite la propori&eacute;t&eacute; <b>Nom</b> et je lui donne <i>lblContador</i>
comme valeur. Apr&egrave;s cela, je change son type de police pour en avoir une plus
grande. Pour cela, dans le bouton ... dans sa propri&eacute;t&eacute; <b>police</b>, je
choisis le type de police <i>Courier Bold 72</i> et j'accepte (<b>OK</b>).
De la m&ecirc;me fa&ccedil;on, je change le nom <i>ToggleButton1</i> en <i>tglFuncionando</i>.
Le contr&ocirc;le <i>TextBox1</i> devient <i>txtSegundos</i>, le contr&ocirc;le
<i>Timer1</i> devient <i>clkMiReloj</i>, <i>Button1</i> devient
<i>cmdPonerSegundos</i> et pour finir, je renomme <i>Button2</i> en
<i>cmdSalir</i>. A cot&eacute;, je change l'<b>Alignement</b> de <i>txtSegundos</i> en
 <i>Droit</i>.</p>

    <p>Et nous commen&ccedil;ons avec le code Basic. C'est tr&egrave;s simple et pas tr&egrave;s
strict du point de vue syntaxique. Ce que nous ferons d'abord, c'est changer les
textes que nous voyons dans le formulaire en des valeurs plus r&eacute;elles. M&ecirc;me si
beaucoup des options sont chang&eacute;es en Basic, nous pourrions faire cela dans
chacune des feuilles de propri&eacute;t&eacute;s des contr&ocirc;les. L'une ou l'autre des options
donnera le m&ecirc;me r&eacute;sultat.</p>

    <p>D&egrave;s que le formulaire s'ouvre, nous remplissons les titres que nous
d&eacute;sirons pour chaque contr&ocirc;les que nous avons. Lorsque nous disons <i>d&egrave;s que
le formulaire s'ouvre</i>, nous parlons de la gestion d'un &eacute;v&egrave;nement :
l'ouverture du formulaire. Pour cela, nous faisons un double-clic dans une
partie du formulaire qui n'a pas de contr&ocirc;le. Une fen&ecirc;tre d'&eacute;dition s'ouvre et
le curseur est situ&eacute; dans une nouvelle proc&eacute;dure : <b>Public Sub Form_Open()</b>
    (si vous avez d&eacute;j&agrave; programm&eacute; auparavant dans Visual Basic, nous devrions
utiliser l'&eacute;v&egrave;nement Form_Load). Nous allons faire que le contr&ocirc;le
<i>lblContador</i> nous montre les secondes restantes du d&eacute;compte. Les premi&egrave;re
lignes de code de la classe formulaire ressemble &agrave; cela :</p>
<pre class="code">
' Gambas class file
CONST fSegundosPorDefecto AS Float=120.0
fSegundos AS Float

PRIVATE SUB VerValores()
  DIM nMinutos AS Integer

  nMinutos = Int(Int(fSegundos) / 60)
  lblContador.Caption = nMinutos &amp; ":" &amp; Format (fSegundos -
                                                nMinutos * 60, "00.0")
END

PRIVATE SUB VerActivarDesactivar()
  IF tglFuncionando.Value THEN
    tglFuncionando.Text = ("&amp;Detener")
  ELSE
    tglFuncionando.Text = ("&amp;Arrancar")
  ENDIF
END

PUBLIC SUB Form_Open()
  fSegundos = fSegundosPorDefecto
  VerValores
  tglFuncionando.Value = FALSE
  VerActivarDesactivar
  txtSegundos.Text = fSegundos
  cmdPonerSegundos.Text = ("&amp;Reiniciar")
  cmdSalir.Text = ("&amp;Salir")
END
</pre>

    <p>Nous avons ajout&eacute; juste &agrave; la suite du commentaire que Gambas a g&eacute;n&eacute;r&eacute;
<i>Gambas class file</i> qui est une constante qui retient le nombre de secondes
par d&eacute;faut du chronom&egrave;tre, <i>fSegundosPorDefecto</i>, avec une valeur de
120 secondes (deux minutes), et une variable, <i>fSegundos</i> laquelle va
g&eacute;rer le d&eacute;compte. Nous avons cr&eacute;&eacute; &eacute;galement deux proc&eacute;dures :
    <i>VerValores</i>, qui affiche la valeur du d&eacute;compte et
    <i>VerActivarDesactivar</i>, qui change le texte du bouton Start/Stop.</p>

    <p>En ce moment, nous avons d&eacute;j&agrave; une formulaire qui fonctionne. Il ne fait
rien d'utile &agrave; part de nous faire comprendre ce que nous avons d&eacute;j&agrave; fait jusque
l&agrave;. Cela en vaut d&eacute;j&agrave; la peine. Sauvegardons les modifications depuis la fen&ecirc;tre
 principale du projet <i>Project CountDown</i>, et lan&ccedil;on l'application avec
<b>F5</b> ou avec le bouton <b><i>Ex&eacute;cuter</i></b> ou le bouton de la
barre de la m&ecirc;me fen&ecirc;tre. Voici ce que vous devriez avoir :</p>

    <center>
      <img src="../../common/images2/article329/FCountDown2.png"
      border="0" alt="Projet CountDown" width="292" height="255">
    </center>
    <br>
    <br>


    <p>Si cela n'appara&icirc;t pas ou que vous recevez une erreur, vous devez revoir
ce que nous avons fait jusqu'alors. M&ecirc;me si vous appuyez sur <b>Start</b>,
<b>Reset</b> ou <b>Exit</b> et que rien ne se passe. Cela sera notre prochaine
t&acirc;che : assigner les &eacute;v&egrave;nements &agrave; ces boutons dans la mesure o&ugrave; lorsque
l'utilisateur appuie sur l'un d'eux, cela bouge. Avant d'aller plus loin, jouons
 un peu avec notre application et d&eacute;couvrons tout ce qu'elle contient. Pour la
fermer, nous pouvons appuyer sur le X en haut &agrave; droite. Je suis sous KDE avec le
 th&egrave;me Suse comme vous pouvez le remarquer dans les formulaires et il est
possible que vous puissiez fermer votre fen&ecirc;tre d'une autre mani&egrave;re.</p>

    <p>En avant pour les boutons les plus simples : Que se passe-t-il lorsque
l'utilisateur appuie sur <b>Exit</b>? Nous devons fermer l'application. Pour
saisir le code Basic qui sera ex&eacute;cut&eacute; quand l'utilisateur appuye sur le bouton,
nous allons double-cliquer sur le bouton avec le texte <b>Exit</b>
(<i>cmbExit</i>). Nous voyons que Gambas g&egrave;re quelques lignes de code et que le
 curseur est situ&eacute; entre elles. C'est ici que le code doit &ecirc;tre saisi. Cette
proc&eacute;dure sera ex&eacute;cut&eacute;e lorsque l'utilisateur clique sur ce bouton. Pour fermer
l'application, nous devons ex&eacute;cuter Me.Close ainsi le code de cet &eacute;v&egrave;nement
sera :</p>
<pre class="code">
PUBLIC SUB cmdSalir_Click()<br>
  ME.Close<br>
END<br>
</pre>

    <p>La bouton suivant que nous allons contr&ocirc;ler est le <b>Reset</b>. De
la m&ecirc;me mani&egrave;re, nous double-cliquons sur le bouton et dans la fen&ecirc;tre de code
que Gambas nous pr&eacute;sente, nous ins&eacute;rons : </p>
<pre class="code">
PUBLIC SUB cmdPonerSegundos_Click()<br>
  fSegundos = txtSegundos.Text<br>
  VerValores<br>
END<br>
</pre>

    <p>Jusqu'ici, on dirait toujours que rien ne se passe. Notre application
doit &ecirc;tre plus vivante. Nous allons activer l'objet <i>Timer</i> situ&eacute; dans le
formulaire depuis le d&eacute;but. Pour le faire, nous devons param&eacute;trer l'intervalle
pour recevoir les &eacute;v&egrave;nements de l'horloge. Soit nous le faisons &agrave; partir du
code, dans notre &eacute;v&egrave;nement pr&eacute;c&eacute;dent <i>Form_Open</i>, soit nous le mettons dans
 le formulaire. Nous le ferons de cette mani&egrave;re. Dans le formulaire, nous
cliquons sur l'objet <i>Timer</i> et sa <b>fuille de propri&eacute;t&eacute;s</b>. Nous
changeons la valeur de son <b>Delay</b> de 1000ms &agrave; 100 pour recevoir un
&eacute;v&egrave;nement chaque dixi&egrave;me de seconde ce qui sera la pr&eacute;cision de notre
chronom&egrave;tre.</p>

    <p>Nous n'avons toujours pas de code qui sera ex&eacute;cut&eacute; chaque fois que
l'horloge sonne et la mani&egrave;re de l'activer. Pour g&eacute;n&eacute;rer le code de l'horloge,
rien n'est plus simple que, comme toujours, double-cliquer sur le formulaire de
l'horloge. Cela nous am&egrave;nera &agrave; la fen&ecirc;tre de code &agrave; l'endroit ad&eacute;quat. Apr&egrave;s
l'insertion de notre code, il devrait ressembler &agrave; ceci :</p>
<pre class="code">
PUBLIC SUB clkMiReloj_Timer()
  IF fSegundos &lt; 0.1 THEN
    tglFuncionando.Value = FALSE
    tglFuncionando_Click
  ELSE
    fSegundos = fSegundos - 0.1
    VerValores
  END IF
END
</pre>

    <p>Et finalement, nous activons le chronom&egrave;tre &agrave; la demande de l'utilisateur
 via le bouton &agrave; bascule qui est celui que nous n'avons pas encore g&eacute;r&eacute;. Avec
un double-clic sur le bouton, nous pouvons ins&eacute;rer le code pour cet &eacute;v&egrave;nement :
</p>
<pre class="code">
PUBLIC SUB tglFuncionando_Click()
  clkMiReloj.Enabled = tglFuncionando.Value
  VerActivarDesactivar
END
</pre>

    <p>Et maintenant, nous pouvons enfin tester le r&eacute;sultat de notre travail.
</p>

    <A NAME="329lfindex3">&nbsp;</A>
<H2>Et la touche finale : Gambas est multilingue comme il se doit</H2>


    <p>Une autre des caract&eacute;ristique de Gambas est son support de diff&eacute;rentes
langues. Si vous regarder bien le code, nous remarquerez que les cha&icirc;nes sont
entour&eacute;es de parenth&egrave;ses. C'est pour montrer que Gambas va &ecirc;tre traduit. Le texte
 des contr&ocirc;les du formulaire n'ont pas besoin de parenth&egrave;ses. Notre projet va
devenir quelque chose de tr&egrave;s utile et les utilisateurs vont demander &agrave; ce que
les bo&icirc;tes de dialogue apparaissent dans leur langue. Rien de plus simple. Nous
allons dans le menu <b>Project / Properties</b> de la fen&ecirc;tre du projet.</p>

    <center>
      <img src=
      "../../common/images2/article329/PropiedadesDeProyecto.png"
      border="0" alt="Propri&eacute;t&eacute;s du projet" width="493" height="513">
    </center>

    <p>Nous mettons un <b>titre</b> &agrave; notre projet et activons l'option
    <b>Project is translatable</b> qui permettra de traduire les dialogues.
Nous avons maintenant une nouvelle option active dans les menus :
Project / Translate. Si nous ouvrons le dialogue, nous pouvons voir que la
traduction est maintenant tr&egrave;s intuitive : </p>

    <center>
      <img src=
      "../../common/images2/article329/TraducirProyecto.png"
      border="0" alt="traduction du projet" width="550" height=
      "449">
    </center>

    <p>D'abord, nous s&eacute;lectionnons la langue cible dans la partie sup&eacute;rieure.
Lorsque nous voulons traduire une cha&icirc;ne, nous la s&eacute;lectionnons et remplissons
la partie inf&eacute;rieure. Une fois toutes les cha&icirc;nes traduites, nous pouvons la
tester en lan&ccedil;ant l'application depuis un terminal si nous avons r&eacute;gl&eacute; la
variable LANG avec la langue de la traduction. Si vous voulez voir ce que donne
la traduction en anglais, je ferme Gambas et j'ex&eacute;cute</p>
<pre class="code">
$ LANG=en_US; gambas<br>
</pre>

    <p>Pour revenir &agrave; la situation pr&eacute;c&eacute;dente, je lance Gambas et je le lance
depuis le menu KDE juste parce que la variable d'environnement n'est pas
d&eacute;finie. Elle n'est active que dans sa console.</p>

    <A NAME="329lfindex4">&nbsp;</A>
<H2>Conclusion</H2>


    <p>M&ecirc;me si c'est un langage interpr&eacute;t&eacute; et que nous avons besoin que tout
Gambas soit install&eacute;, c'est une bonne option de se lancer dans le d&eacute;veloppement
d'applications pour le bureau Linux. Comme nous l'avons vu, c'est tr&egrave;s simple et
le d&eacute;veloppement se fait tr&egrave;s rapidement. C'est suffisant pour la plupart des
aplications quotidiennes..</p>

    <p>L'aide &agrave; l'&eacute;cran est assez compl&egrave;te avec les exemples disponibles dans le
menu <b>File/Open example</b>. Nous pouvons nous rendre &eacute;galement sur la
<a href="http://gambas.sourceforge.net">page d'accueil du projet</a>. Dans la
section liens, il y a pas mal de projets en Basic qui peuvent &ecirc;tre int&eacute;ressant.
Ce n'est que le commencement d'un projet pour lequel je pr&eacute;vois un futur
prometteur.</p>
  



<!-- BODY_OF_THE_ARTICLE_STOP -->
<!-- 2pdaIgnoreStart -->
<A NAME="talkback">&nbsp;</a>
<h2>Talkback form for this article</h2>
Every article has its own talkback page. On this page you can submit a comment or look at comments from other readers:
<center>
    <table width="250" border=0><tr><td>
    <div class="tbbutton"><A class="nodec" href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=329">&nbsp;talkback page&nbsp;</a></div>
    </td></tr></table>
</center>

<br clear="all">
<HR size="2" noshade>
<table width="250" border=0><tr><td>
<div class="bbutton"><a class="nodec" href="../../index.shtml">&lt;--, LF Sommaire</a></div>
</td><td>
<div class="bbutton"><a class="nodec" href="index.shtml">Sommaire de ce num&eacute;ro</a></div>
</td></tr></table>
<br clear="all">
<HR size="2" noshade>
<!-- ARTICLE FOOT -->
<CENTER><TABLE WIDTH="98%" summary="footer">
<TR><TD ALIGN=CENTER BGCOLOR="#bdc6d5" WIDTH="50%">
<A HREF="../../common/lfteam.html">Site Web maintenu par l&acute;&eacute;quipe d&acute;&eacute;dition LinuxFocus</A>
<BR><FONT COLOR="#1111aa"><a href="../../common/copy.html">&copy; Jon&aacute;s Alvarez</a><br>&quot;some rights reserved&quot; see <a href="../../license/index.shtml">linuxfocus.org/license/</a><br><a href="http://www.linuxfocus.org">http://www.LinuxFocus.org</a></FONT>
</TD>
<TD BGCOLOR="#bdc6d5">
<!-- TRANSLATION INFO -->
<font size=2>Translation information:</font>
<TABLE summary="translators">
  <tr><td><font size="2">es --&gt; -- : Jon&aacute;s Alvarez <small>&lt;jalvarez(at)eitb.com&gt;</small></font></td></tr>
  <tr><td><font size="2">es --&gt; en: Miguel Alfageme S&aacute;nchez, Samuel Landete Benavente. &lt;mas20(at)tid.es&gt;</font></td></tr>
  <tr><td><font size="2">en --&gt; fr: Laurent RICHARD. &lt;kouran(at)linuxmail.org&gt;</font></td></tr>
</TABLE>
</TD>
</TR></TABLE></CENTER>
<p><font size=1>2005-06-02, generated by lfparser version 2.52</font></p>
<!-- 2pdaIgnoreStop -->
</BODY>
</HTML>