********************************************************************* Beschreibung der UNIT "New_Open_Screen" ********************************************************************* Mit Erscheinen von OS2.0 wurde das Öffnen von Screens und Windows stark erweitert. Leider bietet Kick-Pascal jedoch nur die kompatieble OS1.3-Fassung. Um jedoch auf einfachste Weise die neuen Freatures nutzen zu können, habe ich die Unit "New_Open_Screen" geschrieben. Die neuen Befehle darin zum Öffnen und Schließen von Bildschirmen bzw. Fenstern entsprechen in ihrem Ausbau größtenteils den KP-Originalen, bieten aber durch zum Teil eigene TagItems eine bessere Flexibilität. Für jeden Bereich (Screens, Windows) gibt es 2 Befehle - einen zum Öffnen und einen zum Schließen, richtig! Die Befehle für Bildschirme (Screens): New_Open_ScreenA Syntax: p_Screen := New_Open_Screen(LeftEdge, TopEdge, Width, Height, Depth, BlockPen, DetailPen, Mode, Titel, TagListe) Parameter: LeftEdge bestimmt die linke Ecke des Bildschirm, sollte meist null sein TopEdge bestimmt entsprechend die obere Ecke des Schirms, sollte auch meist null sein Width Bildschirmbreite, (-1) öffnet einen Bildschirm mit der Breite, wie sie in den System-Preferences für OSCAN_TEXT eingestellt ist Height Bildschirmhöhe, für (-1) gilt das selbe wie bei der Bildschirmbreite für die -höhe Depth Bildschirmtiefe, wobei sich die Farbzahl aus einer Potenz dieser Zahl zum Basis 2 ergibt (2^Depth) BlockPen Hintergrund-Farbe des Bildschirmtitels (unter OS2.0 =1) DetailPen Vordergrund-Farbe (Text) des Titels (unter OS2.0 =0) Mode Bildschirmmodus (z.B. HIRES_KEY, LORES_KEY, SUPER_KEY) Titel eine Zeichenkette für den Bildschirmtitel (Str) TagListe ein Zeiger auf eine TagItem-Liste mit OpenScreen-Tags (SA_) oder New_Open_Screen-Tags (NS_) Ergebnis: Ein Zeiger auf einen Screen-Struktur, NIL bei einem Fehler New_Close_Screen Syntax: New_Close_Screen (p_Screen) Parameter: p_Screen Zeiger auf die Screen-Struktur des zu schließenden Screens Ergebnis: keine! New_Close_ScreenA Syntax: Boolean := New_Close_ScreenA (p_Screen) Parameter: p_Screen Zeiger auf die Screen-Struktur des zu schließenden Screens Ergebnis: TRUE, falls Screen wirklich geschlossen, sonst FALSE Mit New_Open_ScreenA() geöffnete Screens MÜSSEN auch mit New_Close_Screen() bzw. New_Close_ScreenA() geschlossen werden! Andersherum sollte man keine sonstwie geöffneten Screens mit New_Close_Screen() bzw. New_Close_ScreenA() schließen! Mit New_Open_ScreenA() geöffnete Screens werden, falls sie am Programmende noch geöffnet sind, geschlossen. New_Close_ScreenA() ist vor allem für PublicScreens interessant, da hier Besucherfenster (VisitorWindows) ein Schließen des Bildschirms verhindern können und so, ohne dies zu beachten, der Screen bis zum nächsten Reset geöffnet bleibt. Hier noch die oben genannten New_Open_Screen-Tags. Diese sind KEINE System-Tags sondern gehören ausschließlich zu dieser Unit! NS_FontName Zeiger auf den Namen eines Fonts, der als Screen-Font benutzt werden soll (Default: topaz) NS_FontHeight hier steht entsprechend die Höhe des Fonts (Default: 8) NS_blockPen wie der BlockPen-Parameter im Befehl selbst, jedoch wird dieser ersetzt, falls das TagItem angegeben ist NS_detailPen vgl. NS_blockPen NS_textPen setzt den TEXTPEN der DrawInfo-Struktur des Screens NS_shinePen SHINEPEN, vgl. NS_textPen (Default: 2) NS_shadowPen SHADOWPEN, vgl. NS_textPen (Default: 1) NS_fillPen FILLPEN, vgl. NS_textPen (Default: 3) NS_filltextPen FILLTEXTPEN, vgl. NS_textPen (Default: 1) NS_backgroundPen BACKGROUNDPEN, vgl. NS_textPen (Default: 0) NS_highlighttextPen HIGHLIGHTTEXTEPEN, vgl. NS_textPen (Default: 2) NS_BarDetailPen BARDETAILPEN, vgl. NS_textPen (erst ab OS3.0 vom System unterstützt) (Default: 1) NS_BarBlockPen BARBLOCKPEN, vgl. NS_textPen (erst ab OS3.0 vom System unterstützt) (Default: 2) NS_BarTrimPen BARTRIMPEN, vgl. NS_textPen (erst ab OS3.0 vom System unterstützt) (Default: 1) NS_PenArray Zeiger auf ein PenArray für die DrawInfo-Struktur NS_FontXDPI X-DPI des Screenfonts (Default: 1) NS_FontDPIX wie NS_FontXDPI NS_FontYDPI Y-DPI des Screenfonts (Default: 1) NS_FontDPIY wie NS_FontYDPI NS_Center Bool-Flag, wenn TRUE wird ein Bildschirm zentriert, d.h. ist er kleiner als in OSCAN_TEXT erscheint er in der Mitte des Bildschirms und nicht in der linken Ecke, jedoch kommt es bei übergroßen Bildschirmen ebenfalls zu einer dann unschönen Zentrierung (Default: false) Als OVERSCAN-Modus wird OSCAN_TEXT vorgegeben (wie bei der Workbench), jedoch kann der Wert durch das TagItem SA_Overscan geändert werden. Ebenfalls ist AutoScroll aktiv und durch SA_AutoScroll deaktiviert werden. Die Befehle für Fenster (Windows): Open_WindowA Syntax: p_Window := Open_WindowA(LeftEdge, TopEdge, Width, Height, IDCMPs, Flags, Titel, Screen, TagListe) Parameter: LeftEdge bestimmt die linke Ecke des Fensters, wird (-1) angegeben, wird das Fenster zentriert geöffnet TopEdge bestimmt entsprechend die obere Ecke des Fensters, wird (-1) angegeben, wird das Fenster Höhen-zentriert geöffnet, bei (-2) wird es knapp unter der Bildschirm-Titelleiste geöffnet Width Fensterbreite, (-1) öffnet eine Fenster in der gesamten Bildschirmbreite Height Fensterhöhe, für (-1) gilt das selbe wie bei der Fensterbreite für die -höhe IDCMPs die IDCMP-Flags des Fensters Flags die Window-Flags des Fensters Titel eine Zeichenkette für den Fenstertitel (Str) oder NIL Screen Zeiger auf den Screen, auf dem das Fenster erscheinen soll TagListe ein Zeiger auf eine TagItem-Liste mit OpenWindow-Tags (WA_) für weitere Angaben (z.B. Min- und MaxWidth/Height) Ergebnis: Ein Zeiger auf einen Window-Struktur, NIL bei einem Fehler Hinweis: Gegenüber dem KP-Befehl Open_Window() wurden die Parameter BlockPen und DetailPen weggelassen, da sie unter OS2.0 nicht mehr nötig sind. Die Angaben für Fensterbreite und -höhe beziehen sich auf die inneren Breiten bzw. Höhen (= WA_InnerWidth, WA_InnerHeight)!! Sind jedoch die Gesamtbreite/-höhe gewünscht, muß diese über eine extra TagListe mit WA_Width und WA_Height gestimmt werden. Close_WindowA Syntax: Close_WindowA (p_Window) Parameter: p_Window Zeiger auf das zu schließende Fenster Hinweis: Um Konflikte mit dem KP-Befehl Close_Window() zu umgehen wurde an diesen Befehl ein A (Close_WindowA()) angehängt. Mit Open_WindowA() geöffnete Windows MÜSSEN auch mit Close_WindowA() geschlossen werden! Andersherum sollte man keine sonstwie geöffneten Windows mit Close_WindowA() schließen! Mit Open_WindowA() geöffnete Windows werden, falls sie am Programmende noch geöffnet sind, geschlossen. WICHTIG! Keiner der Befehle überprüft, ob auch wirklich mindestens OS2.0 vorhanden ist! Dies muß der Programmierer selbst übernehmen. Da die Unit allerdings die "utility.library" V37 anfordert, muß er dies VOR einfügen der Unit im Programm tun. Deshalb ist es auch nicht möglich, Programme, die auch unter OS1.3 laufen sollen MIT dieser Unit zu schreiben (man kann eben nicht alles haben ;-). Copyright und anderes Der Source-Code dieser Unit unterliegt dem Copyright (c) der J.Schmitz [SOFT] (Jürgen Schmitz). Die (vor)compilierte Fassung darf jedoch frei weitergegeben werden, sofern damit kein wirtschaftlicher Gewinn gemacht wird. Programme, die diese Unit benutzen, dürfen frei kopiert oder kommerziell verkauft werden. Kommerzielle Programme (dazu gehört auch Shareware, Giftware u.a.) müssen jedoch in der Beschreibung ODER einem Info-Fenster im Programm den Hinweis "Teile des Programms mit freundlicher Genemigung der J.Schmitz [SOFT]" (oder eine entsprechend anderssprachige Fassung, z.B. Englisch) haben. Freie Programm (PD, etc.) dürfen diesen Hinweis auch haben, müssen jedoch nicht. Für Schäden wird keinerlei Haftung übernommen. Also dann, viel Spaß beim Programmieren! JS/02