home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 14 / CD_ASCQ_14_0694.iso / news / 4547 / pgx122 / bbdlg.pas next >
Pascal/Delphi Source File  |  1994-02-16  |  24KB  |  211 lines

  1. (* This file was mangled by Mangler 1.14 (c) Copyright 1993 by Berend de Boer *)
  2.  {$IFDEF DPMI} {$X+,S-,I-,V-} {$ELSE} {$X+,O+,F+,I-,R-,Q-,S-,V-,D-} {$ENDIF} UNIT BBDLG ;INTERFACE USES OBJECTS ,
  3. DRIVERS , MENUS , VIEWS , DIALOGS ;CONST MFWARNING =$0000 ;MFERROR =$0001 ;MFINFORMATION =$0002 ;MFCONFIRMATION =$0003 ;
  4. MFYESBUTTON =$0100 ;MFNOBUTTON =$0200 ;MFOKBUTTON =$0400 ;MFCANCELBUTTON =$0800 ;MFHELPBUTTON =$1000 ;
  5. MFYESNOCANCEL =MFYESBUTTON + MFNOBUTTON + MFCANCELBUTTON ;MFOKCANCEL =MFOKBUTTON + MFCANCELBUTTON ;
  6. MFOKCANCELHELP =MFOKBUTTON + MFCANCELBUTTON + MFHELPBUTTON ;CONST PASSWORDLEN =8 ;CONST NUMBERS ='0123456789';
  7. CAPITALS ='ABCDEFGHIJKLMNOPQRSTUVWXYZ';LOWERCASE ='abcdefghijklmnopqrstuvwxyz';ALLCHARS ='';CONST CMEDITITEM =240 ;
  8. CMDELETEITEM =241 ;CMINSERTITEM =242 ;CMBEDITITEM =243 ;CMBDELETEITEM =244 ;CMBINSERTITEM =245 ;CONST ENGLISH =0 ;
  9. DUTCH =0 ;CONST YES =CMYES ;NO =CMNO ;CANCEL =CMCANCEL ;TYPE PPOPUPMENU =^TPOPUPMENU ;
  10. TPOPUPMENU =OBJECT (TMENUPOPUP)DESTRUCTOR DONE ;VIRTUAL;END ;PSPINBUTTON =^TSPINBUTTON ;
  11. TSPINBUTTON =OBJECT (TRADIOBUTTONS)CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;ASTRINGS :PSITEM );PROCEDURE DRAW ;VIRTUAL;
  12. PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PXINPUTLINE =^TXINPUTLINE ;
  13. TXINPUTLINE =OBJECT (TINPUTLINE)PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;END ;PLISTVIEWER2 =^TLISTVIEWER2 ;
  14. TLISTVIEWER2 =OBJECT (TLISTVIEWER)TYPEDSTR :PSTRING ;TYPEDSTRINDEX :WORD ;CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
  15. ANUMCOLS :INTEGER ;AHSCROLLBAR ,AVSCROLLBAR:PSCROLLBAR );PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;
  16. PROCEDURE INSERTITEM ;VIRTUAL;PROCEDURE DELETEITEM ;VIRTUAL;PROCEDURE EDITITEM ;VIRTUAL;END ;
  17. TLISTBOXREC =RECORD LIST :PCOLLECTION ;SELECTION :WORD ;END ;PLISTBOX2 =^TLISTBOX2 ;
  18. TLISTBOX2 =OBJECT (TLISTBOX)TYPEDSTR :PSTRING ;TYPEDSTRINDEX :WORD ;CONSTRUCTOR INIT (VAR BOUNDS :TRECT ;
  19. ANUMCOLS :INTEGER ;AVSCROLLBAR :PSCROLLBAR );PROCEDURE HANDLEEVENT (VAR EVENT :TEVENT );VIRTUAL;PROCEDURE INSERTITEM ;
  20. VIRTUAL;PROCEDURE DELETEITEM ;VIRTUAL;PROCEDURE EDITITEM ;VIRTUAL;END ;PPARAMINPUTBOX =^TPARAMINPUTBOX ;
  21. TPARAMINPUTBOX =OBJECT (TLISTBOX2)PROCEDURE INSERTITEM ;VIRTUAL;PROCEDURE DELETEITEM ;VIRTUAL;PROCEDURE EDITITEM ;
  22. VIRTUAL;END ;PSTRINGINPUTBOX =^TSTRINGINPUTBOX ;TSTRINGINPUTBOX =OBJECT (TLISTBOX2)PROCEDURE INSERTITEM ;VIRTUAL;
  23. PROCEDURE DELETEITEM ;VIRTUAL;PROCEDURE EDITITEM ;VIRTUAL;END ;PROCEDURE DISPOSESITEM (PS :PSITEM );PROCEDURE PRINTERROR
  24. (CONST S :STRING ;AHELPCTX :WORD );PROCEDURE PRINTWARNING (CONST S :STRING ;AHELPCTX :WORD );FUNCTION PROMPTUSER
  25. (CONST S :STRING ;AHELPCTX :WORD ):WORD ;FUNCTION USERANSWER (CONST S :STRING ;AHELPCTX :WORD ):WORD ;FUNCTION POPANSWER
  26. (CONST S :STRING ;AHELPCTX :WORD ):WORD ;FUNCTION INPUTSTRING (HEADER :STRING ;VAR S :STRING ;LEN :WORD ;
  27. ALLOWEDCHARS :STRING ;AHELPCTX :WORD ):WORD ;FUNCTION INPUTWORD (HEADER :STRING ;VAR W :WORD ;LEN :WORD ;
  28. AHELPCTX :WORD ):WORD ;PROCEDURE INFOBOX (CONST S :STRING ;AHELPCTX :WORD );FUNCTION EXECDIALOG (P :PDIALOG ;
  29. DATA :POINTER ):WORD ;FUNCTION CHECKEXECDIALOG (P :PDIALOG ;DATA :POINTER ;DATASIZE :WORD ):WORD ;FUNCTION PASSWORD
  30. (CONST S :STRING ;AHELPCTX :WORD ):BOOLEAN ;PROCEDURE INSERTBUTTONS (DIALOG :PDIALOG ;AOPTIONS :WORD );
  31. PROCEDURE CREATESTATUSDLG (CONST ATITLE :TTITLESTR ;ATOTAL :LONGINT ;AHELPCTX :WORD );PROCEDURE DISPOSESTATUSDLG ;
  32. PROCEDURE STATUSDLGSET (POSITION :LONGINT );PROCEDURE STATUSDLGNEWTEXT (CONST S :STRING );PROCEDURE SHOWHELPWINDOW
  33. (CONST FILENAME :STRING ;HELPCTX :WORD );PROCEDURE VIEWASTEXT (CONST FILENAME :FNAMESTR );FUNCTION MESSAGEBOX
  34. (CONST MSG :STRING ;PARAMS :POINTER ;AOPTIONS :WORD ;AHELPCTX :WORD ):WORD ;FUNCTION MESSAGEBOXRECT (VAR R :TRECT ;
  35. CONST MSG :STRING ;PARAMS :POINTER ;AOPTIONS :WORD ;AHELPCTX :WORD ):WORD ;IMPLEMENTATION USES APP , HELPFILE , EDITORS ,
  36. VIEWTEXT , BBGUI , BBUTIL , BBFILE , BBERROR , BBSTRRES ;{$I PREAPP.INC} CONST OOIOlO01OOI0=1000 ;OOIOO1OlO0Il=1001 ;
  37. TYPE OI1O11O0II1=^OI1O11O0IO0;OI1O11O0IO0=OBJECT (TXINPUTLINE)O10OlIOO01O10:STRING ;CONSTRUCTOR INIT
  38. (VAR O10O0OO1lIOO0:TRECT;OOII00O01010:INTEGER;O10OlIIIO0ll1:STRING );PROCEDURE HANDLEEVENT (VAR EVENT:TEVENT);VIRTUAL;
  39. END ;O1010llIO1I10=^O1010llIO1I01;O1010llIO1I01=OBJECT (TINPUTLINE)PROCEDURE DRAW ;VIRTUAL;END ;
  40. OI10O0OI011=^OI10O0OI00I;OI10O0OI00I=OBJECT (TVIEW)CONSTRUCTOR INIT (O10O0OO1lIOO0:TRECT);PROCEDURE DRAW ;VIRTUAL;
  41. FUNCTION GETPALETTE :PPALETTE ;VIRTUAL;PROCEDURE UPDATE (OOIIOlIl00lO:WORD);FUNCTION VALID (OlIlOOOl0:WORD):BOOLEAN ;
  42. VIRTUAL;PRIVATE O100lll0I1l:INTEGER;END ;OOO001lOO1OI=^OOO001lOO1IO;OOO001lOO1IO=OBJECT (TDIALOG)O100lll0I1l:INTEGER;
  43. OI1I01OI0Ol:LONGINT;Ol010II0OOI0:PSTATICTEXT;OlI01Ol1I:OI10O0OI011;OOllI0II0lIO:PSTATICTEXT;CONSTRUCTOR INIT
  44. (VAR O10O0OO1lIOO0:TRECT;OI110IO10Oll:TTITLESTR;OI11Oll000I:LONGINT);PROCEDURE SETPERC (O101OIl1l00IO:LONGINT);
  45. PROCEDURE NEWTEXT (CONST OO1O:STRING );END ;CONST OOO000O0II0O:OOO001lOO1OI=NIL ;PROCEDURE DISPOSESITEM (PS:PSITEM);
  46. BEGIN IF PS <> NIL THEN BEGIN DISPOSESITEM (PS ^. NEXT );DISPOSESTR (PS ^. VALUE );DISPOSE (PS );END ;END ;
  47. FUNCTION MESSAGEBOX (CONST MSG:STRING ;PARAMS:POINTER;AOPTIONS:WORD;AHELPCTX:WORD):WORD ;VAR OO1I:TRECT;
  48. BEGIN OO1I.ASSIGN (0 , 0 , 40 , 9 );OO1I.MOVE ((DESKTOP ^. SIZE.X - OO1I.B.X )DIV 2 , (DESKTOP ^. SIZE.Y - OO1I.B.Y )DIV
  49. 2 );MESSAGEBOX := MESSAGEBOXRECT (OO1I , MSG , PARAMS , AOPTIONS , AHELPCTX );END ;PROCEDURE INSERTBUTTONS
  50. (DIALOG:PDIALOG;AOPTIONS:WORD);CONST O100l11l1IO01:ARRAY [ 0 .. 4 ]  OF STRING [ 6 ] =('~Y~es', '~N~o', 'O~K~', 'Cancel',
  51. 'Help');CONST OOIIIlI0Il1O:ARRAY [ 0 .. 4 ]  OF WORD=(CMYES, CMNO, CMOK, CMCANCEL, CMHELP);
  52. VAR OIlO,OOIO,O10OO0Il0OIl0:INTEGER;OO1000011:PVIEW;OO1I:TRECT;OOO0OlOI0lIl:ARRAY [ 0 .. 4 ]  OF PVIEW;
  53. BEGIN WITH DIALOG^ DO BEGIN OOIO := - 2 ;O10OO0Il0OIl0 := 0 ;FOR OIlO := 0 TO 4  DO IF AOPTIONS AND ($0100 SHL OIlO )<> 0
  54. THEN BEGIN OO1I.ASSIGN (0 , 0 , 10 , 2 );IF OIlO IN [ 0 , 2 ] THEN BEGIN IF STRINGS =NIL THEN OO1000011 := NEW (PBUTTON ,
  55. INIT (OO1I , O100l11l1IO01 [ OIlO ] , OOIIIlI0Il1O [ OIlO ] , BFDEFAULT ))ELSE OO1000011 := NEW (PBUTTON , INIT (OO1I ,
  56. RSGET (SBUTTONYES + OIlO ), OOIIIlI0Il1O [ OIlO ] , BFDEFAULT ));END ELSE BEGIN IF STRINGS =NIL THEN OO1000011 := NEW
  57. (PBUTTON , INIT (OO1I , O100l11l1IO01 [ OIlO ] , OOIIIlI0Il1O [ OIlO ] , BFNORMAL ))ELSE OO1000011 := NEW (PBUTTON , INIT
  58. (OO1I , RSGET (SBUTTONYES + OIlO ), OOIIIlI0Il1O [ OIlO ] , BFNORMAL ));END ;INC (OOIO , OO1000011 ^. SIZE.X + 2 );
  59. OOO0OlOI0lIl [ O10OO0Il0OIl0 ] := OO1000011 ;INC (O10OO0Il0OIl0 );END ;OOIO := (SIZE.X - OOIO )SHR 1 ;FOR OIlO := 0 TO
  60. O10OO0Il0OIl0 - 1  DO BEGIN OO1000011 := OOO0OlOI0lIl [ OIlO ] ;INSERT (OO1000011 );OO1000011 ^. MOVETO (OOIO , SIZE.Y -
  61. 3 );INC (OOIO , OO1000011 ^. SIZE.X + 2 );END ;SELECTNEXT (FALSE );END ;END ;FUNCTION MESSAGEBOXRECT (VAR R:TRECT;
  62. CONST MSG:STRING ;PARAMS:POINTER;AOPTIONS:WORD;AHELPCTX:WORD):WORD ;CONST O10O0lIO1000I:ARRAY [ 0 .. 3 ]  OF STRING [ 11
  63. ] =('Warning', 'Error', 'Information', 'Confirm');VAR O10OIIIOll1O1:PDIALOG;OO1000011:PVIEW;OO1O:STRING ;BEGIN IF STRINGS
  64. =NIL THEN O10OIIIOll1O1 := NEW (PDIALOG , INIT (R , O10O0lIO1000I [ AOPTIONS AND $3 ] ))ELSE O10OIIIOll1O1 := NEW
  65. (PDIALOG , INIT (R , RSGET (SWARNING + (AOPTIONS AND $3 ))));WITH O10OIIIOll1O1^ DO BEGIN R.ASSIGN (3 , 2 , SIZE.X - 2 ,
  66. SIZE.Y - 3 );FORMATSTR (OO1O , MSG , PARAMS ^);OO1000011 := NEW (PSTATICTEXT , INIT (R , OO1O ));INSERT (OO1000011 );
  67. INSERTBUTTONS (O10OIIIOll1O1 , AOPTIONS );END ;O10OIIIOll1O1 ^. HELPCTX := AHELPCTX ;MESSAGEBOXRECT := DESKTOP ^.
  68. EXECVIEW (O10OIIIOll1O1 );DISPOSE (O10OIIIOll1O1 , DONE );END ;PROCEDURE PRINTERROR (CONST S:STRING ;AHELPCTX:WORD);
  69. VAR O100llIl00IOl:WORD;BEGIN ASM {} MOV O100llIl00IOl, BP {} END;IF APPLICATION =NIL THEN BBGUI.TEXTPRINTERROR (S ,
  70. AHELPCTX )ELSE BEGIN BEEP ;MESSAGEBOX (S , NIL , MFERROR + MFOKBUTTON , AHELPCTX );LOGERROR ('Error: '+ S );IF @
  71. DUMPSTACK <> NIL THEN DUMPSTACK (NIL , O100llIl00IOl );END ;END ;PROCEDURE PRINTWARNING (CONST S:STRING ;AHELPCTX:WORD);
  72. BEGIN IF APPLICATION =NIL THEN BBGUI.TEXTPRINTERROR (S , AHELPCTX )ELSE BEGIN BEEP ;MESSAGEBOX (S , NIL , MFWARNING +
  73. MFOKBUTTON , AHELPCTX );LOGERROR ('Warning: '+ S );END ;END ;FUNCTION PROMPTUSER (CONST S:STRING ;AHELPCTX:WORD):WORD ;
  74. BEGIN IF APPLICATION =NIL THEN BEGIN WRITELN (S );PROMPTUSER := CMYES ;END ELSE PROMPTUSER := MESSAGEBOX (S , NIL ,
  75. MFINFORMATION + MFOKBUTTON , AHELPCTX );END ;FUNCTION USERANSWER (CONST S:STRING ;AHELPCTX:WORD):WORD ;BEGIN IF
  76. APPLICATION =NIL THEN USERANSWER := TEXTUSERANSWER (S , AHELPCTX )ELSE USERANSWER := MESSAGEBOX (S , NIL , MFCONFIRMATION
  77. + MFYESNOCANCEL , AHELPCTX );END ;FUNCTION POPANSWER (CONST S:STRING ;AHELPCTX:WORD):WORD ;BEGIN POPANSWER := USERANSWER
  78. (S , AHELPCTX );END ;CONSTRUCTOR OI1O11O0IO0.INIT (VAR O10O0OO1lIOO0:TRECT;OOII00O01010:INTEGER;O10OlIIIO0ll1:STRING );
  79. BEGIN INHERITED INIT(O10O0OO1lIOO0 , OOII00O01010 );O10OlIOO01O10 := O10OlIIIO0ll1 ;END ;
  80. PROCEDURE OI1O11O0IO0.HANDLEEVENT (VAR EVENT:TEVENT);BEGIN IF (O10OlIOO01O10 <> '')AND (EVENT.WHAT AND EVKEYBOARD <> 0
  81. )AND (EVENT.CHARCODE IN [ #32.. #255] )THEN BEGIN IF POS (EVENT.CHARCODE , O10OlIOO01O10 )=0 THEN BEGIN EVENT.CHARCODE :=
  82. UPCASE (EVENT.CHARCODE );IF POS (EVENT.CHARCODE , O10OlIOO01O10 )=0 THEN BEGIN CLEAREVENT (EVENT );BEEP ;END ;END ;END ;
  83. INHERITED HANDLEEVENT(EVENT );END ;FUNCTION INPUTSTRING (HEADER:STRING ;VAR S:STRING ;LEN:WORD;ALLOWEDCHARS:STRING ;
  84. AHELPCTX:WORD):WORD ;VAR OO1I:TRECT;O10OIIIOll1O1:PDIALOG;BEGIN OO1I.ASSIGN (0 , 0 , 40 , 7 );OO1I.MOVE ((DESKTOP ^.
  85. SIZE.X - OO1I.B.X )DIV 2 , (DESKTOP ^. SIZE.Y - OO1I.B.Y )DIV 2 );O10OIIIOll1O1 := NEW (PDIALOG , INIT (OO1I , HEADER ));
  86. O10OIIIOll1O1 ^. HELPCTX := AHELPCTX ;IF LEN < O10OIIIOll1O1 ^. SIZE.X - 1 THEN OO1I.ASSIGN (2 , 2 , 2 + 2 + LEN , 3
  87. )ELSE OO1I.ASSIGN (2 , 2 , O10OIIIOll1O1 ^. SIZE.X - 2 , 3 );O10OIIIOll1O1 ^. INSERT (NEW (OI1O11O0II1 , INIT (OO1I , LEN
  88. , ALLOWEDCHARS )));INSERTBUTTONS (O10OIIIOll1O1 , MFOKCANCELHELP );INPUTSTRING := EXECDIALOG (O10OIIIOll1O1 , @ S );
  89. END ;FUNCTION INPUTWORD (HEADER:STRING ;VAR W:WORD;LEN:WORD;AHELPCTX:WORD):WORD ;VAR OO1O:STRING ;BEGIN OO1O := '';
  90. INPUTWORD := INPUTSTRING (HEADER , OO1O , LEN , NUMBERS , AHELPCTX );W := VALW (OO1O );END ;PROCEDURE INFOBOX
  91. (CONST S:STRING ;AHELPCTX:WORD);BEGIN IF APPLICATION =NIL THEN BBGUI.TEXTINFOBOX (S , AHELPCTX )ELSE MESSAGEBOX (S , NIL
  92. , MFINFORMATION + MFOKBUTTON , AHELPCTX );END ;FUNCTION EXECDIALOG (P:PDIALOG;DATA:POINTER):WORD ;VAR OIO11IOOlO0:WORD;
  93. BEGIN OIO11IOOlO0 := CMCANCEL ;P := PDIALOG (APPLICATION ^. VALIDVIEW (P ));IF P <> NIL THEN BEGIN IF DATA <> NIL THEN P
  94. ^. SETDATA (DATA ^);OIO11IOOlO0 := DESKTOP ^. EXECVIEW (P );IF (OIO11IOOlO0 <> CMCANCEL )AND (DATA <> NIL )THEN P ^.
  95. GETDATA (DATA ^);DISPOSE (P , DONE );END ;EXECDIALOG := OIO11IOOlO0 ;END ;FUNCTION CHECKEXECDIALOG (P:PDIALOG;
  96. DATA:POINTER;DATASIZE:WORD):WORD ;VAR OIO11IOOlO0:WORD;BEGIN OIO11IOOlO0 := CMCANCEL ;P := PDIALOG (APPLICATION ^.
  97. VALIDVIEW (P ));IF P <> NIL THEN BEGIN IF DATA <> NIL THEN BEGIN IF P ^. DATASIZE <> DATASIZE THEN BEGIN PRINTERROR
  98. ('Internal error. DataSize mismatch -- CheckExecDialog --', HCNOCONTEXT );HALT (1 );END ;P ^. SETDATA (DATA ^);END ;
  99. OIO11IOOlO0 := DESKTOP ^. EXECVIEW (P );IF (OIO11IOOlO0 <> CMCANCEL )AND (DATA <> NIL )THEN P ^. GETDATA (DATA ^);
  100. DISPOSE (P , DONE );END ;CHECKEXECDIALOG := OIO11IOOlO0 ;END ;PROCEDURE O1010llIO1I01.DRAW ;VAR OO1O:STRING ;
  101. OIlO:INTEGER;BEGIN OO1O := DATA ^;FOR OIlO := 1 TO LENGTH (OO1O ) DO DATA ^[ OIlO ] := '*';INHERITED DRAW;DATA ^:= OO1O ;
  102. END ;FUNCTION PASSWORD (CONST S:STRING ;AHELPCTX:WORD):BOOLEAN ;VAR OO1I:TRECT;O10OIIIOll1O1:PDIALOG;O11l0IOI:STRING ;
  103. OO10:PPALETTE;O1O11O0Illl,O1OI0l0I1I0:CHAR;BEGIN OO1I.ASSIGN (0 , 0 , 40 , 9 );OO1I.MOVE ((DESKTOP ^. SIZE.X - OO1I.B.X
  104. )DIV 2 , (DESKTOP ^. SIZE.Y - OO1I.B.Y )DIV 2 );O10OIIIOll1O1 := NEW (PDIALOG , INIT (OO1I , RSGET (SPASSWORD )));
  105. O10OIIIOll1O1 ^. HELPCTX := AHELPCTX ;OO1I.ASSIGN (2 , 2 , 39 , 3 );O10OIIIOll1O1 ^. INSERT (NEW (PSTATICTEXT , INIT
  106. (OO1I , RSGET (SENTERPASSWORD ))));OO1I.ASSIGN (4 , 4 , 4 + 16 + 2 , 5 );O10OIIIOll1O1 ^. INSERT (NEW (O1010llIO1I10 ,
  107. INIT (OO1I , PASSWORDLEN )));INSERTBUTTONS (O10OIIIOll1O1 , MFOKCANCEL );PBUTTON (O10OIIIOll1O1 ^. CURRENT ^. PREV )^.
  108. AMDEFAULT := TRUE ;IF DESKTOP ^. EXECVIEW (O10OIIIOll1O1 )=CMCANCEL THEN PASSWORD := FALSE ELSE BEGIN O10OIIIOll1O1 ^.
  109. GETDATA (O11l0IOI );IF UPSTR (O11l0IOI )=UPSTR (S )THEN PASSWORD := TRUE ELSE PASSWORD := FALSE ;END ;END ;
  110. CONSTRUCTOR OI10O0OI00I.INIT (O10O0OO1lIOO0:TRECT);BEGIN INHERITED INIT(O10O0OO1lIOO0 );O100lll0I1l := 0 ;END ;
  111. PROCEDURE OI10O0OI00I.DRAW ;VAR OOllOI000O1l:BYTE;OIlO:INTEGER;OIO1:TDRAWBUFFER;OIOI100IlI0:STRING ;
  112. O1OlOIO0OOOO:INTEGER;BEGIN IF O100lll0I1l =100 THEN O1OlOIO0OOOO := SIZE.X ELSE O1OlOIO0OOOO := (O100lll0I1l * SIZE.X
  113. )DIV 100 ;OIOI100IlI0 := REPCHAR (#177, SIZE.X );FOR OIlO := 1 TO SIZE.X  DO BEGIN IF OIlO <= O1OlOIO0OOOO THEN
  114. OOllOI000O1l := GETCOLOR (2 )ELSE OOllOI000O1l := GETCOLOR (1 );MOVECHAR (OIO1 [ OIlO - 1 ] , OIOI100IlI0 [ OIlO ] ,
  115. OOllOI000O1l , 1 );END ;WRITEBUF (0 , 0 , SIZE.X , 1 , OIO1 );END ;FUNCTION OI10O0OI00I.GETPALETTE :PPALETTE ;
  116. CONST OO10:STRING [ 2 ] =#19#20;BEGIN GETPALETTE := @ OO10 ;END ;PROCEDURE OI10O0OI00I.UPDATE (OOIIOlIl00lO:WORD);
  117. BEGIN O100lll0I1l := OOIIOlIl00lO ;DRAWVIEW ;END ;FUNCTION OI10O0OI00I.VALID (OlIlOOOl0:WORD):BOOLEAN ;BEGIN IF OlIlOOOl0
  118. =CMVALID THEN VALID := (SIZE.X >= 10 )AND (SIZE.Y =1 )ELSE VALID := INHERITED VALID(OlIlOOOl0 );END ;
  119. CONSTRUCTOR OOO001lOO1IO.INIT (VAR O10O0OO1lIOO0:TRECT;OI110IO10Oll:TTITLESTR;OI11Oll000I:LONGINT);VAR OO1I:TRECT;
  120. BEGIN INHERITED INIT(O10O0OO1lIOO0 , OI110IO10Oll );IF OI11Oll000I =0 THEN OI1I01OI0Ol := 1 ELSE OI1I01OI0Ol :=
  121. OI11Oll000I ;OO1I.ASSIGN (SIZE.X - 4 - 4 , 3 , SIZE.X - 4 , 4 );O100lll0I1l := 0 ;Ol010II0OOI0 := NEW (PSTATICTEXT , INIT
  122. (OO1I , '  0%'));INSERT (Ol010II0OOI0 );OO1I.ASSIGN (4 , 4 , SIZE.X - 4 , 5 );OlI01Ol1I := NEW (OI10O0OI011 , INIT (OO1I
  123. ));INSERT (OlI01Ol1I );OO1I.ASSIGN (3 , 2 , SIZE.X - 3 , 3 );OOllI0II0lIO := NEW (PSTATICTEXT , INIT (OO1I , ''));END ;
  124. PROCEDURE OOO001lOO1IO.SETPERC (O101OIl1l00IO:LONGINT);BEGIN LOCK ;FREESTR (Ol010II0OOI0 ^. TEXT );IF O101OIl1l00IO
  125. =OI1I01OI0Ol THEN BEGIN Ol010II0OOI0 ^. TEXT := NEWSTR ('100%');O100lll0I1l := 100 ;END ELSE BEGIN Ol010II0OOI0 ^. TEXT
  126. := NEWSTR (' '+ STRW (O100lll0I1l )+ '%');O100lll0I1l := (O101OIl1l00IO * 100 )DIV OI1I01OI0Ol ;END ;OlI01Ol1I ^. UPDATE
  127. (O100lll0I1l );REDRAW ;UNLOCK ;END ;PROCEDURE OOO001lOO1IO.NEWTEXT (CONST OO1O:STRING );BEGIN FREESTR (OOllI0II0lIO ^.
  128. TEXT );OOllI0II0lIO ^. TEXT := NEWSTR (OO1O );OOllI0II0lIO ^. DRAW ;END ;PROCEDURE CREATESTATUSDLG
  129. (CONST ATITLE:TTITLESTR;ATOTAL:LONGINT;AHELPCTX:WORD);VAR OO1I:TRECT;BEGIN IF APPLICATION <> NIL THEN BEGIN OO1I.ASSIGN
  130. (0 , 0 , 40 , 8 );OO1I.MOVE ((DESKTOP ^. SIZE.X - OO1I.B.X )DIV 2 , (DESKTOP ^. SIZE.Y - OO1I.B.Y )DIV 2 );OOO000O0II0O
  131. := NEW (OOO001lOO1OI , INIT (OO1I , ATITLE , ATOTAL ));DESKTOP ^. INSERT (OOO000O0II0O );END ;END ;
  132. PROCEDURE DISPOSESTATUSDLG ;BEGIN IF OOO000O0II0O <> NIL THEN BEGIN DESKTOP ^. DELETE (OOO000O0II0O );DISPOSE
  133. (OOO000O0II0O , DONE );OOO000O0II0O := NIL ;END ;END ;PROCEDURE STATUSDLGSET (POSITION:LONGINT);BEGIN IF OOO000O0II0O <>
  134. NIL THEN OOO000O0II0O ^. SETPERC (POSITION );END ;PROCEDURE STATUSDLGNEWTEXT (CONST S:STRING );BEGIN IF OOO000O0II0O <>
  135. NIL THEN OOO000O0II0O ^. NEWTEXT (S );END ;PROCEDURE SHOWHELPWINDOW (CONST FILENAME:STRING ;HELPCTX:WORD);
  136. VAR OOII:PWINDOW;OI110Ol101OO:PHELPFILE;O1lO0l00O0Ol:PBUFSTREAM;BEGIN O1lO0l00O0Ol := NEW (PBUFSTREAM , INIT (FILENAME ,
  137. STOPENREAD , 1024 ));OI110Ol101OO := NEW (PHELPFILE , INIT (O1lO0l00O0Ol ));IF O1lO0l00O0Ol ^. STATUS =STOK THEN
  138. BEGIN OOII := NEW (PHELPWINDOW , INIT (OI110Ol101OO , HELPCTX ));IF APPLICATION ^. VALIDVIEW (OOII )<> NIL THEN
  139. BEGIN APPLICATION ^. EXECVIEW (OOII );DISPOSE (OOII , DONE );END ;END ELSE BEGIN PRINTERROR (RSGET1 (WORD (O1lO0l00O0Ol
  140. ^. STATUS ), LONGINT (@ FILENAME )), HCNOCONTEXT );DISPOSE (OI110Ol101OO , DONE );END ;END ;PROCEDURE VIEWASTEXT
  141. (CONST FILENAME:FNAMESTR);VAR OO1l:PTEXTWINDOW;OO1I:TRECT;BEGIN OO1I.ASSIGN (0 , 0 , 72 , 15 );OO1l := NEW (PTEXTWINDOW ,
  142. INIT (OO1I , FILENAME ));OO1l ^. OPTIONS := OO1l ^. OPTIONS OR OFCENTERED ;DESKTOP ^. INSERT (OO1l );END ;
  143. DESTRUCTOR TPOPUPMENU.DONE ;BEGIN DISPOSEMENU (MENU );INHERITED DONE;END ;CONSTRUCTOR TSPINBUTTON.INIT (VAR BOUNDS:TRECT;
  144. ASTRINGS:PSITEM);BEGIN INHERITED INIT(BOUNDS , ASTRINGS );SETCURSOR (1 , 0 );END ;PROCEDURE TSPINBUTTON.DRAW ;
  145. VAR OI1OllllOl1:TDRAWBUFFER;O10OO0OI1IOO0:WORD;BEGIN IF GETSTATE (SFSELECTED )THEN O10OO0OI1IOO0 := GETCOLOR ($0402 )ELSE
  146. O10OO0OI1IOO0 := GETCOLOR ($0301 );MOVECHAR (OI1OllllOl1 , ' ', LO (O10OO0OI1IOO0 ), SIZE.X );IF SEL < STRINGS.COUNT THEN
  147. MOVECSTR (OI1OllllOl1 , #17+ LEFTJUSTIFY (PSTRING (STRINGS.AT (SEL ))^, SIZE.X )+ #16, O10OO0OI1IOO0 );WRITEBUF (0 , 0 ,
  148. SIZE.X , SIZE.Y , OI1OllllOl1 );END ;PROCEDURE TSPINBUTTON.HANDLEEVENT (VAR EVENT:TEVENT);PROCEDURE OIll1OOI0lI ;
  149. VAR OlI1II0l10:TPOINT;BEGIN IF (EVENT.WHAT AND EVMOUSEDOWN <> 0 )OR (EVENT.WHAT AND EVMOUSEAUTO <> 0 )THEN
  150. BEGIN MAKELOCAL (EVENT.WHERE , OlI1II0l10 );IF OlI1II0l10.X =0 THEN BEGIN IF SEL =0 THEN SEL := STRINGS.COUNT - 1 ELSE
  151. DEC (SEL );END ELSE IF OlI1II0l10.X =SIZE.X - 1 THEN BEGIN IF SEL =STRINGS.COUNT - 1 THEN SEL := 0 ELSE INC (SEL );
  152. END ELSE EXIT ;MOVEDTO (SEL );DRAWVIEW ;CLEAREVENT (EVENT );END ;END ;BEGIN OIll1OOI0lI ;INHERITED HANDLEEVENT(EVENT );
  153. END ;PROCEDURE TXINPUTLINE.HANDLEEVENT (VAR EVENT:TEVENT);PROCEDURE O1OOOOlO1I0l (VAR OI1OllllOl1:PEDITBUFFER;
  154. OII0I11l101,OIlIO0I0lOl:WORD);VAR OI11I0Ol11O:STRING ;BEGIN OI11I0Ol11O := '';IF OIlIO0I0lOl > SIZE.X - 2 THEN
  155. OIlIO0I0lOl := SIZE.X - 2 ;MOVE (OI1OllllOl1 ^[ OII0I11l101 ] , OI11I0Ol11O [ 1 ] , OIlIO0I0lOl );OI11I0Ol11O [ 0 ] :=
  156. CHAR (OIlIO0I0lOl );SETDATA (OI11I0Ol11O );END ;CONST O10100OOllO00='!@#$%^&*()-+=[]{};''`:"~\ ,./|<>?';VAR OO1O:STRING ;
  157. BEGIN INHERITED HANDLEEVENT(EVENT );CASE EVENT.WHAT  OF EVKEYBOARD :BEGIN CASE EVENT.KEYCODE  OF KBCTRLLEFT :BEGIN IF
  158. SELSTART <> SELEND THEN SELECTALL (FALSE );GETDATA (OO1O );WHILE (CURPOS > 0 )AND (POS (OO1O [ CURPOS ] , O10100OOllO00
  159. )<> 0 ) DO DEC (CURPOS );WHILE (CURPOS > 0 )AND (POS (OO1O [ CURPOS ] , O10100OOllO00 )=0 ) DO DEC (CURPOS );IF CURPOS <
  160. FIRSTPOS THEN DEC (FIRSTPOS , FIRSTPOS - CURPOS );DRAWVIEW ;END ;KBCTRLRIGHT :BEGIN IF SELSTART <> SELEND THEN SELECTALL
  161. (FALSE );GETDATA (OO1O );WHILE (CURPOS < LENGTH (OO1O ))AND (POS (OO1O [ CURPOS + 1 ] , O10100OOllO00 )=0 ) DO INC
  162. (CURPOS );WHILE (CURPOS < LENGTH (OO1O ))AND (POS (OO1O [ CURPOS + 1 ] , O10100OOllO00 )<> 0 ) DO INC (CURPOS );IF CURPOS
  163. > FIRSTPOS + SIZE.X - 2 THEN INC (FIRSTPOS , CURPOS - (SIZE.X - 2 ));DRAWVIEW ;END ;KBSHIFTINS
  164. :BEGIN WITH CLIPBOARD^ DO O1OOOOlO1I0l (BUFFER , BUFPTR (SELSTART ), SELEND - SELSTART );END ;ELSE EXIT ;END ;CLEAREVENT
  165. (EVENT );END ;EVCOMMAND :IF EVENT.COMMAND =CMPASTE THEN WITH CLIPBOARD^ DO O1OOOOlO1I0l (BUFFER , BUFPTR (SELSTART ),
  166. SELEND - SELSTART );END ;END ;CONSTRUCTOR TLISTVIEWER2.INIT (VAR BOUNDS:TRECT;ANUMCOLS:INTEGER;
  167. AHSCROLLBAR,AVSCROLLBAR:PSCROLLBAR);BEGIN INHERITED INIT(BOUNDS , ANUMCOLS , AHSCROLLBAR , AVSCROLLBAR );OPTIONS :=
  168. OPTIONS OR OFPOSTPROCESS ;TYPEDSTR := NEWSTR (SPC (SIZE.X DIV NUMCOLS + 1 ));END ;PROCEDURE TLISTVIEWER2.HANDLEEVENT
  169. (VAR EVENT:TEVENT);VAR O101O01110I1I:WORD;OIlO:INTEGER;BEGIN OIlO := FOCUSED ;INHERITED HANDLEEVENT(EVENT );IF FOCUSED <>
  170. OIlO THEN TYPEDSTRINDEX := 0 ;CASE EVENT.WHAT  OF EVCOMMAND :BEGIN CASE EVENT.COMMAND  OF CMINSERTITEM , CMBINSERTITEM
  171. :INSERTITEM ;CMDELETEITEM , CMBDELETEITEM :IF FOCUSED < RANGE THEN DELETEITEM ;CMEDITITEM , CMBEDITITEM :IF FOCUSED <
  172. RANGE THEN EDITITEM ;ELSE EXIT ;END ;END ;EVBROADCAST :BEGIN CASE EVENT.COMMAND  OF CMRECEIVEDFOCUS :IF EVENT.INFOPTR =@
  173. SELF THEN ENABLECOMMANDS ([ CMINSERTITEM , CMDELETEITEM ] );CMRELEASEDFOCUS :IF EVENT.INFOPTR =@ SELF THEN
  174. DISABLECOMMANDS ([ CMINSERTITEM , CMDELETEITEM ] );ELSE EXIT ;END ;END ;EVKEYBOARD :BEGIN O101O01110I1I := SIZE.X DIV
  175. NUMCOLS + 1 ;IF (EVENT.CHARCODE IN [ #32.. #255] )AND (TYPEDSTRINDEX < O101O01110I1I )THEN BEGIN INC (TYPEDSTRINDEX );
  176. TYPEDSTR ^[ TYPEDSTRINDEX ] := UPCASE (EVENT.CHARCODE );TYPEDSTR ^[ 0 ] := CHR (TYPEDSTRINDEX );FOR OIlO := 0 TO RANGE -
  177. 1  DO BEGIN IF UPSTR (COPY (GETTEXT (OIlO , O101O01110I1I ), 1 , TYPEDSTRINDEX ))=TYPEDSTR ^THEN
  178. BEGIN INHERITED FOCUSITEM(OIlO );BREAK ;END ;END ;END ELSE BEGIN CASE EVENT.KEYCODE  OF KBDEL , KBBACK :IF TYPEDSTRINDEX
  179. > 0 THEN DEC (TYPEDSTRINDEX );ELSE EXIT ;END ;END ;END ;ELSE EXIT ;END ;IF EVENT.WHAT AND EVBROADCAST =0 THEN CLEAREVENT
  180. (EVENT );END ;PROCEDURE TLISTVIEWER2.INSERTITEM ;BEGIN ABSTRACT ;END ;PROCEDURE TLISTVIEWER2.DELETEITEM ;BEGIN ABSTRACT ;
  181. END ;PROCEDURE TLISTVIEWER2.EDITITEM ;BEGIN ABSTRACT ;END ;CONSTRUCTOR TLISTBOX2.INIT (VAR BOUNDS:TRECT;
  182. ANUMCOLS:INTEGER;AVSCROLLBAR:PSCROLLBAR);BEGIN INHERITED INIT(BOUNDS , ANUMCOLS , AVSCROLLBAR );OPTIONS := OPTIONS OR
  183. OFPOSTPROCESS ;TYPEDSTR := NEWSTR (SPC (SIZE.X DIV NUMCOLS + 1 ));END ;PROCEDURE TLISTBOX2.HANDLEEVENT
  184. (VAR EVENT:TEVENT);VAR O101O01110I1I:WORD;OIlO:INTEGER;BEGIN OIlO := FOCUSED ;INHERITED HANDLEEVENT(EVENT );IF FOCUSED <>
  185. OIlO THEN TYPEDSTRINDEX := 0 ;CASE EVENT.WHAT  OF EVCOMMAND :BEGIN CASE EVENT.COMMAND  OF CMINSERTITEM , CMBINSERTITEM
  186. :INSERTITEM ;CMDELETEITEM , CMBDELETEITEM :IF FOCUSED < RANGE THEN DELETEITEM ;CMEDITITEM , CMBEDITITEM :IF FOCUSED <
  187. RANGE THEN EDITITEM ;ELSE EXIT ;END ;END ;EVBROADCAST :BEGIN CASE EVENT.COMMAND  OF CMRECEIVEDFOCUS :IF EVENT.INFOPTR =@
  188. SELF THEN ENABLECOMMANDS ([ CMINSERTITEM , CMDELETEITEM ] );CMRELEASEDFOCUS :IF EVENT.INFOPTR =@ SELF THEN
  189. DISABLECOMMANDS ([ CMINSERTITEM , CMDELETEITEM ] );ELSE EXIT ;END ;END ;EVKEYBOARD :BEGIN O101O01110I1I := SIZE.X DIV
  190. NUMCOLS + 1 ;IF (EVENT.CHARCODE IN [ #32.. #255] )AND (TYPEDSTRINDEX < O101O01110I1I )THEN BEGIN INC (TYPEDSTRINDEX );
  191. TYPEDSTR ^[ TYPEDSTRINDEX ] := UPCASE (EVENT.CHARCODE );TYPEDSTR ^[ 0 ] := CHR (TYPEDSTRINDEX );FOR OIlO := 0 TO RANGE -
  192. 1  DO BEGIN IF UPSTR (COPY (GETTEXT (OIlO , O101O01110I1I ), 1 , TYPEDSTRINDEX ))=TYPEDSTR ^THEN
  193. BEGIN INHERITED FOCUSITEM(OIlO );BREAK ;END ;END ;END ELSE BEGIN CASE EVENT.KEYCODE  OF KBDEL , KBBACK :IF TYPEDSTRINDEX
  194. > 0 THEN DEC (TYPEDSTRINDEX );ELSE EXIT ;END ;END ;END ;ELSE EXIT ;END ;IF EVENT.WHAT AND EVBROADCAST =0 THEN CLEAREVENT
  195. (EVENT );END ;PROCEDURE TLISTBOX2.INSERTITEM ;BEGIN ABSTRACT ;END ;PROCEDURE TLISTBOX2.DELETEITEM ;BEGIN ABSTRACT ;END ;
  196. PROCEDURE TLISTBOX2.EDITITEM ;BEGIN ABSTRACT ;END ;PROCEDURE TPARAMINPUTBOX.INSERTITEM ;VAR OO1O:STRING ;BEGIN OO1O :=
  197. '';IF INPUTSTRING ('Parameter', OO1O , 255 , '', HCNOCONTEXT )=CMOK THEN BEGIN LIST ^. ATINSERT (FOCUSED , NEWSTR (OO1O
  198. ));SETRANGE (RANGE + 1 );INC (FOCUSED );DRAWVIEW ;END ;END ;PROCEDURE TPARAMINPUTBOX.DELETEITEM ;VAR OO1O:STRING ;
  199. BEGIN IF FOCUSED >= RANGE - 1 THEN EXIT ;IF USERANSWER ('Delete current item?', HCNOCONTEXT )=YES THEN BEGIN LIST ^.
  200. ATFREE (FOCUSED );SETRANGE (RANGE - 1 );DRAWVIEW ;END ;END ;PROCEDURE TPARAMINPUTBOX.EDITITEM ;VAR OO1O:STRING ;BEGIN IF
  201. FOCUSED >= RANGE - 1 THEN EXIT ;OO1O := GETSTR (PSTRING (LIST ^. AT (FOCUSED )));IF INPUTSTRING ('Parameter', OO1O , 255
  202. , '', HCNOCONTEXT )=CMOK THEN BEGIN LIST ^. FREEITEM (LIST ^. AT (FOCUSED ));LIST ^. ATPUT (FOCUSED , NEWSTR (OO1O ));
  203. DRAWVIEW ;END ;END ;PROCEDURE TSTRINGINPUTBOX.INSERTITEM ;VAR OO1O:STRING ;BEGIN OO1O := '';IF INPUTSTRING ('Parameter',
  204. OO1O , 255 , '', HCNOCONTEXT )=CMOK THEN BEGIN LIST ^. INSERT (NEWSTR (OO1O ));SETRANGE (RANGE + 1 );INC (FOCUSED );
  205. DRAWVIEW ;END ;END ;PROCEDURE TSTRINGINPUTBOX.DELETEITEM ;VAR OO1O:STRING ;BEGIN IF USERANSWER ('Delete current item?',
  206. HCNOCONTEXT )=YES THEN BEGIN LIST ^. ATFREE (FOCUSED );SETRANGE (RANGE - 1 );DRAWVIEW ;END ;END ;
  207. PROCEDURE TSTRINGINPUTBOX.EDITITEM ;VAR OO1O:STRING ;BEGIN OO1O := GETSTR (PSTRING (LIST ^. AT (FOCUSED )));IF
  208. INPUTSTRING ('Parameter', OO1O , 255 , '', HCNOCONTEXT )=CMOK THEN BEGIN LIST ^. FREEITEM (LIST ^. AT (FOCUSED ));LIST ^.
  209. INSERT (NEWSTR (OO1O ));DRAWVIEW ;END ;END ;BEGIN BBGUI.PRINTERROR := PRINTERROR ;BBGUI.INFOBOX := INFOBOX ;
  210. BBGUI.USERANSWER := USERANSWER ;END .
  211.