4.2 PrimaryObjekte der Klasse Primary sind die "Hauptfenster" des Programms. Primaries haben links oben ein System-Menü, rechts oben die Schalter für "Minimieren" und "Maximieren" sowie bei Bedarf einen "Hilfe" Schalter (Fragezeichen). Im Allgemeinen hat jedes BASIC Programm genau ein Primary-Objekt.
Focus und TargetDas Primary-Objekt ist ein Knoten in der Focus- und Target-Hierarchie. Es ist möglich zu überwachen, ob ein Primary-Objekt den Focus oder das Target hat, indem man einen Focus- bzw. Target-Handler schreibt. Die notwendigen Details zur Arbeit mit Focus und Target finden Sie im Kapitel 12 (Focus und Target) des Handbuchs "Spezielle Themen". Das Arbeiten mit Focus und Target ist etwas für erfahrene Programmierer und nur in wenigen Fällen notwendig. Eine Ausnahme bildet die Implementation von speziellen Menüs wie dem "Bearbeiten" Menü. Diesem Thema ist deswegen ein eigenes Kapitel ("Spezielle Themen", Kapitel 13) gewidmet. Abstammung:
Spezielle Instance-Variablen:
Spezielle Action-Handler: keine BreakButtonOftmals, besonders während der Fehlersuche, ist es erwünscht, einen laufenden Action-Handler abbrechen zu können, ohne gleich GEOS abzuwürgen. Das kann z.B. bei einer versehentlichen Endlosschleife der Fall sein, das Programm "hängt". Diese BREAK (Unterbrechung) genannte Funktion ist typisch für BASIC-Programme, bei "richtigen" GEOS-Programmen aber nicht vorhanden. Das BreakButton-Statement fügt einen Break-Schalter zum Dateimenü des Primaries hinzu und aktiviert gleichzeitig die Tastenkombination Strg-B zum Auslösen eines BREAK. Syntax UI-Code: BreakButton = TRUE FileMenuChildrenJedes Primary hat automatisch ein Datei-Menü. Dort ist per Default nur der "Beenden" Button enthalten. Häufig möchte man dort aber weitere Einträge vorsehen, z.B. zur Arbeit mit Dateien oder den Copyright-Dialog ("Über ... "). Das FileMenuChildren-Statement fügt die angegeben Objekte als Children in das Dateimenü ein. Syntax UI-Code: FileMenuChildren = <ObjektListe> Beispiel:
| |||||||||||||||||||||||||||
Primary MainPrimary Children = ... FileMenuChildren = AboutBox, SaveFileButton, LoadFileButton END OBJECT | |||||||||||||||||||||||||||
Die Anzahl der Objekte in einer einzigen FileMenuChildren-Liste ist auf 25 begrenzt. Wenn Sie mehr Children spezifizieren wollen können Sie, wie bei der Children-Anweisung, siehe Kapitel 2.1.2, mehrere FileMenuChildren-Anweisungen für ein Objekt verwenden.
Caption2$Die Instancevariable Caption2$ ergänzt die Titelzeile des Primaryobjekts um einen weiteren Text. Üblicher Weise wird Caption2$ verwendet um den Namen des aktuellen Dokuments in der Titelzeile des Programms anzuzeigen. Caption2$ kann nicht im UI-Code verwendet werden. Syntax Lesen: <stringVar> = <obj>.Caption2$ Schreiben: <obj>.Caption2$ = "text" Anpassen des Primary-ObjektsDas Primary-Objekt stammt von der GenericClass ab und erbt deswegen alle Fähigkeiten und Eigenschaften dieser Klasse. Das trifft insbesondere für die Geometrie-Fähigkeiten zu, wie z.B. orientChildrenVon besonderer Bedeutung für Primaries sind die Windows-Hints wie z.B. SizeWindowAsDesiredVon der Klasse Display erbt das Primary die folgenden Instancevariablen. Eine ausführliche Beschreibung finden Sie im Kapitel 4.18.2 bei der Beschreibung der Display Klasse. Die Instancevariablen userDismissable, OnClose sowie die Methode Close werden nicht vererbt, das Primary Objekt implementiert hier sein eigenes Handling.
Zusätzlich besitzen Primaries einige eigene Geometriefähigkeiten. PrimaryFullScreenDie Anweisung bewirkt, dass das Primary große Teile des Bildschirms einnimmt, so wie die "großen" Applikationen "GeoWrite" und "GeoDraw". Unten bleibt ein Rand für iconisierte Applikationen. Syntax UI-Code: PrimaryFullScreen Beispiel: | |||||||||||||||||||||||||||
Primary MyPrimary Children = ...... PrimaryFullScreen END Object | |||||||||||||||||||||||||||
NoFileMenuDie Anweisung verhindert, dass das Primary ein Datei-Menü hat. Es ist aber unwirksam, wenn es gleichzeitig mit FileMenuChildren oder BreakButton verwendet wird, da diese ein Dateimenü zwingend erfordern. Syntax UI-Code: NoFileMenu NoExpressMenuDie Anweisung verhindert, dass sich das Express-Menü in der Titelzeile des Primaries ansiedelt. Syntax UI-Code: NoExpressMenu Beispiel: | |||||||||||||||||||||||||||
Primary Primary2 Children = ...... NoExpressMenu NoFileMenu END Object | |||||||||||||||||||||||||||
PrimaryNoHelpButtonSyntax UI-Code: PrimaryNoHelpButton Wenn Ihr Programm eine Hilfedatei hat, ist es sinnvoll dem Primary den HelpContext "TOC" (Table Of Contents = Inhaltsverzeichnis) zu geben, damit das Hilfesystem das Inhaltsverzeichnis findet. | |||||||||||||||||||||||||||
Primary MyPrimary Children = ...... helpContext$ ="TOC" END Object | |||||||||||||||||||||||||||
|
Diese Anweisung erzeugt jedoch gleichzeitig den Hilfebutton in der Titelzeile des Primaryobjekts (i.a ein blaues Fragezeichen). Wenn dies im Ausnahmefall stört können Sie es mit dem Hint PrimaryNoHelpButton unterdrücken.
Beachten Sie, dass der Name der Hilfedatei (Eintrag helpFile$) immer im Applicationobjekt erfolgen sollte, damit der vom Hilfesystem im Hilfefenster bereitgestellte Button "Inhalt" funktioniert. | |||||||||||||||||||||||||||
Primary MyPrimary Children = ...... helpContext$ ="TOC" PrimaryNoHelpButton END Object | |||||||||||||||||||||||||||
Besonderheiten des Primary Objekts
^ |