Grundsätzlicher Aufbau eines Snowflake-Dialoges

Beispiel 1

In meinem ersten Beispiel geht es darum, dem Benutzer eine einfache Frage zu stellen. Möchte der Benutzer speichern - ja oder nein?

       1  FUNCTION question%
2
3 Frame "question", "Frage", 190, 110, 480, 210
4 Echo "Möchten Sie die Änderungen speichern?"
5 Button "question", " Ja ", 260, 180
6 Button "question", " Nein ", 340, 180
7
8 DrawCtrls "question"
9 DO
10 ShortKeys = ""
11 GetInp "question"
12
13 SELECT CASE Focus
14 CASE "Ja"
15 'Ja wurde ausgewählt
16 question% = 1
17 EXIT DO
18 CASE "Nein"
19 'Nein wurde ausgewählt
20 question% = 2
21 EXIT DO
22 CASE "esc"
23 'Abbrechen des Dialogs
24 question% = 0
25 EXIT DO
26 END SELECT
27 LOOP UNTIL keyb = "esc"
28
29 CloseFrame "question"
30
31 END FUNCTION

Erklärungen zum Code:

Zeilen 3 - 6

Erstellen der Steuerelemente

Zeile 8

Mit DrawCtrls werden die zuvor erstellten Steuerelemente gezeichnet. Erst jetzt werden sie auf dem Bildschirm sichtbar.

Zeilen 9 - 27

Eingabeschleife

Zeile 10

Da keine Kurztasten verwendet werden, wird ShortKeys auf "" gesetzt. Dies darf man nicht vergessen, da sonst die eventuell durch einen vorher gehöffneten Dialog definierte Kurztasten noch gelten.

Zeile 11

GetInp ist die Eingaberoutine schlechthin. GetInp steuert die Maus, und Tastaturbewegungen, zeichnet die Buttons, wenn man draufdrückt etc... Erst, wenn der Benutzer mit der Maus ein Steuerelement angeklickt hat, oder eine spezielle Kurztaste mit der Tastatur gedrückt hat, wird GetInp verlassen, und der Snowflake-Programmierer erhält wieder die Kontrolle über das Programm.

Zeile 13 - 26

Nun kann er den Fokus auswerten. Die Variable Focus enthaltet dazu den Namen, respektive die Bezeichnung des Steuerelementes, welches der Benutzer angewählt hat.

Zeile 29

Mit CloseFrame wird der Dialog geschlossen. Dies ist wichtig, damit die Steuerelemente wieder aus dem Speicher entfernt werden, und der ursprüngliche Bildschirminhalt wiederhergestellt wird.