home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------- *)
- (* WINDOWS.PAS *)
- (* *)
- (* ■ WindowObj: Erweitert "FrameWindow" um die Möglich- *)
- (* keit, den Hintergrund zu sichern und wiederherzu- *)
- (* stellen und den Hintergrund beim Öffnen zu löschen. *)
- (* *)
- (* (c) 1991 by R.Reichert & toolbox *)
- (* ----------------------------------------------------- *)
- UNIT Windows;
-
- INTERFACE
-
- USES VSObj, WinVSM, FrameWin;
-
- CONST
- On = TRUE;
- Off = FALSE; { ReturnCodes : }
- WinOk = 0; { Kein Fehler aufgetreten }
- WinNoMem = 1; { Zuwenig Speicher (Open) }
- WinVarErr = 2; { Variablen Fehler (Open) }
- WinAlreadyOpen = 3; { Schon geöffnet (Open) }
- WinNotOpen = 4; { Nicht geöffnet (Close) }
-
- TYPE
- WindowPtr = ^WindowObj;
- WindowObj = OBJECT (FrameWindow)
-
- SaveBack, { Hintergrund speichern ? }
- ClearWin, { H löschen (NACH speichern) ? }
- BackSaved : BOOLEAN; { Hintergrund gespeichert ? }
- BackColor : BYTE; { Hintergrundfarbe zum löschen }
- ReturnCode: BYTE; { FehlerCode }
- Background: ScreenMemPtr; { Zeiger auf Hintergrund }
-
- CONSTRUCTOR Init (NewVSM : WExtVSMPtr);
- CONSTRUCTOR Copy (NewWin : WindowObj);
- PROCEDURE Open; VIRTUAL;
- PROCEDURE Close; VIRTUAL;
- PROCEDURE Show; VIRTUAL;
- PROCEDURE Hide; VIRTUAL;
- PROCEDURE SetSaveBack (Save : BOOLEAN); VIRTUAL;
- PROCEDURE SetClearWin (Clear : BOOLEAN); VIRTUAL;
- PROCEDURE SetReturnCode (Code : BYTE); VIRTUAL;
- PROCEDURE SetBackColor (BC : BYTE); VIRTUAL;
-
- FUNCTION GetBackColor : BYTE; VIRTUAL;
- FUNCTION GetClearWin : BOOLEAN; VIRTUAL;
- FUNCTION GetSaveBack : BOOLEAN; VIRTUAL;
- FUNCTION GetSavedBack: BOOLEAN; VIRTUAL;
- FUNCTION GetReturnCode : BYTE; VIRTUAL;
- DESTRUCTOR Done; VIRTUAL;
- END;
-
- IMPLEMENTATION
-
- CONSTRUCTOR WindowObj.Init (NewVSM : WExtVSMPtr);
- BEGIN
- IF FrameWindow.Init (NewVSM) THEN BEGIN
- SetSaveBack (On); { Standardwerte }
- SetClearWin (Off);
- SetBackColor (7);
- SetReturnCode (WinOk);
- BackSaved := FALSE;
- BackGround := NIL;
- END ELSE
- Fail;
- END;
-
- CONSTRUCTOR WindowObj.Copy (NewWin : WindowObj);
- BEGIN
- IF NewWin.VSM=NIL THEN Fail
- ELSE Self := NewWin;
- END;
-
- (* ----------------------------------------------------- *)
- (* Öffnet das Fenster mit den akt. Werten der Variablen. *)
- (* ----------------------------------------------------- *)
- PROCEDURE WindowObj.Open;
- BEGIN
- CheckVars;
- IF (VarOk) AND (NOT Opened) THEN BEGIN
- IF SaveBack THEN { Hintergrund retten ? }
- IF Shadow THEN
- WExtVSMPtr (VSM)^.GetPart
- (x1, y1, x2+2, Succ (y2), Background)
- ELSE
- WExtVSMPtr (VSM)^.GetPart
- (x1, y1, x2, y2, Background);
- IF Background<>NIL THEN BEGIN { Speichern erfolgreich?}
- BackSaved := TRUE;
- IF ClearWin THEN { Hintergrund löschen ? }
- VSM^.FillPart (Succ (x1), Succ (y1),
- Pred (x2), Pred (y2),
- BackColor, ' ');
- END ELSE
- SetReturnCode (WinNoMem); { kein Speicher, Fehler }
- IF (SaveBack AND BackSaved) OR
- (NOT SaveBack) THEN
- FrameWindow.Show;
- END ELSE
- IF Opened THEN { schon geöffnet }
- SetReturnCode (WinAlreadyOpen)
- ELSE { Koordinaten ungültig }
- SetReturnCode (WinVarErr);
- END;
-
- (* ----------------------------------------------------- *)
- (* Schliesst, sofern es geöffnet ist, das Fenster. *)
- (* ----------------------------------------------------- *)
- PROCEDURE WindowObj.Close;
- BEGIN
- IF Opened THEN BEGIN { geöffnet ? }
- IF BackSaved THEN { Hintergrund gerettet ? }
- IF Shadow THEN
- WExtVSMPtr (VSM)^.PutPart
- (x1, y1, x2+2, y2+1, TRUE, Background)
- ELSE
- WExtVSMPtr (VSM)^.PutPart
- (x1, y1, x2, y2, TRUE, Background);
- Background := NIL;
- BackSaved := FALSE; Opened := FALSE;
- END ELSE
- SetReturnCode (WinNotOpen); { schon zu }
- END;
-
- PROCEDURE WindowObj.Show;
- BEGIN
- Open;
- END;
-
- PROCEDURE WindowObj.Hide;
- BEGIN
- Close;
- END;
-
- PROCEDURE WindowObj.SetSaveBack (Save : BOOLEAN);
- BEGIN
- IF NOT Opened THEN
- SaveBack := Save;
- END;
-
- PROCEDURE WindowObj.SetClearWin (Clear : BOOLEAN);
- BEGIN
- IF NOT Opened THEN
- ClearWin := Clear;
- END;
-
- PROCEDURE WindowObj.SetReturnCode (Code : BYTE);
- BEGIN
- ReturnCode := Code;
- END;
-
- PROCEDURE WindowObj.SetBackColor (BC : BYTE);
- BEGIN
- BackColor := BC;
- END;
-
- FUNCTION WindowObj.GetBackColor : BYTE;
- BEGIN
- GetBackColor := BackColor;
- END;
-
- FUNCTION WindowObj.GetClearWin : BOOLEAN;
- BEGIN
- GetClearWin := ClearWin;
- END;
-
- FUNCTION WindowObj.GetSaveBack : BOOLEAN;
- BEGIN
- GetSaveBack := SaveBack;
- END;
-
- FUNCTION WindowObj.GetSavedBack : BOOLEAN;
- BEGIN
- GetSavedBack := BackSaved;
- END;
-
- FUNCTION WindowObj.GetReturnCode : BYTE;
- BEGIN
- GetReturnCode := ReturnCode;
- SetReturnCode (WinOk);
- END;
-
- DESTRUCTOR WindowObj.Done;
- BEGIN
- IF Opened THEN
- Close;
- END;
-
- END.
- (* ----------------------------------------------------- *)
- (* Ende von WINDOWS.PAS *)
- (* ----------------------------------------------------- *)