"Fossies" - the Fresh Open Source Software Archive

Member "gambas-3.16.3/app/src/gambas3/tips/tips.pl.txt" (7 Sep 2021, 8708 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>Witaj w <b>Gambasie</b> !</p>
    4 
    5 <p><b>Gambas</b> jest zintegrowanym środowiskiem programistycznym
    6  bazującym na zaawansowanym interpreterze <i>Basica</i>.</p>
    7 
    8 <p><b>Gambas</b> umożliwi Ci łatwe i szybkie tworzenie programów. 
    9 Jednak to, czy programy będą ładne, funcjonalne i przejrzyste zależy tylko od Ciebie...
   10 </p>
   11 
   12 <p>Miłej pracy !</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>Każdy projekt musi mieć <i>klasę startową</i>. Klasa
   21 startowa musi definiować  statyczną metodę publiczną o nazwie <i>Main</i>
   22 bez argumentów, która uruchomi Twój program.</p>
   23 
   24 <p>Możesz zdefiniować klasę startową poprzez kliknięcie prawym klawiszem 
   25 myszki w drzewie projektu i wybrać opcję <i>Klasa startowa</i> w menu podręcznym.</p>
   26 
   27 <p>Nie jest konieczne definiowanie metody <i>Main</i> w formularzu 
   28 startowym, ponieważ jest już w nim predefiniowana.</p>
   29 
   30 <p>Ta predefiniowana metoda startowa inicjuje formularz i wyświetla go podobnie jak
   31 w <i>Visual Basic&trade;</i>.</p>
   32 
   33 
   34 [OPEN]
   35 
   36 <p>W <b>Gambasie</b> instrukcja <b>OPEN</b> nie działa jak ta
   37 w <i>Visual Basicu</i>. Nie zwraca pliku jako integer, ale jako obiekt  <i>File</i>.</p>
   38 
   39 <p>Dlatego, zamiast pisać :</p>
   40 
   41 <pre>DIM hPliku AS Integer
   42 ...
   43 OPEN "MójPlik" FOR READ AS #hPliku</pre>
   44 
   45 <p>musisz napisać :</p>
   46 
   47 <pre>DIM hPliku AS File
   48 ...
   49 hPliku = OPEN "MójPlik" FOR READ</pre>
   50 
   51 
   52 [CATDIR]
   53 
   54 <p>Czy wiesz, że możesz połączyć ścieżkę z nazwą pliku
   55 używając operatora <b><tt>&/</tt></b> ? Ten operator
   56 połączy dwa łańcuchy znaków dodając między nimi '/',
   57 jeśli wcześniej go tam nie było, lub zredukuje jego wielokrotność.</p>
   58 
   59 <p>Przykład:</p>
   60 
   61 <pre>PRINT "/home/gambas" &/ ".bashrc"
   62 /home/gambas/.bashrc
   63 
   64 PRINT "/home/gambas/" &/ "/tmp" &/ "foo.bar"
   65 /home/gambas/tmp/foo.bar
   66 </pre>
   67 
   68 <p>Czyż to nie wpaniałe ?</p>
   69 
   70 
   71 [EXEC]
   72 
   73 <p>Z projektu możesz utworzyć plik uruchamialny.
   74  Wybierz opcję <i>Utwórz plik uruchamialny</i> w menu <i>Projekt</i>.</p>
   75 
   76 <p>Kiedy <b>Gambas</b> stworzy plik uruchamialny umieści go
   77 w domyślnym katalogu projektu. 
   78 Nazwa pliku uruchamialnego jest taka sama jak nazwa Twojego projektu.</p>
   79 
   80 
   81 [PATH]
   82 <p>
   83 Ścieżki względne mają specjalne znaczenie w <b>Gambasie</i>.
   84 Zawsze odwołują się do pliku wewnątrz Twojego projektu.
   85 
   86 <p>
   87 Nie istnieje idea <i>bieżącego katalogu</i> i nie ma słowa kluczowego
   88 takiego jak <tt>CHDIR</tt>, które pozwalałoby na zmianę katalogu roboczego.
   89 <p>
   90 <b>Uwaga:</b> musisz używać tylko ścieżek względnych do
   91 dostępu do plików wewnątrz projektu, ponieważ ścieżki bezwględne
   92  po utworzeniu pliku uruchamialnego nie będą działać poprawnie.
   93 
   94 
   95 [GLOBAL]
   96 
   97 W <b><i>Gambasie</i></b> <u>nie ma zmiennych globalnych</u>!
   98 <p>
   99 Aby to obejść, zadeklaruj zmienne jako <tt>PUBLIC</tt> w module startowym.
  100 <p>
  101 Jeśli nie masz w projekcie modułu startowego tylko formularz 
  102 startowy, wtedy zadeklaruj zmienne jako <tt>STATIC PUBLIC</tt>.
  103 <p>
  104 Aby mieć dostęp do tych zmiennych musisz użyć nazwy modułu lub
  105 formularza startowego przed nazwą zmiennej: 
  106 <tt>MójModułStartowy.MojaZmiennaGlobalna</tt> lub
  107 <tt>MójFormularzStartowy.MojaZmiennaGlobalna</tt>.
  108 
  109 
  110 [EMPTY]
  111 
  112 <p>Nie jest konieczne użycie funcji <b>Len()</b> aby się dowiedzieć czy 
  113 łańcuch znaków jest pusty. Możesz przetestować go bezpośrednio;
  114 jeśli łańcuch jest pusty, to zostanie zwrócone <b>FALSE</b>, a jeśli nie jest pusty
  115 zostanie zwrócone <b>TRUE</b>.</p>
  116 
  117 <p>Na przykład, zamiast :</p>
  118 
  119 <pre>IF Len(MójŁańcuchZnaków) > 0 THEN ...
  120 IF Len(MójŁańcuchZnaków) = 0 THEN ...</pre>
  121 
  122 <p>Możesz wpisać :</p>
  123 
  124 <pre>IF MójŁańcuchZnaków THEN ...
  125 IF NOT MójŁańcuchZnaków THEN ...</pre>
  126 
  127 
  128 [EVENT]
  129 
  130 <p>Każda kontrolka i każdy obiekt, który może wywołać zdarzenie
  131 posiada <i>obserwatora zdarzenia (event observer)</i> i 
  132 <i>nazwę grupy</i> zdarzenia.</p>
  133 
  134 <p>Obserwator zdarzenia wyłapuje każde zdarzenie wywołane przez obiekt, 
  135 a nazwa grupy zdarzenia jest prefiksem procedury wywołanej do zarządzania 
  136 zdarzeniem.</p>
  137 
  138 <p>Domyślnie, obserwator zdarzenia jest obiektem 
  139 utworzonej kontrolki, a nazwa grupy jest nazwą tej kontrolki.
  140 </p>
  141 
  142 <p>W ten sposób formularz otrzymuje wszystkie zdarzenia wywołane przez
  143 kontrolki utworzone wewnątrz tego formularza.</p>
  144 
  145 <pre>' Gambas form
  146 DIM hPrzycisku AS Button
  147 
  148 PUBLIC SUB _new()
  149 &nbsp;&nbsp;hPrzycisku = NEW Button(ME) AS "MójPrzycisk"
  150 END
  151 
  152 PUBLIC SUB MójPrzycisk_Click()
  153 &nbsp;&nbsp;PRINT "Kliknąłeś w MójPrzycisk !"
  154 END
  155 </pre>
  156 
  157 
  158 [FORM]
  159 
  160 <p>W <b><i>Gambasie</i></b> formularz jest obserwatorem 
  161 własnych zdarzeń, w związku z czym możesz bezpośrednio zarządzać
  162 jego zdarzeniami (takimi jak <i>Resize</i>, 
  163 <i>Activate</i>, ...) w kodzie jego własnej klasy.</p>
  164 
  165 <p>Dzięki temu początkujący w Gambasie, pracujący wcześniej w 
  166 <i>Visual Basicu</i> nie są zdezorientowani :-).</p>
  167 
  168 
  169 [EMBED]
  170 
  171 <p>W <b><i>Gambasie</i></b> możesz osadzać dowolny formularz
  172  w innym formularzu&nbsp;!</p>
  173 
  174 <p>Aby uzyskać tak wspaniałą funkcjonalność
  175 wystarczy zainicjować formularz poprzez podanie 
  176 nadrzędnego kontenera jako ostatniego argumentu konstruktora.</p>
  177 
  178 <p>Przykład&nbsp;:</p>
  179 <p><tt>DIM hFormularza AS MójFormularz<br>
  180 DIM hPodformularza AS MójPodformularz<br><br>
  181 ' Tworzenie formularza głównego<br>
  182 hFormularza = NEW MójFormularz<br>
  183 ' Wstawienie podformularza do formularza głównego<br>
  184 'Zauważ, że ten formularz pobiera dwa parametry przed kontenerem<br>
  185 hPodformularza = NEW MójPodformularz(Param1, Param2, MójFormularz)<br>
  186 ' Przenieś i zmień wielkość formularza<br>
  187 hPodformularza.Move(8, 8, 128, 64)<br>
  188 </tt></p>
  189 
  190 <p>Uwaga: formularz osadzony w innym formularzu jest nadal formularzem
  191 i tym samym jest własnym obserwatorem zdarzeń.</p>
  192 
  193 
  194 [GROUP]
  195 
  196 <p>Każda kontrolka posiada właściwość <i>(Group)</i>.
  197 Kiedy właściwość ta jest ustawiona, prefiks nazwy uchwytu zdarzenia
  198 jest nazwą grupy, a nie nazwą kontrolki.</p>
  199 
  200 <p>Załóżmy, że masz <i>Przycisk</i> o nazwie <b>btnMójPrzycisk</b>
  201 z następującym uchwytem zdarzenia <i>Click</i>:</p>
  202 
  203 <pre>PUBLIC SUB btnMójPrzycisk_Click()</pre>
  204 
  205 <p>Jesli ustawisz właściwość <i>(Group)</i> dla <b>btnMójPrzycisk</b>
  206 na <i>MojaGrupa</i> wtedy uchwyt zdarzenia, który otrzyma
  207 zdarzenia z przycisku będzie następujący:</p>
  208 
  209 <pre>PUBLIC SUB MojaGrupa_Click()</pre>
  210 
  211 <p>Ta właściwość pozwala Ci na wychwytywanie zdarzeń różnych kontrolek
  212 w jednej funkcji, a kontrolki tej samej grupy nie muszą być tego samego typu !</p>
  213 
  214 <p><b>Notatka :</b> Starzy weterani <i>Visual Basica</i> moga rozpoznać ideę
  215 <i>tablicy kontrolek (control array)</i>, ale w bardziej funkcjonalnej implementacji. :-)</p>
  216 
  217 
  218 [TAG]
  219 
  220 <p>Każda kontrolka ma właściwość <i>Tag</i>. Ta właściwość jest przeznaczona
  221 dla programistów i może zawierać dowolne dane typu <b>VARIANT</b>, które
  222 uważa on za istotne.</p>
  223 
  224 <p>To jest bardzo użyteczne kiedy chcesz rozróżnić kontrolki tej samej grupy we 
  225 wspólnym uchwycie zdarzenia.</p>
  226 
  227 
  228 [LAST]
  229 
  230 <p>Słowo kluczowe <b>LAST</b> zwraca ostatnią kontrolkę, która odebrała
  231 zdarzenie. Jest to bardzo użyteczne kiedy chcesz napisać uchwyt zdarzenia,
  232  który jest niezależny od nazwy kontrolki.</p>
  233 
  234 <p>Przykładowo, przypuśćmy, że chcesz napisać program kalkulator.
  235 Zdefiniowałeś przyciski, po jednym dla każdej cyfry, każdy w tej samej <i>grupie</i>
  236 o nazwie "Cyfry". Właściwość <i>Tag</i> każdej kontrolki zawiera cyfrę widoczną 
  237 na przycisku. Twój uchwyt zdarzenia może wyglądać tak:</p>
  238 
  239 <p><tt>PUBLIC SUB Cyfry_Click()<br><br>
  240 &nbsp;&nbsp;Display = Display & LAST.Tag<br>
  241 &nbsp;&nbsp;RefreshDisplay<br><br>
  242 END</tt></p>
  243 
  244 
  245 [LEFT]
  246 
  247 <p>Dobrze znane funkcje z <i>BASICa</i>: <b>Left$</b>, <b>Right$</b>
  248 i <b>Mid$</b> mają dodatkową użyteczność w <b><i>Gambasie</i></b>.</p>
  249 
  250 <p>Drugi parametr <b>Left$</b> i <b>Right$</b> jest opcjonalny i domyślnie zwraca
  251 jeden znak.</p>
  252 
  253 <p><tt>Left$("Gambas")</tt> zwraca <tt>"G"</tt><br>
  254 <tt>Right$("Gambas")</tt> zwraca <tt>"s"</tt></p>
  255 
  256 <p>Drugi parametr może być ujemny i wtedy funkcja zwraca wartość 
  257 bez określonej ilości niechcianych znaków.</p>
  258 
  259 <p><tt>Left$("Gambas", -2)</tt> zwraca <tt>"Gamb"</tt><br>
  260 <tt>Right$("Gambas", -2)</tt> zwraca <tt>"mbas"</tt></p>
  261 
  262 <p>Na podobnej zasadzie, trzeci argument funkcji <b>Mid$</b> 
  263 może mieć również wartość ujemną.</p>
  264 
  265 <p><tt>Mid$("Gambas", 2, -2)</tt> zwraca <tt>"amb"</tt>
  266 
  267 
  268 [END]
  269 
  270 <p>Przeczytałeś wszystkie porady dnia. Mam nadzieję, że dzięki nim stałeś się 
  271 ekspertem programowania w <b>Gambasie</b> ! :-)</p>
  272 
  273 <p>Jesli chcesz dodać nowe porady, prześlij je na adres
  274 &nbsp;:</p>
  275 <p><u>g4mba5@gmail.com</u></p>
  276 
  277 <p>Z góry dziękuję !</p>
  278 
  279 
  280