/******************************************************************************\ * PROGRAM NAME: xRulerGui * * DESCRIPTION: Display a moveable ruler * * AUTHOR: dps * * DATE WRITTEN: 06/01/95 * \******************************************************************************/ DEF VAR filler AS CHAR FORMAT "x(80)" NO-UNDO. DEF VAR lpos AS INTEGER INITIAL 1 NO-UNDO. DEF VAR lsize AS INTEGER INITIAL 1 NO-UNDO. DEF VAR pos AS INTEGER INITIAL 1 NO-UNDO. DEF VAR rule1 AS CHAR FORMAT "x(80)" NO-UNDO INITIAL " 1 2 3 4 5 6 7 8". DEF VAR rule2 AS CHAR FORMAT "x(80)" NO-UNDO INITIAL "12345678901234567890123456789012345678901234567890123456789012345678901234567890". DEF FRAME xruler filler SKIP rule1 VIEW-AS TEXT rule2 VIEW-AS TEXT WITH ROW pos COLUMN 1 NO-BOX NO-LABELS OVERLAY WIDTH 114 FONT 0. ASSIGN CURRENT-WINDOW:WIDTH = FRAME xruler:WIDTH CURRENT-WINDOW:FONT = 0. REPEAT: IF LASTKEY = KEYCODE("cursor-up") THEN DO: IF pos > 1 THEN pos = pos - 1. END. ELSE IF LASTKEY = KEYCODE("cursor-down") THEN DO: IF pos < 20 THEN pos = pos + 1. END. ELSE IF KEYFUNCTION(LASTKEY) = "home" THEN DO: pos = 1. END. ELSE IF KEYFUNCTION(LASTKEY) = "end" THEN DO: pos = 20. END. ELSE IF KEYFUNCTION(LASTKEY) = "cursor-right" THEN DO: IF lpos < 81 - lsize THEN lpos = lpos + 1. END. ELSE IF KEYFUNCTION(LASTKEY) = "cursor-left" THEN DO: IF lpos > 1 THEN lpos = lpos - 1. END. ELSE IF KEYFUNCTION(LASTKEY) = "+" OR KEYFUNCTION(LASTKEY) = "=" THEN DO: IF lsize + lpos < 81 THEN lsize = lsize + 1. IF lsize + lpos > 79 THEN BELL. END. ELSE IF KEYFUNCTION(LASTKEY) = "-" OR KEYFUNCTION(LASTKEY) = "_" THEN DO: IF lsize > 1 THEN lsize = lsize - 1. END. ELSE IF KEYFUNCTION(LASTKEY) = "end-error" THEN LEAVE. HIDE FRAME xruler. DISPLAY FILL(" ",lpos - 1) + FILL("X",lsize) @ filler SKIP rule1 rule2 WITH FRAME xruler. STATUS DEFAULT "ROW: " + STRING(pos,"99") + " COL: " + STRING(lpos,"99") + " SIZE: " + STRING(lsize,"99") + " ". PAUSE 0. READKEY. END. /* repeat */ READKEY PAUSE 0. HIDE FRAME xruler. STATUS DEFAULT. /* end of module */