$CPU 8086 'make compatible with XT systems $LIB ALL OFF 'turn off all PowerBASIC libraries $ERROR ALL OFF 'turn off all PowerBASIC error checking $OPTIMIZE SIZE 'optimize for smaller code $COMPILE UNIT 'compile to a UNIT (.PBU) '$COMPILE EXE 'compile to a UNIT (.PBU) DEFINT A-Z 'Required for all numeric functions, forces PB to not 'include floating point in UNIT (makes it smaller) '/*-------------------------------------------------------------------- DECLARE SUB CALCBYTE(ATTR,FCOLOR%,BCOLOR%) DECLARE FUNCTION MKATTR(BYVAL FC%,BYVAL BC%) AS INTEGER DECLARE SUB SAY(BYVAL Row AS INTEGER, BYVAL Col AS INTEGER, BYVAL Text AS STRING, BYVAL Attr AS INTEGER) '/*-------------------------------------------------------------------- $CODE SEG "MLIB1" '/*-------------------------------------------------------------------- ' BUTTON TEXT$,PRESS,ROW,COL,HOTKEYATTR,BUTTONATTR,ATTR ' Display Button. ' Prints a pressable button. ' TEXT$ = Text on button ' PRESS = Display the button ' 0 = Paint it ' 1 = Press it ' ROW = Row to print button ' COL = Column to print button ' HOTKEYATTR = Color of hotkey ' BUTTONATTR = Color of button and button text ' ATTR = Color of screen behind/around button ' ' Button shadow is always black. ' ' EXAMPLE: Button " @YES ",0,10,12,12,112,31 ' '/*-------------------------------------------------------------------- SUB Button(TEXT$,PRESS,ROW,COL,HOTKEY,BATTR,ATTR)PUBLIC CalcByte ATTR,FGround%,BGround% CalcByte BATTR,BtFG%,BtBG% SELECT CASE PRESS CASE 1 SAY ROW,COL+1,REMOVE$(TEXT$,"@"),BATTR SAY ROW,COL," ",MKATTR(0,BGround%) SAY ROW+1,COL,STRING$(LEN(REMOVE$(TEXT$,"@")),32),MKATTR(0,BGround%) DELAY .2: GOTO Repaint 'reset the button after a press CASE 2 SAY ROW,COL+1,REMOVE$(TEXT$,"@"),BATTR SAY ROW,COL," ",MKATTR(0,BGround%) SAY ROW+1,COL,STRING$(LEN(REMOVE$(TEXT$,"@")),32),MKATTR(0,BGround%) CASE ELSE Repaint: IF INSTR(TEXT$,"@") THEN HotKeyPos% = INSTR(TEXT$,"@") Fixedup$ = REMOVE$(TEXT$,"@") Front$ = LEFT$(Fixedup$,(HotKeyPos% - 1)) HotKey$ = MID$(Fixedup$,(HotKeyPos%),1) Back$ = RIGHT$(Fixedup$,LEN(Fixedup$) - HotKeyPos%) SAY ROW,COL,FRONT$,BATTR SAY ROW,COL+HotKeyPos%-1,HotKey$,MKATTR(HOTKEY,BtBG) SAY ROW,COL+HotKeyPos%,Back$,BATTR ELSE SAY ROW,COL,TEXT$,BATTR END IF SAY ROW,COL+LEN(REMOVE$(TEXT$,"@")),"Ü",MKATTR(0,BGround) SAY ROW+1,Col+1,STRING$(LEN(REMOVE$(TEXT$,"@")),223),MKATTR(0,BGround) END SELECT END SUB ''/*------------------------------------------------------------------- ' $INCLUDE "C:\CODE\MLIB\MLIB.INC" ' SAY 1,1,STRING$(2000,"°"),31 ' BUTTON "@Yesterday",0,10,10,12,48,31 ' BUTTON "@Today",0,10,22,12,112,31 ' Y$ = GETKEY ' BUTTON "@Yesterday",1,10,10,12,48,31 '/* utton3D(TEXT$,Active%,ROW,COL,HOTKEY)PUBLIC ' BUTTON3D "@Another Day",1,5,5,12 ' Y$ = GETKEY ' BUTTON3D "@Another Day",3,5,5,12 ' Y$ = GETKEY '