home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 22 / windows / windows.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-01-04  |  5.8 KB  |  195 lines

  1. (* ----------------------------------------------------- *)
  2. (*                     WINDOWS.PAS                       *)
  3. (*                                                       *)
  4. (* ■ WindowObj: Erweitert "FrameWindow" um die Möglich-  *)
  5. (*   keit, den Hintergrund zu sichern und wiederherzu-   *)
  6. (*   stellen und den Hintergrund beim Öffnen zu löschen. *)
  7. (*                                                       *)
  8. (*           (c) 1991 by R.Reichert & toolbox            *)
  9. (* ----------------------------------------------------- *)
  10. UNIT Windows;
  11.  
  12. INTERFACE
  13.  
  14. USES VSObj, WinVSM, FrameWin;
  15.  
  16. CONST
  17.   On             = TRUE;
  18.   Off            = FALSE;       { ReturnCodes : }
  19.   WinOk          = 0;           { Kein Fehler aufgetreten }
  20.   WinNoMem       = 1;           { Zuwenig Speicher (Open) }
  21.   WinVarErr      = 2;           { Variablen Fehler (Open) }
  22.   WinAlreadyOpen = 3;           { Schon geöffnet (Open)   }
  23.   WinNotOpen     = 4;           { Nicht geöffnet (Close)  }
  24.  
  25. TYPE
  26.   WindowPtr = ^WindowObj;
  27.   WindowObj = OBJECT (FrameWindow)
  28.  
  29.     SaveBack,            { Hintergrund speichern ?      }
  30.     ClearWin,            { H löschen (NACH speichern) ? }
  31.     BackSaved : BOOLEAN; { Hintergrund gespeichert ?    }
  32.     BackColor : BYTE;    { Hintergrundfarbe zum löschen }
  33.     ReturnCode: BYTE;    { FehlerCode                   }
  34.     Background: ScreenMemPtr;  { Zeiger auf Hintergrund }
  35.  
  36.     CONSTRUCTOR Init (NewVSM : WExtVSMPtr);
  37.     CONSTRUCTOR Copy (NewWin : WindowObj);
  38.     PROCEDURE Open;                              VIRTUAL;
  39.     PROCEDURE Close;                             VIRTUAL;
  40.     PROCEDURE Show;                              VIRTUAL;
  41.     PROCEDURE Hide;                              VIRTUAL;
  42.     PROCEDURE SetSaveBack (Save : BOOLEAN);      VIRTUAL;
  43.     PROCEDURE SetClearWin (Clear : BOOLEAN);     VIRTUAL;
  44.     PROCEDURE SetReturnCode (Code : BYTE);       VIRTUAL;
  45.     PROCEDURE SetBackColor (BC : BYTE);          VIRTUAL;
  46.  
  47.     FUNCTION GetBackColor : BYTE;                VIRTUAL;
  48.     FUNCTION GetClearWin : BOOLEAN;              VIRTUAL;
  49.     FUNCTION GetSaveBack : BOOLEAN;              VIRTUAL;
  50.     FUNCTION GetSavedBack: BOOLEAN;              VIRTUAL;
  51.     FUNCTION GetReturnCode : BYTE;               VIRTUAL;
  52.     DESTRUCTOR Done;                             VIRTUAL;
  53.   END;
  54.  
  55. IMPLEMENTATION
  56.  
  57. CONSTRUCTOR WindowObj.Init (NewVSM : WExtVSMPtr);
  58. BEGIN
  59.   IF FrameWindow.Init (NewVSM) THEN BEGIN
  60.     SetSaveBack (On);                 { Standardwerte }
  61.     SetClearWin (Off);
  62.     SetBackColor (7);
  63.     SetReturnCode (WinOk);
  64.     BackSaved := FALSE;
  65.     BackGround := NIL;
  66.   END ELSE
  67.     Fail;
  68. END;
  69.  
  70. CONSTRUCTOR WindowObj.Copy (NewWin : WindowObj);
  71. BEGIN
  72.   IF NewWin.VSM=NIL THEN Fail
  73.                     ELSE Self := NewWin;
  74. END;
  75.  
  76. (* ----------------------------------------------------- *)
  77. (* Öffnet das Fenster mit den akt. Werten der Variablen. *)
  78. (* ----------------------------------------------------- *)
  79. PROCEDURE WindowObj.Open;
  80. BEGIN
  81.   CheckVars;
  82.   IF (VarOk) AND (NOT Opened) THEN BEGIN
  83.     IF SaveBack THEN              { Hintergrund retten ?  }
  84.       IF Shadow THEN
  85.         WExtVSMPtr (VSM)^.GetPart
  86.           (x1, y1, x2+2, Succ (y2), Background)
  87.       ELSE
  88.         WExtVSMPtr (VSM)^.GetPart
  89.           (x1, y1, x2, y2, Background);
  90.     IF Background<>NIL THEN BEGIN { Speichern erfolgreich?}
  91.       BackSaved := TRUE;
  92.       IF ClearWin THEN          { Hintergrund löschen ?   }
  93.         VSM^.FillPart (Succ (x1), Succ (y1),
  94.                        Pred (x2), Pred (y2),
  95.                        BackColor, ' ');
  96.     END ELSE
  97.       SetReturnCode (WinNoMem); { kein Speicher, Fehler   }
  98.     IF (SaveBack AND BackSaved) OR
  99.        (NOT SaveBack) THEN
  100.       FrameWindow.Show;
  101.   END ELSE
  102.     IF Opened THEN                       { schon geöffnet }
  103.       SetReturnCode (WinAlreadyOpen)
  104.     ELSE                           { Koordinaten ungültig }
  105.       SetReturnCode (WinVarErr);
  106. END;
  107.  
  108. (* ----------------------------------------------------- *)
  109. (* Schliesst, sofern es geöffnet ist, das Fenster.       *)
  110. (* ----------------------------------------------------- *)
  111. PROCEDURE WindowObj.Close;
  112. BEGIN
  113.   IF Opened THEN BEGIN                       { geöffnet ? }
  114.     IF BackSaved THEN            { Hintergrund gerettet ? }
  115.       IF Shadow THEN
  116.         WExtVSMPtr (VSM)^.PutPart
  117.           (x1, y1, x2+2, y2+1, TRUE, Background)
  118.       ELSE
  119.         WExtVSMPtr (VSM)^.PutPart
  120.           (x1, y1, x2, y2, TRUE, Background);
  121.     Background := NIL;
  122.     BackSaved := FALSE;  Opened := FALSE;
  123.   END ELSE
  124.     SetReturnCode (WinNotOpen);                { schon zu }
  125. END;
  126.  
  127. PROCEDURE WindowObj.Show;
  128. BEGIN
  129.   Open;
  130. END;
  131.  
  132. PROCEDURE WindowObj.Hide;
  133. BEGIN
  134.   Close;
  135. END;
  136.  
  137. PROCEDURE WindowObj.SetSaveBack (Save : BOOLEAN);
  138. BEGIN
  139.   IF NOT Opened THEN
  140.     SaveBack := Save;
  141. END;
  142.  
  143. PROCEDURE WindowObj.SetClearWin (Clear : BOOLEAN);
  144. BEGIN
  145.   IF NOT Opened THEN
  146.     ClearWin := Clear;
  147. END;
  148.  
  149. PROCEDURE WindowObj.SetReturnCode (Code : BYTE);
  150. BEGIN
  151.   ReturnCode := Code;
  152. END;
  153.  
  154. PROCEDURE WindowObj.SetBackColor (BC : BYTE);
  155. BEGIN
  156.   BackColor := BC;
  157. END;
  158.  
  159. FUNCTION WindowObj.GetBackColor : BYTE;
  160. BEGIN
  161.   GetBackColor := BackColor;
  162. END;
  163.  
  164. FUNCTION WindowObj.GetClearWin : BOOLEAN;
  165. BEGIN
  166.   GetClearWin := ClearWin;
  167. END;
  168.  
  169. FUNCTION WindowObj.GetSaveBack  : BOOLEAN;
  170. BEGIN
  171.   GetSaveBack := SaveBack;
  172. END;
  173.  
  174. FUNCTION WindowObj.GetSavedBack : BOOLEAN;
  175. BEGIN
  176.   GetSavedBack := BackSaved;
  177. END;
  178.  
  179. FUNCTION WindowObj.GetReturnCode : BYTE;
  180. BEGIN
  181.   GetReturnCode := ReturnCode;
  182.   SetReturnCode (WinOk);
  183. END;
  184.  
  185. DESTRUCTOR WindowObj.Done;
  186. BEGIN
  187.   IF Opened THEN
  188.     Close;
  189. END;
  190.  
  191. END.
  192. (* ----------------------------------------------------- *)
  193. (*                  Ende von WINDOWS.PAS                 *)
  194. (* ----------------------------------------------------- *)
  195.