"Fossies" - the Fresh Open Source Software Archive

Member "gambas-3.16.3/app/src/gambas3/tips/tips.nl.txt" (7 Sep 2021, 8276 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 <p>Welkom bij <b>Gambas</b> !</p>
    4 
    5 <p><b>Gambas</b> is een grafisch ontwikkel omgeving gebaseerd op een
    6 geavanceerdd <i>Basic</i> interpreter.</p>
    7 
    8 <p><b>Gambas</b> is geschreven om eenvoudig en snel
    9 krachtige applicaties te ontwikkelen. Het bouwen van de 
   10 programmacode blijft je <i>eigen</i> verantwoordelijkheid...</p>
   11 
   12 <p>Veel plezier ermee !</p>
   13 
   14 <p align=right>Beno&icirc;t Minisini<br>
   15 <u>g4mba5@gmail.com</u></p>
   16 
   17 
   18 [STARTUP]
   19 
   20 <p>Elk project moet een <i>startup class</i> hebben. Deze 
   21 startup class moet een piblieke methode <i>Main</i> hebben,
   22 zonder argumenten. Deze Main methode fungeerd als 
   23 de opstart methode voor de applicatie.</p>
   24 
   25 <p>Je kunt de startup class definieren door in de projectboom 
   26 met de rechter muisknop op het object te klikken en 
   27 startup class in het popup menu te selecteren</p>
   28 
   29 
   30 
   31 <p>Het is niet nodig om een <i>Main</i> methode in een opstart
   32 formulier te declareren, omdat het opstart formulier al een <i>Main</i> methode bevat.</p>
   33 
   34 <p>Deze reeds gedefinieerde Main methode initieerd het formulier, net zoals in 
   35 <i>Visual Basic&trade;</i>.</p>
   36 
   37 
   38 [OPEN]
   39 
   40 <p>De <b>OPEN</b> instructie van <b>Gambas</b> werkt niet zoals de <i>Visual Basic</i> variant.
   41 Het retourneerd geen integer, maar een <i>File</i> object.</p>
   42 
   43 <p>Dus in plaats van:</p>
   44 
   45 <pre>DIM handle AS Integer
   46 ...
   47 OPEN "mijnfile" FOR READ AS #handle</pre>
   48 
   49 <p>gebruik je :</p>
   50 
   51 <pre>DIM handle AS File
   52 ...
   53 handle = OPEN "mijnfile" FOR READ</pre>
   54 
   55 
   56 [CATDIR]
   57 
   58 <p>Weet je dat je directory- en filenamen kunt koppelen met de <b><tt>&/</tt></b> operator ?
   59 Deze operator lost alle problemen met eindigende slashes voor je op.</p>
   60 
   61 <p>Bijvoorbeeld:</p>
   62 
   63 <pre>PRINT "/home/gambas" &/ ".bashrc"
   64 /home/gambas/.bashrc
   65 
   66 PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
   67 /home/gambas/tmp/foo.bar
   68 </pre>
   69 
   70 <p>Is dit niet fantastisch ?</p>
   71 
   72 
   73 [EXEC]
   74 
   75 <p>Je kunt een 'executable' file (binairy) maken van je gehele project.
   76 Selecteer <i>Make executable</i> in het <i>Project</i> menu.</p>
   77 
   78 <p>Als <b>Gambas</b> een binairy file voor je maakt, plaatst het
   79 het resultaat in de standaard directory van je project.
   80 Deze executable krijgt dezelfde naam als het project.</p>
   81 
   82 
   83 [PATH]
   84 <p>
   85 Relatieve paden hebben altijd een speciale betekenis in <b><i>Gambas</i></b>.
   86 Ze refereren altijd naar bestanden in je project.
   87 <p>
   88 Er is geen concept als <i>current directory</i>, en geen commando als
   89 <tt>CHDIR</tt> om het te veranderen.
   90 <p>
   91 <b>Wees voorzichtig:</b> je moet altijd relatieve paden gebruiken voor verwijzingen 
   92 naar andere files in het project, omdat volledige paden niet meer werken als er 
   93 een executable van het project gemaakt wordt.</p>
   94 
   95 [GLOBAL]
   96 
   97 Er zijn <u>geen globale variabelen</u> in <b><i>Gambas</i></b>!
   98 <p>
   99 Als oplossing kun je ze in je main module plaatsen en declareren als <tt>PUBLIC</tt>.
  100 <p>
  101 Als je geen main module hebt, maar een main form, declareer ze dan als <tt>STATIC PUBLIC</tt>.
  102 <p>
  103 Om bij deze variabelen te komen gebruik je de naam van de module: <tt>MijnMainModule.MijnGlobaleVariable</tt> of
  104 <tt>MijnMainForm.MijnGlobaleVariable</tt>.
  105 
  106 
  107 [EMPTY]
  108 
  109 <p>Om te kijken of een string leeg is hoef je geen gebruik te maken van de
  110 <b>Len()</b> functie. Je kunt het direct testen: een lege string
  111 is <b>FALSE</b> en een niet-lege string is <b>TRUE</b>.</p>
  112 
  113 <p>Bijvoorbeeld, in plaats van :</p>
  114 
  115 <pre>IF Len(MijnString) > 0 THEN ...
  116 IF Len(MijnString) = 0 THEN ...</pre>
  117 
  118 <p>Kun je sneller :</p>
  119 
  120 <pre>IF MijnString THEN ...
  121 IF NOT MijnString THEN ...</pre>
  122 
  123 
  124 [EVENT]
  125 
  126 <p>Elke controller, en elk object dat een gebeurtenis (event) kan oproepen, heeft een 
  127 <i>event observer</i> en een event <i>group name</i>.</p>
  128 
  129 <p>De event observer ondervangt ieder event opgeroepen door het object, en 
  130 de 'event group name' is het voorvoegsel van de procedure die opgeroepen wordt om het
  131 event af te handelen.</p>
  132 
  133 <p>Standaard is de <i>event observer</i> het object waar je de controller gemaakt hebt, en de 
  134 group name is de naam van de controller.</p>
  135 
  136 <p>Op deze manier ontvangt een formulier alle gebeurtenissen die door controllers op dit 
  137 formulier gemaakt zijn.</p>
  138 
  139 <pre>' Gambas form
  140 DIM hButton AS Button
  141 
  142 PUBLIC SUB _new()
  143 &nbsp;&nbsp;hButton = NEW Button(ME) AS "MyButton"
  144 END
  145 
  146 PUBLIC SUB MyButton_Click()
  147 &nbsp;&nbsp;PRINT "You have clicked MyButton !"
  148 END
  149 </pre>
  150 
  151 
  152 [FORM]
  153 
  154 <p>In <b><i>Gambas</i></b>, is een formulier zijn eigen <i>event observer</i>,
  155 zodat je gebeurtenissen als <i>Resize</i>, 
  156 <i>Activate</i>, ...) kunt afhandelen in zijn eigen class code.</p>
  157 
  158 <p>Op deze manier worden de newbies van <i>Visual Basic</i> niet teveel
  159 afgeschrikt :-).</p>
  160 
  161 
  162 [EMBED]
  163 
  164 <p>Je kunt bij <b><i>Gambas</i></b> een formulier in een ander formulier invoegen
  165 &nbsp;!</p>
  166 
  167 <p>Om zo'n krachtige actie te doen hoef je enkel een ouder container (parent) mee te geven 
  168 als laatste parameter bij het oproepen van het formulier.</p>
  169 
  170 <p>Bij voorbeeld&nbsp;:</p>
  171 <p><tt>DIM hForm AS MijnDialog<br>
  172 DIM hSuperControl AS MijnForm<br><br>
  173 ' Create a dialog<br>
  174 hForm = NEW MijnDialog<br>
  175 ' Insert a form into this dialog<br>
  176 ' Note that this form takes two parameters before the container<br>
  177 hSuperControl = NEW MijnForm(Param1, Param2, MijnDialog)<br>
  178 ' Moves and resizes the form<br>
  179 hSuperControl.Move(8, 8, 128, 64)<br>
  180 </tt></p>
  181 
  182 <p>Let op: een formulier ingevoegd in een ander is nog steeds een formulier, 
  183 met zijn eigen event observer. </p>
  184 
  185 
  186 [GROUP]
  187 
  188 <p>Elke controller heeft een <i>(Group)</i> eigenschap. 
  189 Als deze eigenschap wordt gebruikt wordt de naam van de groep gebuikt voor het
  190 afhandelen van de events, en niet de naam van de controller.
  191 </p>
  192 
  193 <p>Stel: we hebben een <i>Button</i> genaamd <b>btnAction</b>
  194 Met de volgende <i>Click</i> event handler :</p>
  195 
  196 <pre>PUBLIC SUB btnAction_Click()</pre>
  197 
  198 <p>Als je de <i>(Group)</i> eigenschap van <b>btnAction</b> zet op
  199 <i>MijnGroup</i>, dan wordt de event handlerdie alle events ontvangt:</p>
  200 
  201 <pre>PUBLIC SUB MijnGroup_Click()</pre>
  202 
  203 <p>Op deze manier kun je verschillende controllers dezelfde functie toekennen.
  204 De controllers hoeven hiervoor niet eens van hetzelfde type te zijn!</p>
  205 
  206 <p><b>NB :</b> Een oude <i>Visual Basic</i> veteraan zal het systeem van een 
  207 <i>control array</i> herkennen, maar dan in een krachtigere uitvoering :-). </p>
  208 
  209 
  210 [TAG]
  211 
  212 <p>Elke controlller heeft een <i>Tag</i> eigenschap. Deze eigenschap is voor
  213 de programmeur, en kan elke gewenste <b>VARIANT</b> gegevens bevatten die je
  214 relevant vindt.</p>
  215 
  216 <p>Deze eigenschap is erg handig om verschillende controllers die bij elkaar 
  217 in dezelfde <i>group</i> zitten te onderscheiden 
  218 binnen de gezamenlijke event handler van deze group.</p>
  219 
  220 
  221 
  222 [LAST]
  223 
  224 <p>Het <b>LAST</b> commando retourneerd de laatst opgeroepen controller. 
  225 Dit is erg handis als je een event handler wilt schrijven die 
  226 onafhankelijk is van de controller naam.</p>
  227 
  228 <p>Bijvoorbeeld: Stel je wilt een rekenmachine programmeren.
  229 Je hebt tien knoppen gedefinieerd, elk voor een cijfer, en de knoppen gehangen 
  230 aan de <i>group</i> "Digit". De <i>Tag</i> van elke controlller is gelijk aan het 
  231 getal op de button. Je event handler kan er dan zo uit zien :</p>
  232 
  233 <p><tt>PUBLIC SUB Digit_Click()<br><br>
  234 &nbsp;&nbsp;Display = Display & LAST.Tag<br>
  235 &nbsp;&nbsp;RefreshDisplay<br><br>
  236 END</tt></p>
  237 
  238 
  239 [LEFT]
  240 
  241 <p>De bekende <i>BASIC</i> routines <b>Left$</b>, <b>Right$</b>
  242 en <b>Mid$</b> hebben handige functies in <b><i>Gambas</i></b></p>
  243 
  244 <p>De tweede parameter van <b>Left$</b> en <b>Right$</b> is
  245 optioneel, en is standaard 1.</p>
  246 
  247 <p><tt>Left$("Gambas")</tt> retourneerd <tt>"G"</tt><br>
  248 <tt>Right$("Gambas")</tt> retourneerd <tt>"s"</tt></p>
  249 
  250 <p>De tweede parameter mag negatief zijn, en geeft dan het aantal karakters dat
  251 je <u>niet</u> wilt.</p>
  252 
  253 <p><tt>Left$("Gambas", -2)</tt> retourneerd <tt>"Gamb"</tt><br>
  254 <tt>Right$("Gambas", -2)</tt> retourneerd <tt>"mbas"</tt></p>
  255 
  256 <p>Vanzelfsprekend, het derde argument van <b>Mid$</b> mag negatief zijn, en geeft 
  257 dan het aantal karakters vanaf het eind van de string dat genegeerd moet worden.</p>
  258 
  259 <p><tt>Mid$("Gambas", 2, -2)</tt> retourneerd <tt>"amb"</tt>
  260 
  261 
  262 [END]
  263 
  264 <p>Je hebt alle tips van de dag gelezen. Ik hoop dat je nu een <b>Gambas</b> 
  265 expert geworden bent ! :-)</p>
  266 
  267 <p>Als je tips toe te voegen hebt, zend je nieuwe tips dan naar het volgende 
  268 adres&nbsp;:</p>
  269 <p><u>g4mba5@gmail.com</u></p>
  270 
  271 <p>Alvast bedankt !</p>
  272 
  273 
  274