1: DECLARE SUB LoadWindowsDrivers () 2: DECLARE SUB MsgBox (ms$, Tit$) 3: DECLARE SUB Windows (X!, Y!, Wd!, Ht!, Style%, BackColor!, ForeColor!, Visible!, Caption$, Name$) 4: DECLARE SUB ModifyStatus (frm$, l!, t!, w!, H!, s!, bc!, fc!, v!, c$) 5: DECLARE SUB DoEvents () 6: DECLARE SUB QueryUnload () 7: DECLARE SUB AddForm (frmID$) 8: DECLARE SUB Background (n!) 9: DECLARE SUB Refresh (frm$, n!) 10: DECLARE SUB Button2 (x1!, y1!, x2!, y2!, p!, t$) 11: DECLARE SUB MouseHide () 12: DECLARE SUB Print2 (X!, Y!, cv!, t$) 13: DECLARE SUB MouseShow () 14: DECLARE SUB MouseStatus (lb%, rb%, xMouse%, yMouse%) 15: DECLARE SUB Sleep2 (t!) 16: DECLARE SUB ConvWindInf (gg$, p1!, p2!, p3!, p4!, p5!, p6!, p7!, p8!, tt$, nm$) 17: DECLARE SUB Font (t$, cl!) 18: DECLARE FUNCTION LastPart$ (t$, s$) 19: DECLARE SUB LoadFont (f$) 20: DECLARE SUB MouseDriver (ax%, bx%, cx%, dx%) 21: DECLARE FUNCTION MouseInit% () 22: DECLARE FUNCTION TextWidth! (t$) 23: DECLARE FUNCTION TRIMS$ (n!, t$) 24: DECLARE SUB ChangePal (Red%, Green%, Blue%, syscolor%) 25: '------------------------ Setup Neccasary Drivers ----------------------' 26: CONST True = -1 27: CONST False = NOT (True) 28: DIM SHARED Txt(255) AS STRING 29: DIM SHARED Mouse$ 30: DIM SHARED NoMouse% 31: Mouse$ = SPACE$(57) 32: LoadWindowsDrivers 33: '---------------------------- Code Begins Here --------------------------' 34: Windows 0, 0, 640, 480, 2, 8, 0, True, "America OnLine", "Form1" 35: 36: DO UNTIL 1 = 2: DoEvents: LOOP 37: 38: QueryUnload 39: END 40: '---------------------------------- GOSUBS --------------------------------' 41: ResumeNext: 42: RESUME NEXT 43: 44: TimerUp: 45: DoEvents 46: RETURN 47: '--------------------------------- DATA for mouse ----------------------' 48: DATA 55,89,E5,8B,5E,0C,8B,07,50,8B,5E,0A,8B,07,50,8B 49: DATA 5E,08,8B,0F,8B,5E,06,8B,17,5B,58,1E,07,CD,33,53 50: DATA 8B,5E,0C,89,07,58,8B,5E,0A,89,07,8B,5E,08,89,0F 51: DATA 8B,5E,06,89,17,5D,CA,08,00 52: 53: 'Adds a form to the QBWinem environment 54: 'frmID$ = Left Top Width Height Style ForeColor BackColor Visible Len(Caption)Caption Name 55: SUB AddForm (frmID$) 56: X = FREEFILE 57: OPEN "WIND.WND" FOR RANDOM ACCESS READ AS #X 58: IF LOF(X) = 0 THEN 59: CLOSE X: OPEN "WIND.WND" FOR OUTPUT AS #X 60: ELSE 61: CLOSE X 62: OPEN "WIND.WND" FOR INPUT AS #X 63: DO UNTIL EOF(X) 64: LINE INPUT #X, g$ 65: IF LastPart$(g$, " ") = LastPart$(frmID$, " ") THEN CLOSE X: EXIT SUB 66: LOOP 67: CLOSE X 68: OPEN "WIND.WND" FOR APPEND AS #X 69: END IF 70: PRINT #X, frmID$ 71: CLOSE X 72: END SUB 73: 74: 'Sets the Background color 75: 'n = a vaild color (0-15) 76: SUB Background (n) 77: LINE (0, 0)-(640, 480), n, BF 78: X = FREEFILE 79: OPEN "Back.WND" FOR OUTPUT AS #X 80: PRINT #X, TRIMS$(n, "") 81: CLOSE X 82: Refresh "", 1 83: END SUB 84: 85: 'Draws a button 86: 'x1=starting x pos of button 87: 'y1=starting y pos of button 88: 'x2=ending x pos of button 89: 'y2=ending y pos of button 90: 'p = (0-3) 0=unpushed:1=pushed:3=on enter push and release 91: 't$=Text On Button 92: SUB Button2 (x1, y1, x2, y2, p, t$) 93: MouseHide 94: IF p = 1 OR p = 4 THEN q = 1: GOTO PUSHED 95: LINE (x1, y1)-(x1, y2 - 1), 15 96: LINE (x1, y1)-(x2 - 1, y1), 15 97: LINE (x2 - 1, y1 + 1)-(x2 - 1, y2 - 1), 8 98: LINE (x2 - 1, y2 - 1)-(x1 + 1, y2 - 1), 8 99: LINE (x1, y2)-(x2, y2), 0 100: LINE (x2, y2)-(x2, y1), 0 101: LINE (x1 + 1, y1 + 1)-(x2 - 2, y2 - 2), 7, BF 102: IF p = 6 THEN Print2 INT(((x2 - x1) / 2) - ((LEN(t$) / 2) * 8) + x1), y1 + 14, 0, t$: MouseShow: DO UNTIL Clk% <> 0 AND ClX% > x1 - 1 AND ClX% < x2 + 1 AND ClY% > y1 - 1 AND ClY% < y2 + 1 OR INKEY$ = CHR$(13): MouseStatus l%, r%, ClX%, ClY%: Clk% = l% + r%: LOOP: Sleep2 .13: MouseHide: GOTO PUSHED 103: IF p = 5 THEN Print2 INT(((x2 - x1) / 2) - ((LEN(t$) / 2) * 8) + x1), y1 + 14, 0, t$: DO UNTIL Clk = 1 AND ClX > x1 - 1 AND ClX < x2 + 1 AND ClY > y1 - 1 AND ClY < y2 + 1: LOOP: Sleep2 .13: GOTO PUSHED 104: IF p = 3 THEN Print2 INT(((x2 - x1) / 2) - ((LEN(t$) / 2) * 8) + x1), y1 + 14, 0, t$: MouseShow: DO UNTIL INKEY$ = CHR$(13): LOOP: q = 1: MouseHide ELSE GOTO ssd 105: PUSHED: 106: LINE (x1, y1)-(x1, y2), 0 107: LINE (x1, y1)-(x2, y1), 0 108: LINE (x1 + 1, y1 + 1)-(x1 + 1, y2 - 1), 8 109: LINE (x1 + 1, y1 + 1)-(x2 - 1, y1 + 1), 8 110: LINE (x1 + 1, y2)-(x2, y2), 15 111: LINE (x2, y2)-(x2, y1 + 1), 15 112: LINE (x1 + 2, y1 + 2)-(x2 - 1, y2 - 1), 7, BF 113: ssd: 114: IF LEN(t$) * 8 > x2 - x1 THEN EXIT SUB 115: wdt = x2 - x1 116: Print2 INT((wdt / 2) - ((LEN(t$) / 2) * 8) + x1), y1 + 14 + q, 0, t$ 117: IF p > 2 THEN Sleep2 .13 118: IF p > 2 THEN Button2 x1, y1, x2, y2, 0, t$ 119: MouseShow 120: END SUB 121: 122: SUB ChangePal (Red%, Green%, Blue%, syscolor%) 123: palmask = &H3C6 124: palregrd = &H3CF 125: palregwr = &H3C8 126: paldata = &H3C9 127: OUT palmask, &HFF 128: OUT palregwr, syscolor% 129: OUT paldata, Red% 130: OUT paldata, Green% 131: OUT paldata, Blue% 132: END SUB 133: 134: 'Breaks form information text into neccasary component 135: 'gg$=form id 136: 'p1 - nm$ = used for sending all property's at once 137: ' 138: SUB ConvWindInf (gg$, p1, p2, p3, p4, p5, p6, p7, p8, tt$, nm$) 139: DIM FirstS(7) 140: FirstS(0) = VAL(MID$(gg$, 1, INSTR(gg$, " "))) 141: FOR q = 1 TO 7 142: CNtr = INSTR(CNtr + 1, gg$, " ") 143: ln = INSTR(CNtr + 1, gg$, " ") - CNtr 144: FirstS(q) = VAL(MID$(gg$, CNtr, ln)) 145: NEXT q 146: NmLN = ASC(MID$(gg$, CNtr + ln + 1, 1)) 147: FOR q = CNtr + ln + 2 TO NmLN + CNtr + ln + 1 148: tt$ = tt$ + MID$(gg$, q, 1) 149: NEXT q 150: CNtr = q 151: FOR q = CNtr + 1 TO LEN(gg$) 152: nm$ = nm$ + MID$(gg$, q, 1) 153: NEXT q 154: p1 = FirstS(0) 155: p2 = FirstS(1) 156: p3 = FirstS(2) 157: p4 = FirstS(3) 158: p5 = FirstS(4) 159: p6 = FirstS(5) 160: p7 = FirstS(6) 161: p8 = FirstS(7) 162: END SUB 163: 164: SUB DoEvents 165: MouseStatus l%, r%, X%, Y% 166: a$ = INKEY$ 167: IF a$ = CHR$(27) THEN QueryUnload: END 168: IF a$ = CHR$(9) THEN MsgBox "Tab key was pressed", "/\/\ /-\ CRO /\/\ /-\ |\|" 169: IF a$ = " " THEN ModifyStatus "Form1", -1, -1, -1, -1, -1, -1, -1, -3, "" 170: END SUB 171: 172: 'Draws text on the screen using my fonts 173: 't$ = Text to be printed 174: 'cl = color of text (0-15) 175: SUB Font (t$, cl) 176: IF cl = -1 THEN ELSE f$ = "C" + LTRIM$(RTRIM$(STR$(cl))): DRAW "X" + VARPTR$(f$) 177: IF Txt(32) = "" THEN EXIT SUB 178: FOR qww = 1 TO LEN(t$) 179: IF ASC(MID$(t$, qww, 1)) = 0 THEN DRAW "X" + VARPTR$(Txt(32)) ELSE DRAW "X" + VARPTR$(Txt(ASC(MID$(t$, qww, 1)))): DRAW "BL": GOTO 1011 180: 1011 NEXT qww 181: END SUB 182: 183: ' Used for finding the lastpart of a string 184: 't$=text to find last part of 185: 's$=seperator, what denotes the lastpart from the rest of the string 186: FUNCTION LastPart$ (t$, s$) 187: FOR q = LEN(t$) TO 1 STEP -1 188: IF MID$(t$, q, 1) = s$ THEN EXIT FOR ELSE d$ = MID$(t$, q, 1) + d$ 189: NEXT q 190: LastPart$ = d$ 191: END FUNCTION 192: 193: 'Loads a font from disk 194: 'f$ = Font name (PB version loads several) 195: SUB LoadFont (f$) 196: ON ERROR GOTO ResumeNext 197: OPEN f$ FOR INPUT AS #1: t = 0 198: DO UNTIL EOF(1) OR FRE("") < 1000 199: LINE INPUT #1, Txt(t) 200: IF t = 255 THEN EXIT DO 201: t = t + 1 202: LOOP 203: CLOSE 1 204: END SUB 205: 206: ' Just a sub to make everything look neat 207: SUB LoadWindowsDrivers 208: SCREEN 12 209: LoadFont "\FONTS\MSSANSSE.FNT" 210: Background 3 211: ON TIMER(1) GOSUB TimerUp: TIMER ON 212: 213: FOR I% = 1 TO 57: READ a$: H$ = CHR$(VAL("&H" + a$)): MID$(Mouse$, I%, 1) = H$: NEXT I% 214: ms% = MouseInit% 215: IF NOT ms% THEN PRINT "Mouse not found": NoMouse% = True 216: MouseShow 217: ChangePal 0, 0, 165, 1 218: ChangePal 0, 0, 255, 9 219: END SUB 220: 221: ' Allows You to modify the status of a form 222: 'frm$=Form name 223: 'l - fc= (-1 to ignore) 224: 'v= visible (-2 to ignore) 225: 'c$=Caption (Null to ignore) 226: SUB ModifyStatus (frm$, l, t, w, H, s, bc, fc, v, c$) 227: X = FREEFILE 228: OPEN "WIND.WND" FOR INPUT AS #X 229: z = FREEFILE 230: OPEN "WIND.TMP" FOR OUTPUT AS #z 231: DO UNTIL EOF(X) 232: LINE INPUT #1, g$ 233: IF LastPart$(frm$, " ") = LastPart$(g$, " ") THEN 234: ConvWindInf g$, p1, p2, p3, p4, p5, p6, p7, p8, ttl$, Nam$ 235: op8 = p8 236: IF l = -1 THEN ELSE p1 = l: EntSc = 1 237: IF t = -1 THEN ELSE p2 = t: EntSc = 1 238: IF w = -1 THEN ELSE p3 = w: EntSc = 1 239: IF H = -1 THEN ELSE p4 = H: EntSc = 1 240: IF s = -1 THEN ELSE p5 = s 241: IF bc = -1 THEN ELSE p6 = bc 242: IF fc = -1 THEN ELSE p7 = fc 243: IF v = -3 THEN v = NOT (p8) 244: IF v = -2 THEN ELSE p8 = v: EntSc = 1 245: IF c$ = "" THEN ELSE ttl$ = c$ 246: IF op8 = False THEN EntSc = 0 247: IF LEN(g$) + LOC(X) >= LOF(X) THEN ELSE EntSc = 1 248: g$ = TRIMS$(p1, "") + " " + TRIMS$(p2, "") + " " + TRIMS$(p3, "") + " " + TRIMS$(p4, "") + " " + TRIMS$(CSNG(p5), "") + " " + TRIMS$(p6, "") + " " + TRIMS$(p7, "") + " " + TRIMS$(p8, "") + " " + CHR$(LEN(ttl$)) + ttl$ + " " + TRIMS$(0, Nam$) 249: END IF 250: PRINT #z, g$ 251: LOOP 252: CLOSE X, z 253: KILL "WIND.WND" 254: NAME "WIND.TMP" AS "WIND.WND" 255: IF (op8 = False AND p8 = False) THEN ELSE Refresh frm$, EntSc 256: END SUB 257: 258: SUB MouseDriver (ax%, bx%, cx%, dx%) 259: IF NoMouse% = True THEN EXIT SUB 260: DEF SEG = VARSEG(Mouse$) 261: Mouse% = SADD(Mouse$) 262: CALL Absolute(ax%, bx%, cx%, dx%, Mouse%) 263: END SUB 264: 265: SUB MouseHide 266: MouseDriver 2, 0, 0, 0 267: END SUB 268: 269: FUNCTION MouseInit% 270: ax% = 0 271: MouseDriver ax%, 0, 0, 0 272: MouseInit% = ax% 273: END FUNCTION 274: 275: SUB MouseShow 276: MouseDriver 1, 0, 0, 0 277: END SUB 278: 279: SUB MouseStatus (lb%, rb%, xMouse%, yMouse%) 280: ax% = 3 281: MouseDriver ax%, bx%, cx%, dx% 282: lb% = ((bx% AND 1) <> 0) 283: rb% = ((bx% AND 2) <> 0) 284: xMouse% = cx% 285: yMouse% = dx% 286: END SUB 287: 288: 'Moves a form 289: SUB Move (nm$, left, top) 290: ModifyStatus nm$, left, top, -1, -1, -1, -1, -1, -1, "" 291: END SUB 292: 293: SUB MsgBox (ms$, Tit$) 294: MouseHide 295: wt$ = "OK" 296: s = 17 297: v = 15 298: s = s + v 299: FOR w = 1 TO LEN(ms$): l = l + 1: IF MID$(ms$, w, 1) = CHR$(13) THEN s = s + v 300: NEXT w 301: IF LEN(Tit$) >= LEN(ms$) THEN pix = INT(LEN(Tit$) * 8.4) ELSE pix = INT(LEN(ms$) * 8) 302: IF INT(LEN(wt$) * 8.4) > pix THEN pix = INT(LEN(" (Press ENTER to continue.)") * 8.4) 303: X = 320 - INT(pix / 2) 304: Y = 175 - s 305: DIM back(1 TO 10998) 306: GET (X, Y)-(X + pix, Y + s + v), back 307: LINE (X + 1, Y + 1)-(X + pix - 1, Y + v), 1, BF 308: m$ = "BM" + RTRIM$(LTRIM$(STR$(X + 5))) + ", " + RTRIM$(LTRIM$(STR$(Y + v + 1))) 309: DRAW "X" + VARPTR$(m$) 310: Font Tit$, 15 311: LINE (X, Y)-(X + pix, Y + s + v), 0, B 312: LINE (X, Y + v)-(X + pix, Y + s + v), 0, B 313: LINE (X + 1, Y + v + 1)-(X + pix - 1, Y + s + v - 1), 7, BF 314: m$ = "BM" + RTRIM$(LTRIM$(STR$(X + 2))) + ", " + RTRIM$(LTRIM$(STR$(Y + v + v + 1))) 315: DRAW "X" + VARPTR$(m$) 316: j = Y 317: FOR a = 1 TO LEN(ms$) 318: IF MID$(ms$, a, 1) = CHR$(13) THEN j = j + v: m$ = "BM" + RTRIM$(LTRIM$(STR$(X + 2))) + ", " + RTRIM$(LTRIM$(STR$(j + v + v + 1))): DRAW "X" + VARPTR$(m$) 319: Font MID$(ms$, a, 1), 0 320: NEXT a 321: j = j + v: m$ = "BM" + RTRIM$(LTRIM$(STR$(INT(X + (pix / 2) + (LEN(wt$) / 2) - 30)))) + ", " + RTRIM$(LTRIM$(STR$(j + v + v + 1))): DRAW "X" + VARPTR$(m$) 322: 'Font wt$ 323: d = INT(X + (pix / 2) + (LEN(wt$) / 2) - 30) 324: j = INT(j + v + v + 1) 325: m = 117 326: n = -107 327: MouseShow 328: Button2 j - n, d - m, j + 35 - n, d + 14 - m, 6, wt$ 329: PUT (X, Y), back, PSET 330: END SUB 331: 332: SUB Print2 (X, Y, cv, t$) 333: IF X = -1 AND Y = -1 THEN d$ = "C" + LTRIM$(RTRIM$(STR$(cv))): GOTO 3 334: IF X = -2 THEN X = (POS(0) * 8) - 7: g = -2 335: IF Y = -2 THEN Y = CSRLIN * 16: n = -2 336: xxx$ = LTRIM$(RTRIM$(STR$(X))) 337: yyy$ = LTRIM$(RTRIM$(STR$(Y))) 338: ccc$ = " C" + LTRIM$(RTRIM$(STR$(cv))) 339: 'LOCATE 1, 1: PRINT d$ 340: 3 PSET (X, Y), POINT(X, Y) 341: Font t$, cv 342: IF g = -2 THEN LOCATE CSRLIN, POS(0) + LEN(t$) 343: IF n = -2 THEN LOCATE CSRLIN + 1, 1 344: END SUB 345: 346: 'Does nessacery stuff before shutting down 347: SUB QueryUnload 348: KILL "WIND.WND" 349: KILL "BACK.WND" 350: END SUB 351: 352: ' Refreshes a form or the screen 353: 'frm$=Name of form to refresh (ignored if n=1) 354: 'n=Refresh screen (0 to ignore) 355: SUB Refresh (frm$, n) 356: IF n = 1 THEN 357: OPEN "WIND.WND" FOR RANDOM AS #1 358: IF LOF(1) = 0 THEN CLOSE 1: EXIT SUB ELSE CLOSE 1 359: OPEN "WIND.WND" FOR INPUT AS #1 360: DIM FirstS(6) AS SINGLE 361: OPEN "BACK.WND" FOR INPUT AS #2: INPUT #2, Bck: CLOSE #2 362: MouseHide 363: LINE (0, 0)-(640, 480), Bck, BF 364: DO UNTIL EOF(1) 365: LINE INPUT #1, gg$ 366: ConvWindInf gg$, p1, p2, p3, p4, p5, p6, p7, p8, tt$, nm$ 367: Windows p1, p2, p3, p4, CINT(p5), p6, p7, p8, tt$, nm$ 368: CNtr = 0: ln = 0: FOR q = 0 TO 5: FirstS(q) = 0: NEXT q: tt$ = "": nm$ = "" 369: LOOP 370: CLOSE 1 371: MouseShow 372: EXIT SUB 373: END IF 374: OPEN "WIND.WND" FOR RANDOM AS #1 375: IF LOF(1) = 0 THEN CLOSE 1: EXIT SUB ELSE CLOSE 1 376: OPEN "WIND.WND" FOR INPUT AS #1 377: DO UNTIL EOF(1) 378: LINE INPUT #1, gg$ 379: IF LastPart$(gg$, " ") = frm$ THEN ConvWindInf gg$, p1, p2, p3, p4, p5, p6, p7, p8, tt$, nm$: Windows p1, p2, p3, p4, CINT(p5), p6, p7, p8, tt$, nm$ 380: LOOP 381: CLOSE 1 382: END SUB 383: 384: SUB Sleep2 (t) 385: a = TIMER 386: DO UNTIL TIMER >= a + t: LOOP 387: END SUB 388: 389: FUNCTION TextWidth (t$) 390: FOR q = 1 TO LEN(t$) 391: ta$ = Txt$(ASC(MID$(t$, q, 1))) 392: FOR m = 1 TO LEN(ta$) 393: IF LCASE$(MID$(ta$, m, 2)) = "br" THEN sz = sz + 1 394: IF LCASE$(MID$(ta$, m, 2)) = "bl" THEN sz = sz - 1 395: NEXT m 396: NEXT q 397: TextWidth = sz 398: END FUNCTION 399: 400: FUNCTION TRIMS$ (n, t$) 401: IF t$ = "" THEN TRIMS$ = LTRIM$(RTRIM$(STR$(n))) ELSE TRIMS$ = LTRIM$(RTRIM$(t$)) 402: END FUNCTION 403: 404: SUB Windows (X, Y, Wd, Ht, Style%, BackColor, ForeColor, Visible, Caption$, Name$) 405: IF Visible = False THEN GOTO DoNotShow 406: MouseHide 407: x2 = X + Wd 408: y2 = Y + Ht 409: IF Style% = 2 OR Style% = 3 THEN 410: LINE (X, Y)-(X, Y + Ht), 7 411: LINE (X, Y)-(X + Wd, Y), 7 412: LINE (X + 1, Y + 1)-(X + 1, Y + Ht - 1), 15 413: LINE (X + 1, Y + 1)-(X + Wd - 1, Y + 1), 15 414: LINE (X + 2, Y + 2)-(X + Wd - 2, Y + 2), 7 415: LINE (X + 2, Y + 2)-(X + 2, Y + Ht - 2), 7 416: LINE (X, Y + Ht)-(X + Wd, Y + Ht), 0 417: LINE (X + Wd, Y)-(X + Wd, Y + Ht), 0 418: LINE (X + 1, Y + Ht - 1)-(X + Wd - 1, Y + Ht - 1), 8 419: LINE (X + Wd - 1, Y + 1)-(X + Wd - 1, Y + Ht - 1), 8 420: LINE (X + 2, Y + Ht - 2)-(X + Wd - 2, Y + Ht - 2), 7 421: LINE (X + Wd - 2, Y + 2)-(X + Wd - 2, Y + Ht - 2), 7 422: LINE (X + 3, Y + 3)-(X + Wd - 3, Y + Ht - 3), BackColor, BF 423: IF Caption$ <> "" THEN LINE ((X + 3), Y + 3)-(X + Wd - 3, Y + 19), 1, BF 424: 'IF TextWidth(Caption$) > (X + Wd) / 2 THEN Caption$ = LEFT$(Caption$, 1) + "..." 425: Print2 ((X + 2 + 20) - (Style% - 2) * 18), Y + 17, 15, Caption$ 426: END IF 427: IF Style% = 0 THEN LINE (X, Y)-(X + Wd, Y + Ht), BackColor, BF 428: IF Style% = 1 THEN 429: LINE (X, Y)-(X + Wd, Y + Ht), 0, B 430: LINE (X + 1, Y + 1)-(X + Wd - 1, Y + Ht - 1), BackColor, BF 431: IF Caption$ <> "" THEN LINE (X + 1, Y + 1)-(X + Wd - 1, Y + 18), 1, BF 432: Print2 (X + 2 + 20), Y + 17, 15, Caption$ 433: END IF 434: MouseShow 435: DoNotShow: 436: frm$ = TRIMS$(X, "") + " " + TRIMS$(Y, "") + " " + TRIMS$(Wd, "") + " " + TRIMS$(Ht, "") + " " + TRIMS$(CSNG(Style%), "") + " " + TRIMS$(BackColor, "") + " " + TRIMS$(ForeColor, "") + " " + TRIMS$(Visible, "") + " " + CHR$(LEN(Caption$)) + Caption$ + " " + TRIMS$(0, Name$) 437: AddForm frm$ 438: END SUB 439: |