Gambas is a free development environment and a full powerful development platform based on a Basic interpreter with object extensions, as easy as Visual Basic™.
Tłumacząć na język Kochanowskiego czy tam Reja jak kto woli, Gambas jest środowiskiem programistycznym Basica łatwym do opanowania jak Visual Basic.
Nie będę tłumaczył tu dokumentacji Gambasa. Każdy może do niej sięgnąć, chciałem na początku napisać co jest fajnego i niefajnego w tym języku. Czy warto się bawić i kiedy.
Gambas to całe środowisko pozwalające w łatwy sposób stworzyć w Basicu okienkowy program pod Linuksa lub inne Unices. Można go też uruchomić pod Cygwin, ale tylko dla programów w trybie tekstowym. Można w nim tworzyć programy zarówno dla KDE, jak i dla Gnome. Oczywiście jak ktoś chce może stworzyć i program dla terminala.
Jakie są wady? Programy są uruchamiane w środowisku, nie można ich skompilować do kodu wykonywalnego. Co znacząco obniża prędkość wykonywania programu i jeśli chcemy uruchomić program na innym komputerze musimy instalować odpowiednie środowisko. Do tego kod źródłowy będzie zawsze otwarty, program zawsze jest rozprowadzany jako kod źródłowy. W samym języku też spotkamy się z różnymi ograniczeniami. Przy większych projektach zaczynają się problemy z zarządzaniem kodem.
Zalety? Szybkość tworzenia aplikacji okienkowych, sporo bibliotek z najpopularniejszych technologii. Można też przenosić programy z Visual Basic (uwaga, Gambas nie jest kompatybilny z Visual Basic). Można skorzystać z baz danych, tworzyć cgi (co akurat w przypadku tego języka uważam za zbędne). I łatwo poznać podstawy, żeby napisać własny funkcjonalny program.
Tworzenie programu dla KDE czy Gnome jest bardzo proste. W zasadzie interfejs prowadzi nas za rękę. Tworzymy sobie interfejs z klocków, a później tylko piszemy kod do poszczególnych zdarzeń. Ktoś nacisnął przycisk "Exit" w aplikacji? Wystarczy dodać obsługę zdarzenia ExitButton na kliknięcie (wszystko z rozwijanego menu), środowisko samo stworzy odpowiednią funkcję, taka pusta funkcja wygląda tak:
End
Dopisujemy Me.Close
Public Sub ExitButton_Click()
Me.Close
End
I po naciśnięciu klawisza Exit kończymy program. Oczywiście nazwę klawisza możemy sami sobie edytować. Proste. Kilka słów wyjaśnienia. "Me" jest referencją od bieżącego obiektu. W tym przypadku to referencja do otwartego okna. Metoda Close zamyka bieżące okno.
W przypadku programowania w Gambasie cały czas w zasadzie będziemy się odnosili do właściwości i metod danego obiektu. Jeśli utworzymy w oknie kontrolkę Label (etykieta) to wyświetlany napis zmieniamy:
Label.text = "To jest nowy napis"
Można w ten sposób zmienić wszystkie właściwości kontrolki. Kolor napisu, kolor tła. Jest tego sporo. Gambas Basic posiada bogaty system podpowiedzi, niestety tylko w języku angielskim. Ale jedno kliknięcie myszy i mamy dokumentację, która podaje nam jakie są właściwości obiektu, jakie ma metody i jakie zdarzenia obsługuje. Kontrolka Label nie daje nam za dużo możliwości, bo to tylko etykieta wyświetlana na ekranie, ale używa się jej często, żeby opisać użytkownikowi co ma na ekranie.
Do metod odwołujemy się w podobny sposób.
Label.hide - kontrolka staje się niewidoczna.
Label.show - kontrolka staje się widoczna.
W przypadku zdarzeń jak wyżej napisałem wyżej wybieramy zdarzenie, które chcemy obsłużyć z rozwijanego menu, środowisko tworzy odpowiednią funkcję i wypełniały tylko jej ciało.
Jak zacząć programowanie z Gambasem? Musimy ściągnąć na komputer i zainstalowwać główny program oraz komponenty. Warto zainstalować wszystkie dostępne komponenty, bo nie ma ich aż tyle ile bibliotek dla innych języków, a nie wiadomo co się przyda.
Po uruchomieniu środowiska wybieramy nowy projekt, pokazuje się okienko z wyborem typu aplikacji:
Po prawej stronie na dole mamy wybór komponentów jakie możemy umieścić w oknie naszej aplikacji. Do wyboru są etykiety, przyciski, etykiety tekstowe, pola wyboru, pola liczbowe. Na początek dajmy etykietę i przycisk. Wystarczy przeciągnąć komponent na nasze okienko. Na razie mają standardowe nazwy Label1 i Button1, ale zaraz to zmienimy. Najpierw zerknijmy na prawą stronę na górę, tam jest panel właściwości danego obiektu. Na początku są to właściwości okna aplikacji, ale jeśli klikniemy na przycisk albo etykietę pojawią się tam właściwości tych komponentów. Na samej górze jest informacja do jakiej klasy należy dany obiekt. Poniżej mamy nazwę. Klikamy więc na przycisk, zmieniamy nazwę z Button1 na ExitButton. Nazwa przycisku zmieniła się w okienku, ale lepiej jak by się wyświetlała inna nazwa. Przewijamy więc okienko właściwości w dół, na dole znajdziemy właściwość text, na razie ta właściwość jest pusta, ale wpisujemy Koniec albo Wyjście, jak kto chce. No teraz na naszym przycisku pojawił się wpisany przez nas tekst. Zaczyna to wyglądać. Ale ta etykieta. Klikamy na etykietę, znów przewijamy do właściwości text, ale tym razem dla etykiety i wpisujemy Pierwsze koty za płoty. Właściwość etykiety możemy zmienić tutaj albo w kodzie samego programu przez Label1.text = "Pierwsze koty za płoty". Lepiej jednak tutaj to zrobić, bo będzie to od razu widoczne. Pozwoli też przy większej liczbie elementów na odpowiednie rozłożenie etykiet, przycisków. Więc mamy już Napis Pierwsze koty za płoty i przycisk wyjście. Uruchamiamy program przez naciśnięcie klawisza F5. Program się uruchomił, ale naciśnięcie Koniec nie działa. Nic się nie dzieje. No trzeba oprogramować teraz to zdarzenie. Zamykamy okienko aplikacji standardowo albo możemy użyć czerwonego kwadracika który pojawił nam się na górze menu.
Public Sub ExitButton_Click()
End