home *** CD-ROM | disk | FTP | other *** search
-
- MODULE MaskDemo;
- (*---------------------------------------------------------------------*)
- (* M A S K - D R I V E R - D E M O *)
- (* M 2 P R O L I B *)
- (* Copyright (C) 1987 Bühlmann Computer Software CH-8636 WALD *)
- (* -- All Rights Reserved -- *)
- (*---------------------------------------------------------------------*)
- (* Author: X. Bühlmann *)
- (* *)
- (* Version 1.0 Date: 28/09/88 *)
- (*---------------------------------------------------------------------*)
- IMPORT BIOS, HelpDriver, TextDriver, Windows, Screen, ScreenNum;
- FROM SYSTEM IMPORT ADR, SIZE;
- FROM ByteString IMPORT FillBytes;
- FROM SystemDef IMPORT rColor, eColor;
- (*[-CSYS
- FROM WinSupport IMPORT StatuslineColor;
- ]*)
- FROM SpecSupport IMPORT MonitorType, eMonitorType;
- FROM KeyDriver IMPORT FKeys, KeyBoard, eDirection, DirecOnOff;
- FROM Keyboard IMPORT cFuncOff, cShiftOff, cAlternFunc, cCtrlFunc,
- cFunc, cShiftFunc, eShiftBits, sShiftBits, KeyPressed, Key,
- ShiftBits;
- FROM MaskInterface IMPORT aField, eFieldType, MaskVar, ClearAllFields,
- DefineFields, NumFieldPlace, MaskRead, MaskWrite;
- FROM MaskDriver IMPORT MaskColor, DefineMaskField, CreateMask,
- CloseMask;
- FROM Mask IMPORT SetEditMode, bFieldNum, eEditMode, eInputMode,
- rFieldDescrip, rMaskDescrip, ActivateMask, RestoreFields,
- DefineField, DisplayInputMode, EditFields, EndMask, InputMode,
- SetField, UserFunc, InitField;
- FROM Screen IMPORT CursorType, InqMaxScrBound, InqScrColor,
- ScrPutString, ScrWriteLn, SetCursorType;
- FROM String IMPORT Move;
- FROM NumConv IMPORT LongIntToStr;
- FROM DateCalc IMPORT Date, aBtrvDate, aDateType, ReadDate, CountDate;
- (*
- *)
- TYPE
- (*[+JPI*)
- REAL = LONGREAL;
- (*]*)
- rMaskTp =
- RECORD
- s1, s2 : ARRAY [0..50] OF CHAR;
- c : CARDINAL;
- i : INTEGER;
- l : LONGINT;
- r : REAL;
- sysDate, Date : aDateType;
- bDate : aBtrvDate;
- days1, days2, days3 : LONGINT;
- END;
- VAR
- maskVar : rMaskTp;
- Ind, fields, CursorSave : CARDINAL;
- Modified, EditMode : BOOLEAN;
- (*-----------------------------------------------------------------------*)
- PROCEDURE Funktion(w : eDirection; VAR W : eDirection): CARDINAL;
- VAR
- Ind, Ch : CARDINAL;
- xWdw : Windows.tWindow;
- BEGIN
- CASE w OF
- | F1 :
- IF HelpDriver.CreateHelp('Msk-Demo.HLP',1) THEN
- END;
- Ch := 0;
- W := not;
- | F5 :
- RestoreFields();
- MaskRead();
- IF TextDriver.CreateTxt('Demo.MSK',2,xWdw) THEN
- WITH maskVar DO
- Screen.SetCursor(20, 1);
- Screen.ScrWriteString(s1);
- Screen.SetCursor(20, 2);
- Screen.ScrWriteString(s2);
- Screen.SetCursor(20, 4);
- ScreenNum.WriteCard(c, 10);
- Screen.SetCursor(20, 5);
- ScreenNum.WriteInt(i, 10);
- Screen.SetCursor(20, 6);
- ScreenNum.WriteLong(l, 10);
- Screen.SetCursor(20, 7);
- ScreenNum.WriteReal(r, 5, 5);
- Screen.SetCursor(20, 9);
- Screen.ScrWriteString(sysDate);
- Screen.SetCursor(20, 10);
- Screen.ScrWriteString(Date);
- END;
- REPEAT
- UNTIL Key()#0;
- Windows.DeleteWindow(xWdw);
- END;
- Ch := 0;
- W := not;
- | F10 :
- IF EditMode THEN
- EditMode := FALSE;
- SetEditMode(2, noEdit);
- ELSE
- EditMode := TRUE;
- SetEditMode(2, optional);
- END;
- Ch := 0;
- W := not;
- ELSE
- Ch := 0;
- W := w;
- END;
- RETURN Ch;
- END Funktion;
- PROCEDURE charOK(fieldNum : bFieldNum; VAR ch : CHAR): BOOLEAN;
- BEGIN
- CASE fieldNum OF
- | 2 :
- ch := CAP(ch);
- ELSE
- END;
- RETURN TRUE;
- END charOK;
- (*-----------------------------------------------------------------------*)
- PROCEDURE displayInputMode();
- BEGIN
- IF InputMode=overtype THEN
- SetCursorType(CursorSave);
- ELSE
- SetCursorType(0DH);
- END;
- END displayInputMode;
- (*-----------------------------------------------------------------------*)
- PROCEDURE fieldOK(fieldNum : bFieldNum; VAR field : ARRAY OF CHAR):
- BOOLEAN;
- VAR
- xNum : ARRAY [0..20] OF CHAR;
- xDate : aDateType;
- BEGIN
- IF (field[0]#0C) & NOT NumFieldPlace(fieldNum,field) THEN
- RETURN FALSE;
- ELSE
- Move(field, xDate);
- CASE fieldNum OF
- | 9 :
- IF CountDate(xDate,maskVar.days2) THEN
- LongIntToStr(maskVar.days2, 10, xNum);
- IF NumFieldPlace(10,xNum) THEN
- SetField(10, xNum);
- END;
- END;
- | 11 :
- IF CountDate(xDate,maskVar.days3) THEN
- LongIntToStr(maskVar.days3, 10, xNum);
- IF NumFieldPlace(12,xNum) THEN
- SetField(12, xNum);
- END;
- END;
- ELSE
- END;
- END;
- RETURN TRUE;
- END fieldOK;
- (*-----------------------------------------------------------------------*)
- PROCEDURE getComment(fieldNum : bFieldNum; VAR comment : ARRAY OF
- CHAR);
- BEGIN
- Move('│ F1 Help │ F5 Mask-Dump │ F10 Edit-Mode Field 3│', comment);
- END getComment;
- (*-----------------------------------------------------------------------*)
- PROCEDURE userFunc(fieldNum : bFieldNum; key : CARDINAL);
- BEGIN
- END userFunc;
- (*-----------------------------------------------------------------------*)
- PROCEDURE Colors();
- BEGIN
- CASE MonitorType OF
- | color :
- (*[-CSYS
- StatuslineColor(black, green);
- ]*)
- MaskColor(black, white, ltWhite, white, ltWhite, blue);
- TextDriver.TxtColor(black, white);
- | mono :
- (*[-CSYS
- StatuslineColor(black, white);
- ]*)
- MaskColor(white, black, ltWhite, black, black, white);
- TextDriver.TxtColor(black, white);
- | spec :
- (*[-CSYS
- StatuslineColor(black, white);
- ]*)
- MaskColor(white, black, ltWhite, black, black, white);
- TextDriver.TxtColor(black, white);
- END;
- END Colors;
- PROCEDURE DefMaskFields();
- BEGIN
- ClearAllFields();
- WITH maskVar DO
- DefineFields(ADR(s1), SIZE(s1), Str, 0, 0);
- DefineFields(ADR(s2), SIZE(s2), Str, 0, 0);
- DefineFields(ADR(c), SIZE(c), Card, 0, 5);
- DefineFields(ADR(i), SIZE(i), int, 5, 5);
- DefineFields(ADR(l), SIZE(l), Long, 0, 10);
- DefineFields(ADR(r), SIZE(r), Real, 5, 10);
- DefineFields(ADR(sysDate), SIZE(sysDate), date, 0, 0);
- DefineFields(ADR(days1), SIZE(days1), long, 10, 10);
- DefineFields(ADR(Date), SIZE(Date), date, 0, 0);
- DefineFields(ADR(days2), SIZE(days2), long, 10, 10);
- DefineFields(ADR(bDate), SIZE(bDate), Bdate, 0, 0);
- DefineFields(ADR(days3), SIZE(days3), long, 10, 10);
- END;
- END DefMaskFields;
- PROCEDURE Copyright();
- BEGIN
- Screen.ClearScrBound();
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' M A S K - D R I V E R - D E M O Version 1.0 ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' 1 9 8 8 ');
- Screen.ScrWriteLn();
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' Copyright by ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' (c) Bühlmann Computer Software ');
- Screen.ScrWriteLn();
- Screen.ScrPutString(
- ' CH-8636 Wald ');
- Screen.ScrWriteLn();
- END Copyright;
- BEGIN
- Copyright();
- DirecOnOff := TRUE;
- FKeys := Funktion;
- CursorSave := CursorType();
- DisplayInputMode := displayInputMode;
- Colors();
- FillBytes(ADR(maskVar), SIZE(maskVar), 0C);
- ReadDate();
- maskVar.sysDate := Date;
- IF CountDate(Date,maskVar.days1) THEN
- END;
- DefMaskFields();
- MaskWrite();
- IF CreateMask('Demo.MSK',1,fields) THEN
- EditMode := TRUE;
- (**)
- DefineMaskField(50, MaskVar[1]);
- DefineMaskField(50, MaskVar[2]);
- DefineMaskField(5, MaskVar[3]);
- DefineMaskField(6, MaskVar[4]);
- DefineMaskField(10, MaskVar[5]);
- DefineMaskField(10, MaskVar[6]);
- DefineMaskField(10, MaskVar[7]);
- DefineMaskField(10, MaskVar[8]);
- DefineMaskField(10, MaskVar[9]);
- DefineMaskField(10, MaskVar[10]);
- DefineMaskField(10, MaskVar[11]);
- DefineMaskField(10, MaskVar[12]);
- (**)
- Modified := EditFields(InitField,userFunc,charOK,fieldOK,
- getComment);
- CloseMask();
- END;
- END MaskDemo.