"Fossies" - the Fresh Open Source Software Archive

Member "gambas-3.16.3/app/src/gambas3/tips/tips.fr.txt" (7 Sep 2021, 18638 Bytes) of package /linux/misc/gambas-3.16.3.tar.bz2:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 [WELCOME]
    2 
    3 <h3>Bienvenue dans <b>Gambas</b> !</h3>
    4 
    5 <p><b>Gambas</b> est un environnement graphique de développement
    6 basé sur un interpréteur <i>Basic</i> avancé.</p>
    7 
    8 <p>Le but de <b>Gambas</b> est de vous permettre de concevoir de
    9 puissants programmes, et ce facilement et rapidement. Mais la propreté de ces
   10 programmes reste sous <i>votre</i> entière responsabilité...</p>
   11 
   12 <p>En espérant que vous l'apprécierez !</p>
   13 
   14 <p align=right>Beno&icirc;t Minisini<br>
   15 <u>g4mba5@gmail.com</u></p>
   16 
   17 
   18 [STARTUP]
   19 
   20 <h3>Classe de démarrage</h3>
   21 
   22 <p>Tout projet doit avoir une <i>classe de démarrage</i>. Cette classe 
   23 de démarrage doit posséder une méthode publique statique appelée 
   24 <b><tt>Main</tt></b> ne possédant aucun paramètre. Celle-ci agira alors comme 
   25 méthode de démarrage de votre programme.</p>
   26 
   27 <p>Pour définir la classe de démarrage, cliquez dessus avec le bouton 
   28 droit dans l'arbre du projet, et cochez l'entrée <u>Classe de 
   29 démarrage</u> dans le menu contextuel.</p>
   30 
   31 <p>Il n'est pas nécessaire de définir la méthode <tt>Main</tt> dans un 
   32 formulaire de démarrage, car celui-ci en possède une par défaut.</p>
   33 
   34 <p>Cette méthode de démarrage par défaut se charge d'instancier puis 
   35 d'afficher le formulaire, à la manière de <i>Visual Basic&trade;</i>.
   36 </p>
   37 
   38 
   39 [EXEC]
   40 
   41 <h3>Exécutable</h3>
   42 
   43 Vous pouvez créer un fichier exécutable à partir de votre projet.
   44 Pour cela, sélectionnez <u>Générer l'exécutable...</u> dans le menu
   45 <u>Projet</u>.
   46 <p>
   47 L'exécutable est placé par défaut dans le répertoire du projet.
   48 Il porte le même nom que le projet.
   49 
   50 
   51 [OPEN]
   52 
   53 <h3>Open</h3>
   54 
   55 L'instruction <b><tt>Open</tt></b> de <b>Gambas</b> ne fonctionne
   56 pas comme celle de <i>Visual Basic&trade;</i>. Elle ne retourne
   57 pas le fichier ouvert sous forme d'un entier, mais d'un objet de
   58 la classe <b>File</b>.
   59 <p>
   60 Ainsi, au lieu de taper :
   61 <pre>Dim Handle As Integer
   62 ...
   63 Open "mon-fichier.txt" For Read As #Handle</pre>
   64 <p>
   65 Vous devez taper :
   66 <pre>Dim Handle As File
   67 ...
   68 Handle = Open "mon-fichier.txt" For Read</pre>
   69 
   70 
   71 [CATDIR]
   72 
   73 <h3>Concaténation de chemins</h3>
   74 
   75 Savez-vous que vous pouvez concaténer des noms de répertoires et
   76 de fichiers avec l'opérateur <b><tt>&/</tt></b> ? 
   77 <p>
   78 Cet opérateur s'occupe d'ajouter le caractère de délimitation
   79 de répertoire <tt>'/'</tt> lorsque c'est nécessaire.
   80 <p>
   81 Par exemple :
   82 <pre>Print "/home/gambas" &/ ".bashrc"
   83 &rarr; /home/gambas/.bashrc
   84 
   85 Print "/home/gambas/" &/ "/tmp" &/ "foo.bar"
   86 &rarr; /home/gambas/tmp/foo.bar
   87 </pre>
   88 <p>N'est-ce pas merveilleux ? :-)
   89 
   90 
   91 [PATH]
   92 
   93 <h3>Chemins relatifs</h3>
   94 
   95 Les chemins relatifs ont une signification particulière dans <i><b>Gambas</b></i>.
   96 Ils font référence aux fichiers situés à l'intérieur de votre projet.
   97 <p>
   98 Il n'y a pas de concept de <i>répertoire courant</i>, et aucune instruction
   99 telle que <tt>CHDIR</tt> qui serait susceptible de le modifier.
  100 <p>
  101 <b>Attention&nbsp;:</b> vous devez toujours utiliser des chemins relatifs pour
  102 accéder aux fichiers de votre projet, car les chemins absolus vers ces
  103 fichiers n'ont plus de signification lorsque le projet est transformé
  104 en exécutable.
  105 
  106 
  107 [GLOBAL]
  108 
  109 <h3>Variables globales</h3>
  110 
  111 Il n'y a <u>pas</u> de variables globales en <b>Gambas</b>&nbsp;!
  112 <p>
  113 Par contre, vous pouvez placer les variables auxquelles vous désirez accéder depuis
  114 n'importe quelle partie de votre projet à l'intérieur de votre module principal en les déclarant <tt>Public</tt>.
  115 <p>
  116 Si vous n'avez pas de module principal, mais un formulaire principal,
  117 déclarez-les comme <tt>Static Public</tt>.
  118 <p>
  119 Pour accéder à ces variables, vous devez utiliser le nom du module ou du
  120 formulaire principal ainsi&nbsp;:
  121 
  122 <p><tt>MonModulePrincipal.MaVariableGlobale</tt>
  123 <p>ou bien
  124 <p><tt>MonFormulairePrincipal.MaVariableGlobale</tt>
  125 
  126 
  127 [EMPTY]
  128 
  129 <h3>Chaînes vides</h3>
  130 
  131 Pour savoir si une chaîne est vide, il n'est pas nécessaire d'effectuer
  132 une comparaison avec <tt>""</tt> ou bien d'utiliser la fonction
  133 <tt><b>Len()</b></tt>. Il est possible de la tester directement, car une
  134 chaîne vide est équivalente à <tt><b>False</b></tt> et une chaîne non-vide
  135 est équivalente à <tt><b>True</b></tt>.
  136 <p>
  137 Par exemple, plutôt que de faire :
  138 <pre>If Len(MaChaine) > 0 Then ...
  139 If Len(MaChaine) = 0 Then ...</pre>
  140 <p>
  141 Vous devriez plutôt faire :
  142 <pre>If MaChaine Then ...
  143 If Not MaChaine Then ...</pre>
  144 
  145 
  146 [TRANSLATE]
  147 
  148 <h3>Traduction</h3>
  149 
  150 <p>Un programme écrit en <b>Gambas</b> est traduisible dans n'importe quel langue,
  151 à condition que vous indiquiez parmi les chaînes de caractères du programme
  152 lesquelles doivent être traduites, et lesquelles ne le doivent pas.</p>
  153 
  154 <p>Pour indiquer quelles chaînes doivent être traduites, il suffit de les
  155 écrire entre parenthèses:</p>
  156 
  157 <pre>Print ("Traduisez-moi")
  158 Print "Mais ne me traduisez pas!"</pre>
  159 
  160 
  161 [SUBST]
  162 
  163 <h3>Subst$</h3>
  164 
  165 <p>La fonction <b><tt>Subst$()</tt></b> est très utile pour internationaliser votre application.
  166 
  167 <p>Elle prend au moins deux arguments. Le premier est le masque de texte à l'intérieur duquel les 
  168 substitutions vont s'appliquer. Les autres sont les substitutions, numérotées en commençant par un.
  169 
  170 <p>Chaque occurence <tt>&X</tt> de la chaîne de substitution sera remplacée par le X<sup>ème</sup>
  171 argument à substituer. Par exemple :
  172 
  173 <pre>Print Subst(("Substitution de &1, &2 et &3"),
  174   "premier", "deuxième", "troisième")
  175 
  176 &rarr; Substitution de premier, deuxième et troisième</pre>
  177 
  178 
  179 [EVENT]
  180 
  181 <h3>Gestionnaires d'évènements</h3>
  182 
  183 Chaque contrôle, et chaque objet pouvant générer des évènements, possède
  184 un <i>observateur d'évènement</i> et un <i>nom de groupe</i> d'évènement.
  185 <p>
  186 L'observateur d'évènement reçoit chaque évènement généré par un objet, et
  187 le nom de groupe d'évènenement est le préfixe de la fonction qui sera
  188 appelée pour gérer l'évènement. Cette fonction est appelée <i>gestionnaire
  189 d'évènements</i>.
  190 <p>
  191 Par défaut, l'observateur d'évènement est l'objet à l'intérieur duquel
  192 vous avez créé le contrôle, et le nom de groupe est le nom du contrôle.
  193 <p>
  194 De cette manière, un formulaire recevra tous les évènements des contrôles
  195 lui appartenant.
  196 <p>
  197 <pre>' Gambas form
  198 Dim hButton As Button
  199 
  200 Public Sub _new()
  201 &nbsp;&nbsp;hButton = New Button(Me) As "MonBouton"
  202 End
  203 
  204 Public Sub MonButton_Click()
  205 &nbsp;&nbsp;Print "Vous avez cliqué sur MonBouton !"
  206 End
  207 </pre>
  208 
  209 
  210 [FORM]
  211 
  212 <h3>Formulaires</h3>
  213 
  214 En <b>Gambas</b>, un formulaire est son propre observateur d'évènements, afin
  215 que vous puissez directement gérer ses évènements (comme <b>Resize</b>,
  216 <b>Activate</b>, ...) dans le code même de la classe associée.
  217 <p>
  218 De cette manière, les débutants venant de <i>Visual Basic&trade;</i> ne sont
  219 pas désorientés :-).
  220 
  221 
  222 [EMBED]
  223 
  224 <h3>Formulaires imbriqués</h3>
  225 
  226 <p>Vous pouvez imbriquer un formulaire à l'intérieur d'un autre en 
  227 <b>Gambas</b>&nbsp;! Pour cela, instanciez simplement votre formulaire en lui passant
  228 un conteneur parent en argument supplémentaire.</p>
  229 
  230 <p>Par exemple&nbsp;:</p>
  231 <p><pre>Dim hForm As MyDialog
  232 Dim hSuperControl As MyForm
  233 
  234 ' Création d'une boîte dialogue
  235 hForm = New MyDialog
  236 ' Insertion d'un formulaire dans le dialogue
  237 ' Notez que le constructeur du formulaire prend deux arguments avant 
  238 ' le conteneur
  239 hSuperControl = New MyForm(Param1, Param2, MyDialog)
  240 ' Déplacement et redimensionnement du formulaire
  241 hSuperControl.Move(8, 8, 128, 64)
  242 </pre>
  243 
  244 <p><b>Attention&nbsp;:</b> un formulaire imbriqué reste un formulaire, et par conséquent
  245 est son propre observateur d'évènements.</p>
  246 
  247 
  248 [GROUP]
  249 
  250 <h3>Groupes de contrôles</h3>
  251 
  252 <p>Chaque contrôle possède une propriété <i>(Group)</i>. Lorsque cette propriété est
  253 définie, le préfixe de chaque gestionnaire d'évènement devient le nom de ce groupe
  254 et non plus le nom du contrôle.</p>
  255 
  256 <p>Supposons qu'on ait un <b>Button</b> appelé <tt>btnAction</tt> avec le gestionnaire
  257 d'évènement <b>Click</b> suivant :</p>
  258 
  259 <pre>Public Sub btnAction_Click()</pre>
  260 
  261 <p>Si vous définissez la propriété <i>(Group)</i> de <b>btnAction</b> à <tt>"MyGroup"</tt>,
  262 alors le gestionnaire d'évènement sera le suivant :</p>
  263 
  264 <pre>Public Sub MyGroup_Click()</pre>
  265 
  266 <p>Cette propriété vous permet de gérer les évènements de différents contrôles au sein
  267 d'une seule fonction. Et les contrôles d'un même groupe peuvent être de types différents !</p>
  268 
  269 <p><b>Remarque :</b> le bon vieux vétéran du <i>Visual Basic</i> reconnaîtra éventuellement
  270 le concept de <i>tableau de contrôle</i>, mais dans une implémentation bien plus puissante. :-)</p>
  271 
  272 [TAG]
  273 
  274 <h3>La propriété Tag</h3>
  275 
  276 <p>Chaque contrôle possède une propriété <b>Tag</b>. Cette propriété est
  277 destinée au programmeur, et peut contenir n'importe quel donnée de type <b>Variant</b>
  278 que vous trouverez adéquate.</p>
  279 
  280 <p>Ceci est très utile si, par exemple, vous voulez distinguer les contrôles d'un
  281 même groupe au sein de leur gestionnaire d'évènement commun.</p>
  282 
  283 
  284 [LAST]
  285 
  286 <h3>Last</h3>
  287 
  288 <p>Le mot-clef <b><tt>Last</tt></b> retourne le dernier contrôle ayant reçu
  289 un évènement. Ceci est très utile si vous voulez écrire un gestionnaire
  290 d'évènement indépendant d'un nom de contrôle.</p>
  291 
  292 <p>Par exemple, supposons que vous voulez programmez une calculatrice.
  293 Vous avez défini dix boutons, un pour chaque chiffre, tous dans le même
  294 <i>groupe</i> <tt>"Digit"</tt>. La propriété <b>Tag</b> de chaque bouton
  295 contient le chiffre dessiné sur le bouton.</p>
  296 
  297 <p>Votre gestionnaire d'évènement ressemblera à ceci&nbsp;:</p>
  298 
  299 <pre>Public Sub Digit_Click()
  300 
  301 &nbsp;&nbsp;Display = Display & Last.Tag
  302 &nbsp;&nbsp;RefreshDisplay
  303 
  304 End</pre>
  305 
  306 
  307 [LEFT]
  308 
  309 <h3>Left$ / Mid$ / Right$</h3>
  310 
  311 <p>Les fonctions BASIC bien connues que sont <b><tt>Left$</tt></b>, <tt><b>Right$</b></tt>
  312 et <tt><b>Mid$</b></tt> possèdent des syntaxes spécifiques bien utiles en <b>Gambas</b>.
  313 
  314 <p>Le deuxième argument de <b><tt>Left$</tt></b> et de <b><tt>Right$</tt></b> est optionnel,
  315 et vaut un par défaut.</p>
  316 
  317 <p><tt>Left$("Gambas")</tt> retourne <tt>"G"</tt>.<br>
  318 <tt>Right$("Gambas")</tt> retourne <tt>"s"</tt>.</p>
  319 
  320 <p>Ce second argument peut être négatif. Il donne alors le nombre de
  321 caractères à ne pas extraire.</p>
  322 
  323 <p><tt>Left$("Gambas", -2)</tt> retourne <tt>"Gamb"</tt>.<br>
  324 <tt>Right$("Gambas", -2)</tt> retourne <tt>"mbas"</tt>.</p>
  325 
  326 <p>De même, le troisième argument de <tt><b>Mid$</b></tt> peut être négatif. Il
  327 donne alors le nombre de caractères depuis la fin de la chaîne à ne pas extraire.</p>
  328 
  329 <p><tt>Mid$("Gambas", 2, -2)</tt> retourne <tt>"amb"</tt>.</p>
  330 
  331 
  332 [OBSERVER]
  333 
  334 <h3>Observer</h3>
  335 
  336 <p>La classe <b>Observer</b> vous permet d'intercepter n'importe quel évènement
  337 de n'importe quel objet avant même qu'il ait été effectivement émis.</p>
  338 
  339 <pre>MyTextBox = New TextBox(Me) As "MyTextBox"
  340 MyObserver = New Observer(MyTextBox) As "MyObserver"
  341 ...
  342 Public Sub MyObserver_KeyPress()
  343   Debug "Reçu en premier"
  344 End
  345 
  346 Public Sub MyTextBox_KeyPress()
  347   Debug "Reçu en dernier"
  348 End</pre>
  349 
  350 L'observateur peut annuler l'évènement avec <tt>Stop Event</tt> pour
  351 empêcher son émission.
  352 
  353 
  354 [STRING]
  355 
  356 <h3>Chaînes UTF-8</h3>
  357 
  358 <p><b>Gambas</b> utilise le jeu de caractères <b>UTF-8</b> pour représenter
  359 les chaînes de caractères en mémoire.
  360 
  361 <p>Mais les fonctions de traitement de chaînes de caractères standardes ne
  362 fonctionnent qu'avec de l'<b>ASCII</b>&nbsp;:
  363 <tt>Left</tt>, <tt>Mid</tt>, <tt>Right</tt>, <tt>UCase</tt>...
  364 
  365 <p>Si vous voulez manipuler des chaînes de caractères UTF-8, vous devez utiliser
  366 les méthodes de la classe statique <b>String</b>, qui possèdent les mêmes noms
  367 que leur équivalent standardes.
  368 
  369 <pre>Print Len("bébé");; Left$("bébé", 3)
  370 &rarr; 6 bé
  371 
  372 Print String.Len("bébé");; String.Left("bébé", 3)
  373 &rarr; 4 béb</pre>
  374 
  375 
  376 [ASSIGNMENT]
  377 
  378 <h3>Assignations</h3>
  379 
  380 <p>Gambas implémente les raccourcis d'assignation auxquels les programmeurs C/C++ sont habitués.
  381 
  382 <pre>MyVariable += 2
  383 MyVariable *= 4
  384 MyVariable &= "Great"</pre>
  385 équivaut à
  386 <pre>MyVariable = MyVariable + 2
  387 MyVariable = MyVariable * 4
  388 MyVariable = MyVariable & "Great"</pre>
  389 
  390 <p>Et ainsi de suite...
  391 
  392 
  393 [DEBUG]
  394 
  395 <h3>Debug</h3>
  396 
  397 <p>Vous pouvez utiliser l'instruction <b><tt>Debug</tt></b> pour imprimer des messages de débogage
  398 sur la console (c'est-à-dire la sortie erreur standard). Elle se comporte exactement comme
  399 l'instruction <tt>Print</tt>.
  400 
  401 <p>Ces messages sont prefixés avec le nom de la classe, le nom de la méthode et le numéro de ligne
  402 de l'instruction <tt>Debug</tt>. Si vous ne voulez pas de ce préfixe, vous pouvez utiliser
  403 l'instruction <b><tt>Error</tt></b> à la place de <tt>Debug</tt>. 
  404 
  405 <p>Les messages de débogages sont automatiquement ignorés lorsque vous créez un exécutable
  406 privé des informations de débogage.
  407 
  408 
  409 [TRY]
  410 
  411 <h3>Gestion des erreurs (1)</h3>
  412 
  413 <p>La gestion des erreurs en <b>Gambas</b> s'effectue à l'aide des instructions suivantes&nbsp;:
  414 <b><tt>Try</tt></b>, <b><tt>Error</tt></b>, <tt>Catch</tt>, et <tt>Finally</tt>.
  415 
  416 <p><tt>Try</tt> essaie d'exécuter une instruction sans déclencher d'erreur. Le mot-clef <tt>Error</tt>
  417 est utilisé juste après pour savoir si l'instruction s'est exécutée correctement.
  418 
  419 <pre>Try MyFile = Open "/etc/password" For Write
  420 If Error Then Print "Je ne peux pas faire tout ce que je veux !"</pre>
  421 
  422 
  423 [CATCH]
  424 
  425 <h3>Gestion des erreurs (2)</h3>
  426 
  427 <p>La gestion des erreurs en <b>Gambas</b> s'effectue à l'aide des instructions suivantes&nbsp;:
  428 <tt>Try</tt>, <tt>Error</tt>, <b><tt>Catch</tt></b>, et <tt>Finally</tt>.
  429 
  430 <p><tt>Catch</tt> marque le début du gestionnaire d'erreurs d'une fonction ou d'une procédure.
  431 Il doit être placé à la fin du code de la fonction.
  432 
  433 <p>Ce gestionnaire d'erreur est exécuté lorsqu'une erreur est levée entre le début et la fin de 
  434 l'exécution de la fonction.
  435 
  436 <p>Si une erreur survient pendant l'exécution du gestionnaire d'erreur, elle est propagée normalement.
  437 
  438 <pre>Sub ProcessFile(FileName As String)
  439   ...
  440   Open FileName For Read As #hFile
  441   ...
  442   Close #hFile
  443   
  444 Catch ' Exécuté seulement si il y'a eu une erreur
  445 
  446   Print "Impossible de traiter le fichier "; FileName
  447 
  448 End</pre>
  449 
  450 
  451 [FINALLY]
  452 
  453 <h3>Gestion des erreurs (3)</h3>
  454 
  455 <p>La gestion des erreurs en <b>Gambas</b> s'effectue à l'aide des instructions suivantes&nbsp;:
  456 <tt>Try</tt>, <tt>Error</tt>, <tt>Catch</tt>, et <b><tt>Finally</tt></b>.
  457 
  458 <p><tt>Finally</tt> introduit une partie de code exécutée à la fin de la fonction dans tous les cas,
  459 même si une erreur a été levée pendant l'exécution de la fonciton.
  460 
  461 <p>L'utilisation de <tt>Finally</tt> est facultative. Mais si l'instruction <tt>Catch</tt> est utilisée,
  462 alors <tt>Finally</tt> doit obligatoirement la précéder.
  463 
  464 <p>Si une erreur survient pendant l'exécution du code introduit par <tt>Finally</tt>, elle est propagée
  465 normalement.
  466 
  467 <pre>Sub ProcessFile(FileName As String)
  468   ...
  469   Open FileName For Read As #hFile
  470   ...
  471 Finally ' Toujours exécuté, même s'il y a eu une erreur
  472 
  473   Close #hFile
  474   
  475 Catch ' Exécuté seulement en cas d'erreur
  476   
  477   Print "Cannot print file "; FileName
  478   
  479 End</pre>
  480 
  481 
  482 [OPTIONAL]
  483 
  484 <h3>Optional</h3>
  485 
  486 <p>Les fonctions ou procédures de <b>Gambas</b> peuvent avoir des arguments optionels.
  487 
  488 <p>Les arguments sont rendus optionnels en les prefixant simplement avec le mot-clef 
  489 <b><tt>Optional</tt></b>.
  490 
  491 <p>Les arguments optionnels peuvent aussi avoir une valeur par défaut explicite.
  492 
  493 <pre>Private Sub MyFunction(Param AS String, Optional Optim AS String = "Default")
  494   ...
  495   Print "Obligatoire: "; param; ", Optionnel: "; optim
  496   ...
  497 End</pre>
  498 
  499 
  500 [ARRAY]
  501 
  502 <h3>For Each</h3>
  503 
  504 <p>En <b>Gambas</b> vous pouvez facilement enumérer le contenu d'un tableau, d'une
  505 collection, ou de toute autre classe enumérable, avec l'instruction <b><tt>For Each</tt></b>.
  506 
  507 <p>Par exemple :
  508 
  509 <pre>Dim Xml As New XmlDocument
  510 Dim Node As XmlNode
  511 Dim I As Integer
  512 
  513 ' Ouverture du fichier XML
  514 Xml.Open("pokus.xml")
  515 ' Les noeuds enfants sont indexés avec [I], car il s'agit
  516 ' d'un tableau
  517 For I = 0 To Xml.Root.Children.Count - 1
  518   ' Les attributs sont énumérés avec For Each, car il s'agit
  519   ' d'une collection
  520   For Each Node In Xml.Root.Children[i].Attributes
  521     Print Node.Name;; Node.Value
  522   Next
  523 Next</pre>
  524 
  525 
  526 [ICON]
  527 
  528 <h3>Icônes prédéfinies</h3>
  529 
  530 <p>Vous pouvez utiliser les icônes prédéfinies pour améliorer l'apparence de vos interfaces.
  531 Ces icônes sont disponibles en tailles prédéfinies (<tt>"small"</tt>, <tt>"medium"</tt>, <tt>"large"</tt>,...)
  532 ou bien en tailles absolues (de 16x16 à 256x256).
  533 
  534 <p>Par exemple :
  535 
  536 <pre>Image1.Picture = Picture["icon:/32/warning"]
  537 Image2.Picture = Picture["icon:/small/error"]
  538 </pre>
  539 
  540 <p><b>Attention :</b> le composant <tt>gb.form</tt> est requis.
  541 
  542 
  543 [SETTINGS]
  544 
  545 <h3>Settings</h3>
  546 
  547 <p>Si vous avez besoin de mémoriser la configuration de votre programme (comme la géométrie de vos formulaires)
  548 alors vous être chanceux. C'est très simple et très élégant à faire en <b>Gambas</b>. :-)
  549 
  550 <p>Pour enregistrer la position d'un formulaire :
  551 <pre>Settings.Write(TheForm)</pre>
  552 
  553 <p>Pour la rappeler :
  554 <pre>Settings.Read(TheForm)</pre>
  555 
  556 <p>Pour enregistrer un élément de configuration :
  557 <pre>Settings["Slot/Key"] = Value</pre>
  558 
  559 <p>Et pour le rappeler :
  560 <pre>Value = Settings["Slot/Key", DefaultValue]</pre>
  561 
  562 La configuration est enregistrée dans le fichier <tt>~/.config/gambas3/&lt;MonApplication&gt;.conf</tt>,
  563 où <tt>&lt;MonApplication&gt;</tt> est le nom de votre projet.
  564 
  565 <p><b>Attention :</b> Le composant <tt>gb.settings</tt> est requis.
  566 
  567 
  568 [EDITOR]
  569 
  570 <p>Voici quelques astuces de l'éditeur...
  571 
  572 <h3>Deux types de commentaires</h3>
  573 
  574 <tt>' Commentaire normal</tt><br>
  575 <b><tt>'' Commentaire en gras</tt></b>
  576 
  577 <p>Les commentaires en gras sont utilisés pour documenter votre code.
  578 
  579 <h3>Comment utiliser les fragments de code</h3>
  580 
  581 <p>Saisissez <tt>main</tt> puis appuyez sur la touche <b>TAB</b>. Une fonction de démarrage
  582 publique et statique <tt>Main</tt> est automatiquement insérée dans votre code.
  583 
  584 <p>Saisissez <tt>ds</tt> puis appuyez sur la touche <b>TAB</b>. Une déclaration de variable
  585 locale de type <b>String</b> est insérée automatiquement, et vous pouvez saisir le nom
  586 de la variable immédiatement.
  587 
  588 <p>Les fragments code sont intégralement configurables depuis la boîte de dialogue des
  589 options globales de l'environnement de développement.</p>
  590 
  591 
  592 [END]
  593 
  594 <h3>C'est terminé !</h3>
  595 
  596 <p>Vous avez lu toutes les astuces du jour. J'espère que vous êtes
  597 devenu un expert <b>Gambas</b> maintenant ! :-)</p>
  598 
  599 <p>Si vous désirez ajouter de nouvelles astuces de votre cru,
  600 n'hésitez-pas à les envoyer à l'adresse suivante&nbsp;:</p>
  601 
  602 <p><u>g4mba5@gmail.com</u></p>
  603 
  604 <p>Merci d'avance !</p>