NewBasic Einsteigerkurs Teil 1 - Sigurd Pistor
Dieser Einsteigerkurs soll nur ein paar Grundlagen von NewBasic aufzeigen und verdeutlichen, wie das Programm zu handhaben ist. Ich selbst bin kein professioneller Programmierer und kann daher nur mein bescheidenes Wissen wiedergeben. Vielleicht weckt dieser Beitrag bei manchem das noch schlummernde Programmierertalent.

NewBasic ist eine Programmieroberfläche für NewDeal Office bzw. Breadbox Ensemble. Mit NewBasic lassen sich einfache Applikationen für NewDeal bzw. Breadbox Ensemble relativ schnell gestalten, indem die verschiedenen Bauteile (Components) einfach durch Anklicken in das Programm eingefügt werden. Fügt man dann noch ein paar Zeilen Programmcode hinzu, ist die erste Anwendung schon fertig.

Wird NewBasic gestartet, sind zunächst drei Fenster auf dem Bildschirm. Ich will jetzt nicht alle Menüs und Funktionen beschreiben, erstens, weil es sonst zu trocken und langweilig wird, und zweitens, weil ich selbst nicht alles weiß.

Oben der Hauptteil des Programmes mit der Titelleiste NewBASIC Builder, mit dem wir unser Werk nicht nur speichern und für die Nachwelt erhalten können, sondern er ermöglicht auch einen Probelauf und es lassen sich ausführbare Programme für NewDeal erstellen.

 
Links haben wir die Toolbox. Alle in der Toolbox enthaltenen Bauteile (Componenten) können einfach in das Programm eingefügt werden. Dazu wird das entsprechende Teil, zum Beispiel button, angeklickt und dann einmal in die Oberfläche des künftigen Programmes geklickt. Rechts befindet sich schon die erste Oberfläche eines künftigen Programmes mit der Titelleiste NewBASIC. Die Bauteile, die NewBasic verwendet, werden Componenten (Components) genannt, auch diese erste Oberfläche ist bereits eine Componente (form1).

 
Damit es nicht langweilig wird, steigen wir gleich in die Programmierung ein und basteln unser erstes Programm.

Dazu werden drei Componenten benötigt, eine form, ein label und zwei buttons. Die form1 haben wir bereits nach dem Start von NewBASIC. Nun klicken wir in der Toolbox einmal auf label und dann irgendwo in die form1, die NewBASIC als Titelleiste hat. Dann in der Toolbox einmal auf botton klicken und irgendwo in die form1. Dieser Schritt wird nochmals wiederholt, so dass wir ein label und zwei buttons in unserer form1 haben. Das Programm müßte jetzt der rechten Abbildung entsprechen.
Nun wird es Zeit unser kleines Werk zu speichern, dazu gehen wir im NewBASIC-Hauptfenster im Menü auf File - Save As.... Der Dateinamen muß dem alten DOS-Format 8.3 entsprechen, wobei die Endung immer BAS sein muß. Wir geben als Dateinamen hier KURS_01.BAS ein.

 


Bild 1
In unserem Progrämmchen haben wir nun vier Componenten, deren Eigenschaften (Properties) wir jetzt der Reihe nach verändern wollen. Zunächst nehmen wir unseren Programmhauptteil, die form1 vor. Dazu klicken wir auf eine freie Stelle der Form, so dass die geamte form1 mit einem roten Rahmen umgeben ist.

Im Menü des NewBASIC-Hauptfensters gehen wir dann auf Window - Component Properties.... Ein neues Fenster mit der Titelleiste Component Properties, was etwa soviel bedeutet wie "Eigenschaften der Bauteile", öffnet sich. In der ersten Zeile müßte nun stehen: Properties for: form1 (form). Das bedeutet, dass wir nun die Eigenschaften der form1 ändern können.
Die nächste Zeile enthält die drei Buttons Genaral (allgemeine Einstellungen/Eigenschaften), Children (Einstellungen für die automatische Aufteilung) und Specific (spezielle Einstellungen/Eigenschaften). Diese Fenster können je nach Art der ausgewählen Componente unterschiedliche Inhalte haben.

Als nächstes kommen die Kontrollkästchen Visible, Enable und Read Only.

Visible bedeutet, dass die Componente, also hier unsere form1, sichtbar ist. Wenn wir dieses Kontrollkästchen deaktivieren und auf den Button Apply (Einstellungen übernehmen) klicken, verschwindet unsere form1. Da wir unser Programm aber sehen wollen, aktivieren wir wieder das Kontrollkästchen und klicken erneut auf Apply.

Mit dem Kontrollkästchen Enable kann eine Componente aktiviert bzw. deaktiviert werden. Zum Testen der Wirkungsweise deaktivieren wir das Kontrollkästchen und klicken auf Apply. Nun wird alles in der form1 in einem blassen Grau dargestellt und nichts läßt sich mehr anklicken. Auch dieses Kontrollkästchen wieder aktivieren und erneut mit Apply die Einstellungen übernehmen.

Das Kontrollkästchen Read Only ist hier inaktiv, diese Einstellung ist zum Beispiel bei der Componente Text wichtig, hier kann eingestellt werden, ob die Textbox editierbar sein soll oder nicht.
 


Bild 2
In das Feld Name kann ein Name eingegeben werden, der auch später im Programmcode verwendet wird. Ich habe es immer bei dem vorgegebenen Namen form1 belassen, da dieser schon sehr aussagekräftig ist.

Was das Feld Proto zu bedeuten hat, habe ich bisher noch nicht heraus gefunden, auch hier habe ich den vorgegebenen Eintrag form1 gelassen.

Das Feld Caption Text enthält den Namen, der in der Titelleiste angezeigt wird. Hier können wir nun das vorgegebene NewBASIC entfernen und Kurs Teil 1 eintragen. Die Einstellungen mit Apply übernehmen. In der Titelleiste unseres Programmes müßte nun der eingegebene Name angezeigt werden.

Die beiden Pulldown-Menüs Width und Height legen die Breite und Höhe, also die Größe unseres Programmfensters form1 in Pixel fest.
Die Pulldows haben jeweils vier Menüeinträge:

  • As specified - Die Componente (hier form1) wird so groß dargestellt, wie es in den Einstellungen Width und Height zwei Zeilen darunter festgelegt wird.
  • As small as possible - Die Componente wird so klein wie möglich dargestellt.
  • As big as possible - Die Componente wird so groß wie möglich dargestellt.
  • As needed - Die Componente wird so groß wie im Moment nötig dargestellt.
Bei diesen Einstellungen sollte man immer berücksichtigen, das andere User andere Auflösungen und andere Einstellungen z.B. für die Schriftgröße verwenden können und dann die Darstellung leihenhaft aussehen kann. Wird z.B. die Breite (Width eines Buttons auf eine bestimmte Größe festgelegt, dann kann eine größere Systemschrift dazu führen, dass der Button-Text nicht mehr auf den Button paßt. Die bessere Lösung wäre hier, die Einstellung für die Breite des Buttons auf As needed oder As small as possible einzustellen.

Bild 3
Für unsere form1 wählen wir als Breite (Width) und Höhe (Height) jeweils As small as possible. Nun sind die beiden Einstellboxen Width und Height zwei Zeilen darunter inaktiv. Unser Progrämmchen müßte nun Aussehen, wie in Bild 4 dargestellt.

Die beiden Nummernboxen Left und Top legen die Position unser Programmfensters beim Programmstart fest. In unserem Beispiel (Bild 3) erscheint das Programmfenster 150 Pixel vom linken Bildschirmrand (Left) und 100 Pixel vom oberen Bildschirmrand (Top) entfernt.
 


Bild 4
Nachdem wir nun alle General (Allgemeine) Einstellungen für unsere form1 gemacht haben, wechseln wir in die Einstellungen Children.
Erstes Kontrollkästchen ist Auto Layout. Solange dieses Kontrollkästchen noch nicht aktiviert ist, sind die anderen Einstellmöglichkeiten in diesem Fenster inaktiv. Das bedeutet für unsere form1, dass ich die bisher eingefügten Komponenten (label1, button1 und button2) noch innerhalb der form1 frei verschieben und positionieren kann. Diese Art der Programmgestaltung hat den Vorteil dass man das Layout jederzeit durch Verschieben der einzelnen Componenten verändern kann. Man braucht sich also vorher nicht großartig Gedanken über das spätere Aussehen zu machen. Der Nachteil liegt aber darin, dass, wie schon oben im Kursivtext beschrieben, bei einer anderen Auflösung bzw. größeren Systemschrift nicht mehr alles so dargestellt wird, wie es sein sollte und das sieht dann sehr unprofessionell aus.
Da unser Progrämmchen nicht so leihenhaft aussehen soll, aktivieren wir das Kontrollkästchen Auto Layout. Im Pulldown-Menü Layout haben wir nun die Möglichkeit, unsere bereits eingefügten Componenten Vertical oder Horizontal zu positionieren. Um die Wirkunsweise zu betrachten, wählen wir Horizontal und übernehmen die Einstellung mit Apply. Nun sind alle Componenten nebeneinander angeordnet. Hier wollen wir jedoch die Verticale Ausrichtung beibehalten und wählen wieder Vertical im Pulldown-Menü und übernehmen die Einstellung mit Apply.

Das Pulldown-Menü Align Horizontal ist für die horizontale (waagerechten) Ausrichtung der Componenten zuständig, hier gibt es vier Möglichkeiten der Einstellung:

  • Center - die Componenten werden in der form1 zentriert
  • Left - die Componenten werden linksbündig ausgerichtet
  • Right - die Componenten werden rechtsbündig ausgerichtet
  • Full - die Componenten werden über die ganze Breite der form1 verteilt (Ähnlich wie wenn man in einer Textverarbeitung einen Absatz im Block formartiert)
Das Pulldown-Menü Align Vertical ist für die verticale (senkrechte) Ausrichtung der Componenten zuständig. Hier gibt es ebenfalls vier Einstellmöglichkeiten:
  • Center - die Componenten werden in der form1 zentriert
  • Top - die Componenten werden nach oben ausgerichtet
  • Bottom - Die Componenten werden nach unten ausgerichtet
  • Full - Die Componenten werden über die gesamte Höhe der form1 gleichmäßig verteilt.
Die Nummernbox Tile Spacing legt den Abstand der Componenten untereinander in Pixel fest.
Die Nummernbox Horiz. Insert legt den Abstand der Componenten vom linken und rechten Rand der form1 fest.
Die Nummernbox Vertical Insert legt den Abstand der Componenten vom oberen und unteren Rand der form1 fest.

Für unser Progrämmchen nehmen wir die Einstellungen wie in Abbildung 5 dargestellt vor und übernehmen diese mit Apply. Am Aussehen unserer Oberfläche hat sich noch nichts verändert, sie sollte immer noch wie in Bild 4 dargestellt werden.


Bild 5
Nun müssen noch die Einstellungen für die einzelnen Componenten vorgenommen werden. Als erstes wollen wir die Componente label1 verändern. Dazu klicken wir einmal auf label1 in unserer form1, so dass dieses rot umrandet ist (Bild 6). Im Fenster Component Properties müßte jetzt in der ersten Zeile Properties for: label1 (label) stehen.

Bild 6
 
Nun nehmen wir die Eintellungen vor, wie in Bild 7 dargestellt. Die Vorgabe label1 im Feld Caption Text löschen wir heraus und schreiben Es wurde noch kein Button gedrückt in das Feld. Wenn das Ganze mit Apply bestätigt wurde, müßte das Progrämmchen nun so aussehen:

Auf die gleiche Weise wie label1 ändern wir nun die Einstellungen für button1 und button2. Bei button1 geben wir den Caption Text Knopf 1 und bei button2 den Caption Text Knopf 2 ein. Hat alles geklappt, dann ist das Layout für unser erstes Progrämmchen komplett, und es müßte dann so aussehen:

Tip: Man sollte sich angewöhnen, möglichst häufig abzuspeichern, da NewBASIC ab und zu mal abstürzt oder hängen bleibt
 


Bild 7

Mit einem Klick auf Run im Hauptfenster NewBASIC Builder können wir nun einen Probelauf unseres Programmes starten. Man kann nun zwar die beiden Buttons Knopf 1 und Knopf 2 anklicken, aber passieren tut da noch nichts. Um das zu ändern unterbrechen wir den Probelauf mit einem Klick auf Stop.
 
Im Hauptfenster des NewBASIC Builders wählen wir im Menü Window - Editor aus. Es öffnet sich ein neues Fenster, in dem der Programmcode eingegeben werden kann.

Der obere Teil des Editor-Fensters (Bild 8) ist in drei Spalten aufgeteilt. In der linken Spalte (Components:) finden wir all unsere Componenten wieder, die wir in unser Programm eingefügt haben. Die mittlere Spalte (Events:) zeigt die Ereignisse an, die mit den einzelnen Componenten verbunden sein können. Klicken wir z.B. in der linken Spalte button1 an, erscheint in der mittleren Spalte pressed. Die rechte Spalte (Routines:) zeigt die verfügbaren Routinen an, dazu später mehr.

Im unteren Teil des Editor-Fenster befindet sich der eigentliche Editor mit dem der Programmcode eingegeben werden kann. Das heißt, soll etwas passieren, wenn die Buttons angeklickt werden, dann muß hier angegeben werden, was passieren soll. Und das wollen wir jetzt tun.

Wir vergesissern uns, dass in der linken Spalte die Componente button1 und in der mittleren Spalte das Event pressed markiert ist. Im Editierfenster sind nun schon zwei Zeilen vorgegeben, die lassen wir so, wie sie sind. Unseren Programmcode müssen wir zwischen diese beiden Zeilen eingeben.
 


Bild 8
Wenn der Knopf 1 angeklickt wird, soll der Text von label1 nicht mehr Es wurde noch kein Button gedrückt lauten, sondern Knopf 1 wurde gedrückt. Um dies zu erreichen geben wir zwischen die beiden vorgegebenen Zeilen folgendes ein:
label1.caption = "Knopf 1 wurde gedrückt"
Das gleiche machen wir mit button2. Wir markieren also in der Spalte Components button2 und in der mittleren Spalte pressed. Dort geben wir zwischen die beiden vorgegebenen Zeilen
label1.caption = "Knopf 2 wurde gedrückt"
ein.

Erläuterung dieser Zeile Programmcode:
label1 bezeichnet die Componente label1
caption gibt an, dass die Einstellung/Eigenschaft Caption Text von label1 geändert werden soll. Ursprünglich haben wir diese Eigenschaft in den Component Properties bei Caption Text für label1 festgelegt.
"Knopf 2 ..." ist der neue Text für label1. Dieser Text muß in Anführungszeichen stehen.

Wenn wir nun einen Blick in die rechte Spalte Routines werfen, stellen wir fest, dass hier zwei neue Routinen dazugekommen sind: button1_pressed und button2_pressed. Wenn jetzt weitere Zeilen Programmcode z.B. bei Knopf 2 eingefügt werden sollen, muß nur noch in der Spalte Routines die Routine button2_pressed markiert werden.

Nun speichern wir unser Werk mit File - Safe ab und machen mit Run einen Probelauf. Hat alles geklappt, dann müßte beim Anklicken von Knopf 1 der Text des label1 jetzt Knopf 1 wurde gedrückt lauten (bild 10). Oder wenn Knopf 2 angeklickt wurde, Knopf 2 wurde gedrückt.


Bild 9


Bild 10

Natürlich können noch beliebig viele Sachen angegeben werden, die beim Anklicken der Knöpfe ausgeführt werden. Einige Beispiele werde ich hier noch kurz erläutern.
In der Routine button1_pressed tragen wir noch folgende Zeilen ein:
button1.enabled = 0
button2.visible = 1
form1.caption = "NewBASIC ist super"
button2.caption = "klick mich"
In der Routine button2_pressed tragen wir noch folgende Zeilen ein:
button2.visible = 0
button1.enabled = 1
form1.caption = "Geos for ever"
button1.caption = "jetzt mich"
Erläuterungen:
button1.enabled = 0 der button1 wird inaktiv. Festgelegt haben wir in den Component Properties enabled, also aktiv.
button2.visible = 1 der button2 wird sichtbar gemacht. Dies ist zwar im Moment schon der Fall, aber beim Hin- und Herklicken wird er auch mal unsichtbar, so dass er beim Anklicken von button1 auf jeden Fall wieder sichtbar wird.
form1.caption = "NewBASIC ist super" Ändert den Caption Text für die form1, der in den Component Properties am Anfang auf Kurs Teil 1 gesetzt wurde, in den Text zwischen den Anführungszeichen.
button2.caption = "klick mich" Ändert den Caption Text für den button2, der in den Component Properties am Anfang auf Knopf 2 gesetzt wurde in den Text zwischen den Anführungszeichen klick mich.

Wenn nun alles richtig eingegeben wurde müßte unser Programm wie folgt funktionieren:
Start des Programmes:

Beim ersten Anklicken des Buttons Knopf 1:

Beim Anklicken des Buttons Knopf 2:


Bild 11


Bild 12

Wenn nun alles prima funktioniert kommt noch das Finale, die Kompilierung zu einem echten NewBASIC-Programm. Dazu im im Menü des Hauptfenster NewBASIC Builder File - Build for NewDeal anklicken. Es wird im gleichen Verzeichnis, in dem die KURS_01.BAS abgespeichert wurde, eine Datei mit dem Namen KURS_01.BC angelegt. Diese Datei ist dann das fertige NewBASIC Programm.

So, das war es erstmal mit dem ersten Teil meines NewBASIC - Einsteigerkurses. Ich hoffe, meine Anleitungen haben ein bischen zum besseren Verständnis beigetragen. Wie immer, wird diese Serie von mir fortgesetzt, wenn genügend Interesse dafür besteht. Und, damit ich auch weiß, ob Interesse besteht, habe ich mir noch eine kleine Aufgabe ausgedacht: Schickt mir Euer fertiges, unkompiliertes Programm, also die *.BAS - Datei per eMail an  SigurdPistor@web.de
Und, damit man auch sieht, ob der Kurs verständlich war, fügt Ihr noch einen dritten Button mit der Aufschrift Restore in das Programm ein, bei dessem Anklicken das ursprüngliche Fenster wieder hergestellt wird, so wie es beim Start des Programmes ist.
Dann bleibt mir vorläufig nur noch viel Spaß mit NewBASIC zu wünschen.

Seitenanfang