home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL2.DMS / in.adf / New_Open_Screen.dok < prev    next >
Encoding:
Text File  |  1994-07-25  |  8.9 KB  |  255 lines

  1. *********************************************************************
  2.  
  3.                Beschreibung der UNIT "New_Open_Screen"
  4.  
  5. *********************************************************************
  6.  
  7. Mit  Erscheinen  von  OS2.0  wurde  das Öffnen von Screens und Windows
  8. stark  erweitert. Leider bietet Kick-Pascal jedoch nur die kompatieble
  9. OS1.3-Fassung.
  10.  
  11. Um  jedoch  auf einfachste Weise die neuen Freatures nutzen zu können,
  12. habe  ich  die  Unit  "New_Open_Screen" geschrieben. Die neuen Befehle
  13. darin   zum  Öffnen  und  Schließen  von  Bildschirmen  bzw.  Fenstern
  14. entsprechen  in  ihrem  Ausbau  größtenteils den KP-Originalen, bieten
  15. aber durch zum Teil eigene TagItems eine bessere Flexibilität. Für
  16. jeden Bereich (Screens, Windows) gibt es 2 Befehle - einen zum Öffnen
  17. und einen zum Schließen, richtig!
  18.  
  19.  
  20. Die Befehle für Bildschirme (Screens):
  21.  
  22.  
  23. New_Open_ScreenA
  24.  
  25. Syntax:
  26.  
  27. p_Screen := New_Open_Screen(LeftEdge, TopEdge,
  28.                             Width, Height,
  29.                             Depth,
  30.                             BlockPen, DetailPen,
  31.                             Mode,
  32.                             Titel,
  33.                             TagListe)
  34.                             
  35. Parameter:
  36.  
  37.  LeftEdge     bestimmt die linke Ecke des Bildschirm, sollte meist
  38.               null sein
  39.  TopEdge      bestimmt entsprechend die obere Ecke des Schirms, sollte
  40.               auch meist null sein
  41.  Width        Bildschirmbreite, (-1) öffnet einen Bildschirm mit der
  42.               Breite, wie sie in den System-Preferences für
  43.               OSCAN_TEXT eingestellt ist
  44.  Height       Bildschirmhöhe, für (-1) gilt das selbe wie bei der
  45.               Bildschirmbreite für die -höhe
  46.  Depth        Bildschirmtiefe, wobei sich die Farbzahl aus einer
  47.               Potenz dieser Zahl zum Basis 2 ergibt (2^Depth)
  48.  BlockPen     Hintergrund-Farbe des Bildschirmtitels (unter OS2.0 =1)
  49.  DetailPen    Vordergrund-Farbe (Text) des Titels (unter OS2.0 =0)
  50.  Mode         Bildschirmmodus (z.B. HIRES_KEY, LORES_KEY, SUPER_KEY)
  51.  Titel        eine Zeichenkette für den Bildschirmtitel (Str)
  52.  TagListe     ein Zeiger auf eine TagItem-Liste mit OpenScreen-Tags
  53.               (SA_) oder New_Open_Screen-Tags (NS_)
  54.               
  55. Ergebnis:
  56.  
  57.  Ein Zeiger auf einen Screen-Struktur, NIL bei einem Fehler
  58.  
  59.  
  60. New_Close_Screen
  61.  
  62. Syntax:
  63.  
  64. New_Close_Screen (p_Screen)
  65.  
  66. Parameter:
  67.  
  68.  p_Screen     Zeiger auf die Screen-Struktur des zu schließenden
  69.               Screens
  70.  
  71. Ergebnis:
  72.  
  73.  keine!
  74.  
  75.  
  76. New_Close_ScreenA
  77.  
  78. Syntax:
  79.  
  80. Boolean := New_Close_ScreenA (p_Screen)
  81.  
  82. Parameter:
  83.  
  84.  p_Screen     Zeiger auf die Screen-Struktur des zu schließenden
  85.               Screens
  86.  
  87. Ergebnis:
  88.  
  89.  TRUE, falls Screen wirklich geschlossen, sonst FALSE
  90.  
  91.  
  92. Mit    New_Open_ScreenA()    geöffnete   Screens   MÜSSEN   auch   mit
  93. New_Close_Screen()   bzw.   New_Close_ScreenA()   geschlossen  werden!
  94. Andersherum   sollte   man   keine  sonstwie  geöffneten  Screens  mit
  95. New_Close_Screen() bzw. New_Close_ScreenA() schließen!
  96.  
  97. Mit   New_Open_ScreenA()   geöffnete  Screens  werden,  falls  sie  am
  98. Programmende  noch geöffnet sind, geschlossen. New_Close_ScreenA() ist
  99. vor  allem  für  PublicScreens  interessant,  da  hier Besucherfenster
  100. (VisitorWindows)  ein  Schließen des Bildschirms verhindern können und
  101. so,  ohne dies zu beachten, der Screen bis zum nächsten Reset geöffnet
  102. bleibt.
  103.  
  104. Hier  noch  die  oben genannten New_Open_Screen-Tags. Diese sind KEINE
  105. System-Tags sondern gehören ausschließlich zu dieser Unit!
  106.  
  107. NS_FontName     Zeiger auf den Namen eines Fonts, der als Screen-Font
  108.                 benutzt werden soll (Default: topaz)
  109. NS_FontHeight   hier steht entsprechend die Höhe des Fonts
  110.                 (Default: 8)
  111. NS_blockPen     wie der BlockPen-Parameter im Befehl selbst, jedoch
  112.                 wird dieser ersetzt, falls das TagItem angegeben ist
  113. NS_detailPen    vgl. NS_blockPen
  114. NS_textPen      setzt den TEXTPEN der DrawInfo-Struktur des Screens
  115. NS_shinePen     SHINEPEN, vgl. NS_textPen (Default: 2)
  116. NS_shadowPen    SHADOWPEN, vgl. NS_textPen (Default: 1)
  117. NS_fillPen      FILLPEN, vgl. NS_textPen (Default: 3)
  118. NS_filltextPen  FILLTEXTPEN, vgl. NS_textPen (Default: 1)
  119. NS_backgroundPen     BACKGROUNDPEN, vgl. NS_textPen (Default: 0)
  120. NS_highlighttextPen  HIGHLIGHTTEXTEPEN, vgl. NS_textPen (Default: 2)
  121. NS_BarDetailPen      BARDETAILPEN, vgl. NS_textPen (erst ab OS3.0
  122.                      vom System unterstützt) (Default: 1)
  123. NS_BarBlockPen       BARBLOCKPEN, vgl. NS_textPen (erst ab OS3.0
  124.                      vom System unterstützt) (Default: 2)
  125. NS_BarTrimPen        BARTRIMPEN, vgl. NS_textPen (erst ab OS3.0
  126.                      vom System unterstützt) (Default: 1)
  127. NS_PenArray     Zeiger auf ein PenArray für die DrawInfo-Struktur
  128. NS_FontXDPI     X-DPI des Screenfonts (Default: 1)
  129. NS_FontDPIX     wie NS_FontXDPI
  130. NS_FontYDPI     Y-DPI des Screenfonts (Default: 1)
  131. NS_FontDPIY     wie NS_FontYDPI
  132. NS_Center       Bool-Flag, wenn TRUE wird ein Bildschirm zentriert,
  133.                 d.h. ist er kleiner als in OSCAN_TEXT erscheint er in
  134.                 der Mitte des Bildschirms und nicht in der linken
  135.                 Ecke, jedoch kommt es bei übergroßen Bildschirmen
  136.                 ebenfalls zu einer dann unschönen Zentrierung
  137.                 (Default: false)
  138.  
  139.  
  140. Als OVERSCAN-Modus wird OSCAN_TEXT vorgegeben (wie bei der Workbench),
  141. jedoch  kann  der  Wert durch das TagItem SA_Overscan geändert werden.
  142. Ebenfalls  ist  AutoScroll  aktiv  und durch SA_AutoScroll deaktiviert
  143. werden.
  144.  
  145.  
  146.  
  147. Die Befehle für Fenster (Windows):
  148.  
  149.  
  150. Open_WindowA
  151.  
  152. Syntax:
  153.  
  154. p_Window := Open_WindowA(LeftEdge, TopEdge,
  155.                          Width, Height,
  156.                          IDCMPs,
  157.                          Flags,
  158.                          Titel,
  159.                          Screen,
  160.                          TagListe)
  161.                             
  162. Parameter:
  163.  
  164.  LeftEdge     bestimmt die linke Ecke des Fensters, wird (-1)
  165.               angegeben, wird das Fenster zentriert geöffnet
  166.  TopEdge      bestimmt entsprechend die obere Ecke des Fensters, wird
  167.               (-1) angegeben, wird das Fenster Höhen-zentriert
  168.               geöffnet, bei (-2) wird es knapp unter der
  169.               Bildschirm-Titelleiste geöffnet
  170.  Width        Fensterbreite, (-1) öffnet eine Fenster in der gesamten
  171.               Bildschirmbreite
  172.  Height       Fensterhöhe, für (-1) gilt das selbe wie bei der
  173.               Fensterbreite für die -höhe
  174.  IDCMPs       die IDCMP-Flags des Fensters
  175.  Flags        die Window-Flags des Fensters
  176.  Titel        eine Zeichenkette für den Fenstertitel (Str) oder NIL
  177.  Screen       Zeiger auf den Screen, auf dem das Fenster erscheinen
  178.               soll
  179.  TagListe     ein Zeiger auf eine TagItem-Liste mit OpenWindow-Tags
  180.               (WA_) für weitere Angaben (z.B. Min- und
  181.               MaxWidth/Height)
  182.               
  183. Ergebnis:
  184.  
  185.  Ein Zeiger auf einen Window-Struktur, NIL bei einem Fehler
  186.  
  187. Hinweis:
  188.  
  189.  Gegenüber dem KP-Befehl Open_Window() wurden die Parameter BlockPen
  190.  und DetailPen weggelassen, da sie unter OS2.0 nicht mehr nötig sind.
  191.  
  192.  Die Angaben für Fensterbreite und -höhe beziehen sich auf die inneren
  193.  Breiten bzw. Höhen (= WA_InnerWidth, WA_InnerHeight)!!
  194.  Sind jedoch die Gesamtbreite/-höhe gewünscht, muß diese über eine
  195.  extra TagListe mit WA_Width und WA_Height gestimmt werden.
  196.  
  197.  
  198. Close_WindowA
  199.  
  200. Syntax:
  201.  
  202. Close_WindowA (p_Window)
  203.  
  204. Parameter:
  205.  
  206.  p_Window     Zeiger auf das zu schließende Fenster
  207.  
  208. Hinweis:
  209.  
  210.  Um Konflikte mit dem KP-Befehl Close_Window() zu umgehen wurde an
  211.  diesen Befehl ein A (Close_WindowA()) angehängt.
  212.  
  213.  
  214. Mit  Open_WindowA()  geöffnete Windows MÜSSEN auch mit Close_WindowA()
  215. geschlossen  werden!  Andersherum sollte man keine sonstwie geöffneten
  216. Windows mit Close_WindowA() schließen!
  217.  
  218. Mit Open_WindowA() geöffnete Windows werden, falls sie am Programmende
  219. noch geöffnet sind, geschlossen.
  220.  
  221.  
  222. WICHTIG!
  223.  
  224. Keiner  der  Befehle  überprüft,  ob  auch  wirklich  mindestens OS2.0
  225. vorhanden  ist!  Dies  muß der Programmierer selbst übernehmen. Da die
  226. Unit  allerdings  die "utility.library" V37 anfordert, muß er dies VOR
  227. einfügen  der Unit im Programm tun. Deshalb ist es auch nicht möglich,
  228. Programme,  die  auch  unter  OS1.3  laufen  sollen MIT dieser Unit zu
  229. schreiben (man kann eben nicht alles haben ;-).
  230.  
  231.  
  232. Copyright und anderes
  233.  
  234.               Der Source-Code dieser Unit unterliegt dem
  235.          Copyright (c) der J.Schmitz [SOFT] (Jürgen Schmitz).
  236.  
  237. Die  (vor)compilierte  Fassung  darf jedoch frei weitergegeben werden,
  238. sofern damit kein wirtschaftlicher Gewinn gemacht wird.
  239.  
  240. Programme,   die   diese  Unit  benutzen,  dürfen  frei  kopiert  oder
  241. kommerziell  verkauft werden. Kommerzielle Programme (dazu gehört auch
  242. Shareware, Giftware u.a.) müssen jedoch in der Beschreibung ODER einem
  243. Info-Fenster im Programm den Hinweis
  244.  
  245. "Teile des Programms mit freundlicher Genemigung der J.Schmitz [SOFT]"
  246.  
  247. (oder eine entsprechend anderssprachige Fassung, z.B. Englisch) haben.
  248. Freie  Programm  (PD,  etc.)  dürfen diesen Hinweis auch haben, müssen
  249. jedoch nicht. Für Schäden wird keinerlei Haftung übernommen.
  250.  
  251. Also dann, viel Spaß beim Programmieren!
  252.  
  253.  
  254. JS/02
  255.