#include #include #include #include #include #include "common.ch" #ifdef K_MINMOUSE ** No HB 0.45 nao havia esta constante anteriormente #else #define K_MINMOUSE 1001 #define K_MAXMOUSE 1007 #endif STATIC S2_6 := 0 STATIC S2_7 := {} static Static1, Static2:= .F., Static3, Static4, Static5, Static6, ; Static7, Static8, Static9, Static10 static Static11:= "" static Static12, Static13:= .T., Static14:= .F., Static15:= .F., ; Static16:= .F., Static17:= 0, Static18:= {}, Static19:= 0, ; Static20:= 0, Static21:= 0, Static22:= {180, {|| vlmarquee()}} static ; arrMouseInfLeft := { 0,0,0 },; arrMouseInfRight := { 0,0,0 } static ; sbGuiSupport := .F.,; sbGuiSupportEx := .F. /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: SAIDA Params: None. Return: Nil Example: SAIDA() .......................................................................... */ /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: DESKTOP Params: P1, P2 Return: Nil Example: DESKTOP(P1, P2) .......................................................................... */ FUNCTION DESKTOP(P1, P2) LOCAL L3 P1 := IF(P1 == NIL, "Visual Lib for xHarbour", ; P1) P2 := IF(P2 == NIL, "W+/BG", P2) VL850() IF VLMOUSEINI(@L3) VLMOUSEON() ENDIF SETBLINK(.F.) SETCOLOR("W+/W") VLSCROLL() SETPOS(0, 0) DEVPOS(0, 0) VLDEVOUTPICT(PADC(P1, 80), P2) DEVPOS(24, 0) VLDEVOUTPICT(PADC(" ", 80), P2) DEVPOS(1, 0) VLDEVOUTPICT(PADC(" ", 80), "N*/W") DEVPOS(23, 0) VLDEVOUTPICT(PADC(" ", 80), "N*/W") RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: DRAWFN Params: P1, P2, P3, P4 Return: Nil Example: DRAWFN(P1, P2, P3, P4) .......................................................................... */ FUNCTION DRAWFN(P1, P2, P3, P4) LOCAL L5 := {1, 9, 17, 25, 33, 41, 49, 57, 65, 73} P3 := IF(P3 == NIL, "W+/BG", P3) P4 := IF(P4 == NIL, "N/BG", P4) DEVPOS(24, L5[P1]) VLDEVOUTPICT(LEFT(P2, 7), P4) DEVPOS(24, L5[P1] - 1) VLDEVOUTPICT(CHR(P1), P3) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NEWBARMENU Params: None. Return: Array Example: NEWBARMENU() .......................................................................... */ FUNCTION NEWBARMENU() RETURN {} /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NEWDOWNMENU Params: None. Return: Array Example: NEWDOWNMENU() .......................................................................... */ FUNCTION NEWDOWNMENU() RETURN {} /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: ADDBARITEM Params: P1, P2, P3, P4, P5, P6, P7 Return: Nil Example: ADDBARITEM(P1, P2, P3, P4, P5, P6, P7) .......................................................................... */ FUNCTION ADDBARITEM(P1, P2, P3, P4, P5, P6, P7) LOCAL L8, L9, L10 := LEN(P1) P2 := IF(AT("&", P2) == 0, "&" + P2, P2) P4 := IF(P4 == NIL, {||NRET()}, P4) P5 := IF(P5 == NIL, .T., P5) P6 := IF(P6 == NIL, 1, P6) L8 := SUBSTR(P2, AT("&", P2) + 1, 1) L9 := LEN(P2) + 1 IF L10 = 0 P7 := IF(P7 == NIL, 1, P7) ELSE P7 := IF(P7 == NIL, P1[L10, 7] + P1[L10, 8], P7) ENDIF AADD(P1, {P2, P3, P4, P5, L8, P6, P7, L9}) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: ADDDOWNITEM Params: P1, P2, P3, P4, P5, P6, P7, P8 Return: Nil Example: ADDDOWNITEM(P1, P2, P3, P4, P5, P6, P7, P8) .......................................................................... */ FUNCTION ADDDOWNITEM(P1, P2, P3, P4, P5, P6, P7, P8) LOCAL L9, L10 := LEN(P1) P2 := IF(AT("&", P2) == 0, "&" + P2, P2) P4 := IF(P4 == NIL, {||NRET()}, P4) P6 := IF(P6 == NIL, .T., P6) P8 := IF(P8 == NIL, 3, P8) L9 := SUBSTR(P2, AT("&", P2) + 1, 1) IF L10 = 0 P7 := IF(P7 == NIL, 3, P7) P5 := IF(P5 == NIL, LEN(P2) + 4, P5) ELSE P7 := IF(P7 == NIL, P1[L10, 6] + 1, P7) P5 := IF(P5 == NIL, MAX(P1[L10, 10], LEN(P2) + 4), P5) ENDIF AADD(P1, {P2, P3, P4, P6, L9, P7, P8, .F., .F., P5}) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: ADDDOWNSEP Params: P1, P2 Return: Nil Example: ADDDOWNSEP(P1, P2) .......................................................................... */ FUNCTION ADDDOWNSEP(P1, P2) LOCAL L3, L4, L5 := LEN(P1) P2 := IF(P2 == NIL, 1, P2) L4 := IF(L4 == NIL, 3, L4) IF L5 = 0 L3 := IF(L3 == NIL, 3, L3) ELSE L3 := IF(L3 == NIL, P1[L5, 6] + 1, L3) ENDIF AADD(P1, {NIL, NIL, NIL, .T., "", L3, L4, .F., .T., P2}) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: CHKDOWNITEM Params: P1, P2, P3 Return: Undefined Example: CHKDOWNITEM(P1, P2, P3) .......................................................................... */ FUNCTION CHKDOWNITEM(P1, P2, P3) LOCAL L4 := P1[P2, 8] IF P3 <> NIL P1[P2, 8] := P3 ENDIF RETURN L4 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: SETDOWNITEM Params: P1, P2, P3 Return: Undefined Example: SETDOWNITEM(P1, P2, P3) .......................................................................... */ FUNCTION SETDOWNITEM(P1, P2, P3) LOCAL L4 := P1[P2, 4] IF P3 <> NIL P1[P2, 4] := P3 ENDIF RETURN L4 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: LINBUTTON1 Params: P1, P2, P3, P4, P5, P6 Return: Variable Example: LINBUTTON1(P1, P2, P3, P4, P5, P6) .......................................................................... */ FUNCTION LINBUTTON1(P1, P2, P3, P4, P5, P6) LOCAL L7 := NEWBUTTON() P1 := IF(P1 == NIL, .T., P1) P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 21, P3) P4 := IF(P4 == NIL, "&OK", P4) ADDBUTTON(L7, P3, 31, 18, P4, P5, .T.) IF P1 P3 := PROCBUTTON(L7, P2, 1, P6) ELSE SHOWBUTTON(L7, P2, P6) ENDIF RETURN P3 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: CLRTED Params: P1, P2 Return: Nil Example: CLRTED(P1, P2) .......................................................................... */ FUNCTION CLRTED(P1, P2) LOCAL L3 := SETCOLOR("N/W") P1 := IF(P1 == NIL, 2, P1) P2 := IF(P2 == NIL, 22, P2) VLSCROLL(P1, 0, P2, 79) SETCOLOR(L3) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: LINBUTTON2 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 Return: Variable Example: LINBUTTON2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) .......................................................................... */ FUNCTION LINBUTTON2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) LOCAL L11 := NEWBUTTON() P1 := IF(P1 == NIL, .T., P1) P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 21, P3) P4 := IF(P4 == NIL, 1, P4) P5 := IF(P5 == NIL, 2, P5) P6 := IF(P6 == NIL, "&OK", P6) P8 := IF(P8 == NIL, "&Cancelar", P8) ADDBUTTON(L11, P3, 21, 18, P6, P7, IF(P5 == 1, .T., .F.)) ADDBUTTON(L11, P3, 41, 18, P8, P9, IF(P5 == 2, .T., .F.)) IF P1 P3 := PROCBUTTON(L11, P2, IF(P4 < 3, P4, 2), P10) ELSE SHOWBUTTON(L11, P2, P10) ENDIF RETURN P3 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: LINBUTTON3 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 Return: Variable Example: LINBUTTON3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) .......................................................................... */ FUNCTION LINBUTTON3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12) LOCAL L13 := NEWBUTTON() P1 := IF(P1 == NIL, .T., P1) P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 21, P3) P4 := IF(P4 == NIL, 1, P4) P5 := IF(P5 == NIL, 3, P5) P6 := IF(P6 == NIL, "&OK", P6) P8 := IF(P8 == NIL, "&Alterar", P8) P10 := IF(P10 == NIL, "&Cancelar", P10) ADDBUTTON(L13, P3, 11, 18, P6, P7, IF(P5 == 1, .T., .F.)) ADDBUTTON(L13, P3, 31, 18, P8, P9, IF(P5 == 2, .T., .F.)) ADDBUTTON(L13, P3, 51, 18, P10, P11, IF(P5 == 3, .T., .F.)) IF P1 P3 := PROCBUTTON(L13, P2, IF(P4 < 4, P4, 3), P12) ELSE SHOWBUTTON(L13, P2, P12) ENDIF RETURN P3 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: LINBUTTON4 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 Return: Variable Example: LINBUTTON4(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14) .......................................................................... */ FUNCTION LINBUTTON4(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,; P14) LOCAL L15 := NEWBUTTON() P1 := IF(P1 == NIL, .T., P1) P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 21, P3) P4 := IF(P4 == NIL, 1, P4) P5 := IF(P5 == NIL, 4, P5) P6 := IF(P6 == NIL, "&OK", P6) P8 := IF(P8 == NIL, "&Alterar", P8) P10 := IF(P10 == NIL, "&Excluir", P10) P12 := IF(P12 == NIL, "&Cancelar", P12) ADDBUTTON(L15, P3, 1, 18, P6, P7, IF(P5 == 1, .T., .F.)) ADDBUTTON(L15, P3, 21, 18, P8, P9, IF(P5 == 2, .T., .F.)) ADDBUTTON(L15, P3, 41, 18, P10, P11, IF(P5 == 3, .T., .F.)) ADDBUTTON(L15, P3, 61, 18, P12, P13, IF(P5 == 4, .T., .F.)) IF P1 P3 := PROCBUTTON(L15, P2, IF(P4 < 5, P4, 4), P14) ELSE SHOWBUTTON(L15, P2, P14) ENDIF RETURN P3 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: MSGBOX1 Params: P1, P2, P3, P4, P5, P6, P7 Return: Nil Example: MSGBOX1(P1, P2, P3, P4, P5, P6, P7) .......................................................................... */ FUNCTION MSGBOX1(P1, P2, P3, P4, P5, P6, P7) LOCAL L8, L9, L10, L11 P4 := IF(P4 == NIL, "&OK", P4) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L8 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L8 + 5) / 2), P3) P5 := IF(P5 == NIL, "W+*/R", P5) P6 := IF(P6 == NIL, "R+*/W", P6) P7 := IF(P7 == NIL, "N*/W", P7) L10 := NEWBUTTON() ADDBUTTON(L10, P3 + 3 + L8, 31, 18, P4, NIL, .T.) L9 := WIN(P3, 10, P3 + 5 + L8, 69, P2, P5, P6) IF VALTYPE(P1) == "A" FOR L11 := 1 TO L8 DEVPOS(P3 + 1 + L11, 12) VLDEVOUTPICT(PADC(P1[L11], 56), P7) NEXT ELSE DEVPOS(P3 + 2, 12) VLDEVOUTPICT(PADC(P1, 56), P7) ENDIF SETCURSOR(0) PROCBUTTON(L10, 2, 1) RSTENV(L9) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: MSGBOX2 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 Return: Variable Example: MSGBOX2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) .......................................................................... */ FUNCTION MSGBOX2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) LOCAL L11, L12, L13, L14 P4 := IF(P4 == NIL, "&Sim", P4) P5 := IF(P5 == NIL, "&NÆo", P5) P6 := IF(P6 == NIL, 1, P6) P7 := IF(P7 == NIL, 2, P7) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L11 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L11 + 7) / 2), P3) P8 := IF(P8 == NIL, "W+*/R", P8) P9 := IF(P9 == NIL, "R+*/W", P9) P10 := IF(P10 == NIL, "N*/W", P10) L13 := NEWBUTTON() ADDBUTTON(L13, P3 + 3 + L11, 21, 18, P4, NIL, IF(P7 == 1, .T., .F.)) ADDBUTTON(L13, P3 + 3 + L11, 41, 18, P5, NIL, IF(P7 == 2, .T., .F.)) L12 := WIN(P3, 10, P3 + 5 + L11, 69, P2, P8, P9) IF VALTYPE(P1) == "A" FOR L14 := 1 TO L11 DEVPOS(P3 + 1 + L14, 13) VLDEVOUTPICT(PADC(P1[L14], 54), P10) NEXT ELSE DEVPOS(P3 + 2, 13) VLDEVOUTPICT(PADC(P1, 54), P10) ENDIF SETCURSOR(0) L14 := PROCBUTTON(L13, 2, IF(P6 < 3, P6, 2)) RSTENV(L12) RETURN L14 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: MSGBOX3D Params: P1, P2, P3, P4, P5, P6 Return: Variable Example: MSGBOX3D(P1, P2, P3, P4, P5, P6) .......................................................................... */ FUNCTION MSGBOX3D(P1, P2, P3, P4, P5, P6) LOCAL L7, L8, L9 P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aguarde!", P2) L7 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, 12 - (L7 + 6) / 2, P3) P4 := IF(P4 == NIL, "W+/N", P4) P5 := IF(P5 == NIL, "N/W", P5) P6 := IF(P6 == NIL, "N/W", P6) L8 := WIN(P3, 16, P3 + 6 + L7, 63, P2, P4, P5) VLDISPBOX(P3 + 3, 17, P3 + 4 + L7, 17, B_SINGLE, "W+/W") VLDISPBOX(P3 + 3, 62, P3 + 4 + L7, 62, B_SINGLE, "N+/W") DEVPOS(P3 + 2, 17) VLDEVOUT(chr(218), "W+/W") DEVPOS(P3 + 5 + L7, 17) VLDEVOUT(chr(192), "W+/W") DEVPOS(P3 + 2, 18) VLDEVOUT(REPLICATE(chr(196),44), "W+/W") DEVPOS(P3 + 5 + L7, 18) VLDEVOUT(REPLICATE(chr(196),44), "N+/W") DEVPOS(P3 + 2, 62) VLDEVOUT(chr(191), "N+/W") DEVPOS(P3 + 5 + L7, 62) VLDEVOUT(chr(217), "N+/W") IF VALTYPE(P1) == "A" FOR L9 := 1 TO L7 DEVPOS(P3 + 3 + L9, 19) VLDEVOUTPICT(PADC(P1[L9], 42), P6) NEXT ELSE DEVPOS(P3 + 4, 19) VLDEVOUTPICT(PADC(P1, 42), P6) ENDIF SETCURSOR(0) RETURN L8 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: RSTENV Params: P1 Return: Nil Example: RSTENV(P1) .......................................................................... */ FUNCTION RSTENV(P1) VLRESTSCREEN(P1[1], P1[2], P1[3], P1[4], P1[5]) SETCOLOR(P1[6]) SETCURSOR(P1[7]) SETPOS(P1[8], P1[9]) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: SAVENV Params: P1, P2, P3, P4 Return: Array Example: SAVENV(P1, P2, P3, P4) .......................................................................... */ FUNCTION SAVENV(P1, P2, P3, P4) LOCAL L5 := {} AADD(L5, P1) AADD(L5, P2) AADD(L5, P3) AADD(L5, P4) AADD(L5, VLSAVESCREEN(P1, P2, P3, P4)) AADD(L5, SETCOLOR()) AADD(L5, SETCURSOR()) AADD(L5, ROW()) AADD(L5, COL()) RETURN L5 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: DESKBOX Params: P1, P2, P3, P4, P5 Return: Nil Example: DESKBOX(P1, P2, P3, P4, P5) .......................................................................... */ FUNCTION DESKBOX(P1, P2, P3, P4, P5) LOCAL L6 := "N+/W", L7 := "W+/W" P5 := IF(P5 == NIL, 1, P5) IF P5 = 2 L6 := "W+/W" L7 := "N+/W" ENDIF VLDISPBOX(P1, P2, P3, P2, B_SINGLE+ " ", L6) VLDISPBOX(P1, P4, P3, P4, B_SINGLE+ " ", L7) DEVPOS(P1, P2) VLDEVOUTPICT(chr(218) + REPLICATE(chr(196), P4 - P2 - 1 ) + chr(191), L6) DEVPOS(P3, P2) VLDEVOUTPICT(chr(192) + REPLICATE(chr(196), P4 - P2 - 1 ) + chr(217), L7) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLEXIT Params: P1, P2, P3, P4 Return: Nil Example: VLEXIT(P1, P2, P3, P4) .......................................................................... */ FUNCTION VLEXIT(P1, P2, P3, P4) LOCAL L5 := SAVENV(33, 0, 33, 79) P4 := IF(P4 == NIL, .T., P4) IF .NOT. P4 VLMOUSEOFF() SETCOLOR("") VLSCROLL() SETPOS(0, 0) VLSETMODE(25, 80) DBCLOSEALL() SETBLINK(.T.) __QUIT() ELSEIF MSGBOX2("Confirma o encerramento ?", "Sa¡da", NIL, NIL, NIL, NIL,; 2) = 1 VLMOUSEOFF() SETCOLOR("") VLSCROLL() SETPOS(0, 0) VLSETMODE(25, 80) DBCLOSEALL() SETBLINK(.T.) __QUIT() ENDIF RSTENV(L5) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: HELP Params: None. Return: Nil Example: HELP() .......................................................................... */ FUNCTION HELP() LOCAL L1 := setkeymouse(28, {}) SETKEY(28, NIL) MSGBOX3D1({"Visual LIB portada para xHarbour Compiler Win 32", "", ; "Deivid Jos‚ de Souza", "", ; "Foz do Igua‡u/PR - Brasil", "", ; "Visual LIB for xHarbour"}, "Sobre a Visual Lib for xHarbour") SETKEY(28, {|BL1,BL2,BL3|HELP(BL1, BL2, BL3)}) setkeymouse(28, L1) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLDEVOUT Params: P1, P2 Return: Nil Example: VLDEVOUT(P1, P2) .......................................................................... */ FUNCTION VLDEVOUT(P1, P2) LOCAL L3 := VLSETMOUSE(.F.) DEVOUT(P1, P2) VLMOUSEON(L3) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: DWNMSG Params: P1, P2 Return: Logical Example: DWNMSG(P1, P2) .......................................................................... */ FUNCTION DWNMSG(P1, P2) P2 := IF(P2 == NIL, "R*/W", P2) DEVPOS(23, 0) DEVOUT(PADC(P1, 80), P2) RETURN .T. /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: WIN Params: P1, P2, P3, P4, P5, P6, P7, P8 Return: Variable Example: WIN(P1, P2, P3, P4, P5, P6, P7, P8) .......................................................................... */ FUNCTION WIN(P1, P2, P3, P4, P5, P6, P7, P8) LOCAL L9 P5 := IF(P5 == NIL, "", P5) P6 := IF(P6 == NIL, "W+/B", P6) P7 := IF(P7 == NIL, "B*/W", P7) P8 := IF(P8 == NIL, .T., P8) L9 := NBOX(P1, P2, P3, P4, P7, P8) DEVPOS(P1, P2) DEVOUT(PADC(P5, P4 - P2 + 1), P6) RETURN L9 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLSCROLL Params: P1, P2, P3, P4, P5 Return: Nil Example: VLSCROLL(P1, P2, P3, P4, P5) .......................................................................... */ FUNCTION VLSCROLL(P1, P2, P3, P4, P5) LOCAL L6 := VLSETMOUSE(.F.) SCROLL(P1, P2, P3, P4, P5) VLSETMOUSE(L6) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NEWBUTTON Params: None. Return: Array Example: NEWBUTTON() .......................................................................... */ FUNCTION NEWBUTTON() RETURN {} /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: ADDBUTTON Params: P1, P2, P3, P4, P5, P6, P7, P8, P9 Return: Nil Example: ADDBUTTON(P1, P2, P3, P4, P5, P6, P7, P8, P9) .......................................................................... */ FUNCTION ADDBUTTON(P1, P2, P3, P4, P5, P6, P7, P8, P9) LOCAL L10 P5 := IF(AT("&", P5) == 0, "&" + P5, P5) P7 := IF(P7 == NIL, .F., P7) P8 := IF(P8 == NIL, {||NIL}, P8) P9 := IF(P9 == NIL, .T., P9) L10 := SUBSTR(P5, AT("&", P5) + 1, 1) AADD(P1, {P5, P6, P8, P9, P7, P2, P3, L10, P4}) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: SETBUTTON Params: P1, P2, P3 Return: Undefined Example: SETBUTTON(P1, P2, P3) .......................................................................... */ FUNCTION SETBUTTON(P1, P2, P3) LOCAL L4 := P1[P2, 4] IF P3 <> NIL P1[P2, 4] := P3 ENDIF RETURN L4 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: BUTTONCOLORS Params: P1 Return: Array Example: BUTTONCOLORS(P1) .......................................................................... */ FUNCTION BUTTONCOLORS(P1) LOCAL L2 := {} P1 := IF(P1 == NIL, 1, 2) IF P1 = 1 AADD(L2, "N/W") AADD(L2, "W*/N") AADD(L2, "N*/N") AADD(L2, "W+*/N") AADD(L2, "W*/N") AADD(L2, "W+*/N") AADD(L2, "N+*/N") AADD(L2, "GR+*/N") AADD(L2, "R*/W") ELSEIF P1 = 2 AADD(L2, "N*/W") AADD(L2, "W+/W") AADD(L2, "N+/W") AADD(L2, "N/W") AADD(L2, "N+/W") AADD(L2, "N/W") AADD(L2, "W/W") AADD(L2, "W+/W") AADD(L2, "R*/W") ENDIF RETURN L2 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLGETGOTO Params: P1 Return: Nil Example: VLGETGOTO(P1) .......................................................................... */ FUNCTION VLGETGOTO(P1) LOCAL L2 := GETACTIVE() LOCAL L3 := ASCAN(GETLIST, {|BL1|BL1 == L2}) IF L3 > P1 L2:EXITSTATE := 1 ELSE L2:EXITSTATE := 2 ENDIF VLGETMOVTO(P1) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NRET Params: None. Return: Nil Example: NRET() .......................................................................... */ FUNCTION NRET() RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: MENUCOLORS Params: None. Return: Array Example: MENUCOLORS() .......................................................................... */ FUNCTION MENUCOLORS() LOCAL L1 := {} AADD(L1, "N*/W") AADD(L1, "W*/W") AADD(L1, "W+/N") AADD(L1, "W/N") AADD(L1, "R+/N") AADD(L1, "R+*/W") AADD(L1, "W+/N") AADD(L1, "N*/W") AADD(L1, "N*/W") AADD(L1, "R*/W") RETURN L1 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: TEXTMENU Params: P1 Return: String Example: TEXTMENU(P1) .......................................................................... */ FUNCTION TEXTMENU(P1) LOCAL L2 := AT("&", P1) LOCAL L3 := SUBSTR(P1, 1, L2 - 1) LOCAL L4 := SUBSTR(P1, L2 + 1) RETURN IF(L2 <> 0, L3 + L4, P1) /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: SETBARITEM Params: P1, P2, P3 Return: Undefined Example: SETBARITEM(P1, P2, P3) .......................................................................... */ FUNCTION SETBARITEM(P1, P2, P3) LOCAL L4 := P1[P2, 4] IF P3 <> NIL P1[P2, 4] := P3 ENDIF RETURN L4 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NBOX Params: P1, P2, P3, P4, P5, P6 Return: Variable Example: NBOX(P1, P2, P3, P4, P5, P6) .......................................................................... */ FUNCTION NBOX(P1, P2, P3, P4, P5, P6) LOCAL L7 := SAVENV(P1, P2, P3 + 1, P4 + 2) P5 := IF(P5 == NIL, "N*/W", P5) P6 := IF(P6 == NIL, .T., P6) VLDISPBOX(P1, P2, P3, P4, B_SINGLE+" " , P5) IF P6 SOMBRA(P1, P2, P3, P4) ENDIF RETURN L7 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: NINKEY Params: P1 Return: Number Example: NINKEY(P1) .......................................................................... */ *1212 FUNCTION NINKEY55(P1) LOCAL L2, L3, L4 DO WHILE .T. L2 := .F. IF P1 = NIL L3 := INKEY() ELSE L3 := INKEY(P1) ENDIF IF L3 <> 0 .AND. (L4 := SETKEY(L3)) <> NIL EVAL(L4, PROCNAME(2), PROCLINE(2), "") L2 := .T. RESETTIMER() ENDIF IF .NOT. L2 EXIT ENDIF ENDDO RETURN L3 function Setswmouse(x) static swMouse := .f. if pcount()<>00 swMouse := x end return swMouse function GuiSupport(X,XX) LOCAL y := sbGuiSupport LOCAL yy:= sbGuiSupportEx IF PCount()>0 sbGuiSupport := x End IF PCount()==02 sbGuiSupportEx := xx End RETURN y ******************************** function NINKEY(Arg1) local Local1, Local2, Local3 do while (.T.) Local1:= .F. if (Arg1 = Nil) Local2:= InKey(0.10,159) else Local2:= InKey(Arg1,159) endif if Local2 >= K_MINMOUSE .and. ; Local2 <= K_MAXMOUSE if Local2 == K_LBUTTONDOWN .or. ; Local2 == K_LBUTTONUP .or. ; Local2 == K_LDBLCLK if Local2 == K_LDBLCLK arrMouseInfLeft[1] := 2 else arrMouseInfLeft[1] := 1 end arrMouseInfLeft[2] := mRow() arrMouseInfLeft[3] := mCol() end if Local2 == K_RBUTTONDOWN .or. ; Local2 == K_RBUTTONUP .or. ; Local2 == K_RDBLCLK if Local2 == K_RDBLCLK arrMouseInfRight[1] := 2 else arrMouseInfRight[1] := 1 end arrMouseInfRight[2] := mRow() arrMouseInfRight[3] := mCol() end Local2 := 0 Setswmouse(.t.) end if (Local2 != 0 .AND. (Local3:= SetKey(Local2)) != Nil) eval(Local3, procname(2), procline(2), "") Local1:= .T. resettimer() endif if (!Local1) exit endif enddo return Local2 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: CLOCK Params: None. Return: Nil Example: CLOCK() .......................................................................... */ FUNCTION CLOCK() LOCAL L1, L2, L3 := VLSCRSAVER() LOCAL L4 := ARRAY(3) L1 := WIN(10, 29, 13, 50, "Rel¢gio - " + DTOC(DATE()), "W+*/B", "B+*/W") SETCURSOR(0) RESETTIMER() VLMOUSEDN(0, L4) DO WHILE .T. DEVPOS(12, 36) DEVOUT(TIME(), "N*/W") IF (L2 := INKEY(1)) <> 0 EXIT ENDIF VLMOUSEDN(0, L4) IF L4[1] > 0 EXIT ENDIF IF SECONDS() - GETTIMER() > L3[1] EVAL(L3[2]) RESETTIMER() ENDIF ENDDO RSTENV(L1) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: CHKPRN Params: None. Return: Logical Example: CHKPRN() .......................................................................... */ FUNCTION CHKPRN() LOCAL L1 := .T. DO WHILE .NOT. ISPRINTER() IF MSGBOX2("Impressora n„o preparada. Continuar ?") = 2 L1 := .F. EXIT ENDIF ENDDO RETURN L1 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLSAVESCREEN Params: P1, P2, P3, P4 Return: Undefined Example: VLSAVESCREEN(P1, P2, P3, P4) .......................................................................... */ FUNCTION VLSAVESCREEN(P1, P2, P3, P4) LOCAL L5, L6 := VLSETMOUSE(.F.) L5 := SAVESCREEN(P1, P2, P3, P4) VLSETMOUSE(L6) RETURN L5 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLRESTSCREEN Params: P1, P2, P3, P4, P5 Return: Nil Example: VLRESTSCREEN(P1, P2, P3, P4, P5) .......................................................................... */ FUNCTION VLRESTSCREEN(P1, P2, P3, P4, P5) LOCAL L6 := VLSETMOUSE(.F.) RESTSCREEN(P1, P2, P3, P4, P5) VLSETMOUSE(L6) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLSETMODE Params: P1, P2 Return: Undefined Example: VLSETMODE(P1, P2) .......................................................................... */ FUNCTION VLSETMODE(P1, P2) LOCAL L3 := VLSETMOUSE(.F.) LOCAL L4 := SETMODE(P1, P2) VLMOUSEINI() VLSETMOUSE(L3) RETURN L4 /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: QEXIT Params: P1, P2, P3, P4 Return: Nil Example: QEXIT(P1, P2, P3, P4) .......................................................................... */ FUNCTION QEXIT(P1, P2, P3, P4) VLEXIT(P1, P2, P3, P4) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLQOUT Params: P1 Return: Nil Example: VLQOUT(P1) .......................................................................... */ FUNCTION VLQOUT(P1) LOCAL L2 := VLSETMOUSE(.F.) LOCAL L3 := LEN(P1) DO CASE CASE L3 == 1 QOUT(P1[1]) CASE L3 == 2 QOUT(P1[1], P1[2]) CASE L3 == 3 QOUT(P1[1], P1[2], P1[3]) CASE L3 == 4 QOUT(P1[1], P1[2], P1[3], P1[4]) CASE L3 == 5 QOUT(P1[1], P1[2], P1[3], P1[4], P1[5]) END CASE VLSETMOUSE(L2) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLQQOUT Params: P1 Return: Nil Example: VLQQOUT(P1) .......................................................................... */ FUNCTION VLQQOUT(P1) LOCAL L2 := VLSETMOUSE(.F.) AEVAL(P1, {|BL1|QQOUT(BL1)}) VLSETMOUSE(L2) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLDEVOUTPICT Params: P1, P2, P3 Return: Nil Example: VLDEVOUTPICT(P1, P2, P3) .......................................................................... */ FUNCTION VLDEVOUTPICT(P1, P2, P3) LOCAL L4 := VLSETMOUSE(.F.) VLDEVOUT(P1, P2, P3) VLMOUSEON(L4) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: VLDISPBOX Params: P1, P2, P3, P4, P5, P6 Return: Nil Example: VLDISPBOX(P1, P2, P3, P4, P5, P6) .......................................................................... */ FUNCTION VLDISPBOX(P1, P2, P3, P4, P5, P6) LOCAL L7 := VLSETMOUSE(.F.) DISPBOX(P1, P2, P3, P4, P5, P6) VLMOUSEON(L7) RETURN NIL /* ------ Rescue5 1.00 (c) APTware 1993,94 ------ Name: MSGBOX Params: P1, P2, P3, P4, P5, P6 Return: Variable Example: MSGBOX(P1, P2, P3, P4, P5, P6) .......................................................................... */ FUNCTION MSGBOX(P1, P2, P3, P4, P5, P6) LOCAL L7, L8, L9 SETCURSOR(0) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aguarde!", P2) L7 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, 12 - (L7 + 5) / 2, P3) P4 := IF(P4 == NIL, "W+*/B", P4) P5 := IF(P5 == NIL, "B+*/W", P5) P6 := IF(P6 == NIL, "N*/W", P6) L8 := WIN(P3, 18, P3 + 5 + L7, 61, P2, P4, P5) IF VALTYPE(P1) == "A" FOR L9 := 1 TO L7 DEVPOS(P3 + 2 + L9, 20) VLDEVOUT(PADC(P1[L9], 40), P6) NEXT ELSE DEVPOS(P3 + 3, 20) VLDEVOUT(PADC(P1, 40), P6) ENDIF RETURN L8 FUNCTION VL850() VLSETMODE(25,80) // __RUN("VLXLIB.EXE") RETURN nil ********************************* PROCEDURE VLMOUSEINI() RETURN .T. PROCEDURE VLMOUSEON() SET(39,159) MSHOW() **************************************** PROCEDURE VLMOUSEOFF() SET(39,128) MHIDE() **************************************** FUNCTION VLSETMOUSE(A) RETURN A **************************************** FUNCTION VLMOUSEDN(P1,A) A[1]=0 A[2]:=iif(mleftdown(), 1,0) A[3]:=iif(mrightdown(),1,0) RETURN A **************************************** FUNC VLMOUSEINF(A) A[1]:=MLEFTDOWN() A[2]:=MRIGHTDOWN() A[3]:=MROW() A[4]:=MCOL() RETURN A /*------------------- Convertido para Harbour -------------- 2005 -* Name: BARMENU Params: P1, P2, P3, P4 Return: Number Example: BARMENU(P1, P2, P3, P4) .......................................................................... */ Function BARMENU(P1, P2, P3, P4) LOCAL L5 := ARRAY(4) LOCAL L6 := SETCURSOR(0) LOCAL L7, L8, L9, L10 := .T. LOCAL L11 := .T. LOCAL L12 := 0 P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 1, P3) P4 := IF(PCOUNT() == 4, P4, MENUCOLORS()) __KEYBOARD(CHR(13)) INKEY(0.2) DO WHILE P3 <> 0 IF L10 DISPLAYBAR(P1, P2, P4) SHOWBARFOC(P1[P3], P4) L10 := .F. ENDIF IF SETMOVLEFT() P3 := BARLEFT(P1, P3, P4) SETMOVLEFT(.F.) __KEYBOARD(CHR(13)) ELSEIF SETMOVRIGH() P3 := BARRIGHT(P1, P3, P4) SETMOVRIGH(.F.) __KEYBOARD(CHR(13)) ELSEIF SETMOVFLAG() .AND. .NOT. SETBARMSG() .AND. (L7[2] == 19 .OR. ; L7[2] == 4) __KEYBOARD(CHR(13)) ELSEIF P3 == L12 .AND. LASTKEY() == 27 __KEYBOARD(CHR(13)) INKEY(0.2) L12 := 0 ENDIF L7 := WAITSTATE() IF L7[1] == 1 L12 := 0 IF (L9 := ASCAN(P1, {|BL1|UPPER(CHR(L7[2])) == UPPER(BL1[5])})) ; <> 0 P3 := BARGOTO(P1, P3, L9, P4) P3 := BAREXECUTE(P1, P3, P2, L9, P4) L10 := .T. ELSEIF L7[2] = 19 P3 := BARLEFT(P1, P3, P4) ELSEIF L7[2] = 4 P3 := BARRIGHT(P1, P3, P4) ELSEIF L7[2] = 27 P3 := BARESCAPE(P1, P3, P4) ELSEIF L7[2] == 13 .AND. P1[P3, 4] P3 := BAREXECUTE(P1, P3, P2, P3, P4) L10 := .T. ENDIF ELSEIF L7[1] == 2 IF (L8 := CHKBRMOUSE(P1, P2, L7, P3)) > 0 SETBARMSG(.T.) SETMOVFLAG(.F.) P3 := BARGOTO(P1, P3, L8, P4) L11 := .T. ELSE L11 := .F. ENDIF ELSEIF L7[1] == 3 IF (L8 := CHKBRMOUSE(P1, P2, L7, P3)) > 0 .AND. L11 .AND. L12 <> ; P3 .OR. L8 > 0 .AND. VALTYPE(P1[P3, 3]) == "B" SETBARMSG(.T.) SETMOVFLAG(.F.) P3 := BARGOTO(P1, P3, L8, P4) L12 := P3 P3 := BAREXECUTE(P1, L8, P2, L8, P4) L10 := .T. ELSEIF L8 > 0 L12 := 0 ENDIF ELSEIF L7[1] == 4 IF (L8 := CHKBRMOUSE(P1, P2, L7, P3)) > 0 .AND. L8 <> P3 .AND. ; L11 SETBARMSG(.T.) SETMOVFLAG(.F.) P3 := BARGOTO(P1, P3, L8, P4) L12 := 0 ELSEIF L8 == -1 .AND. L11 SETBARMSG(.T.) SETMOVFLAG(.F.) L12 := P3 P3 := BAREXECUTE(P1, P3, P2, L8, P4) L10 := .T. ENDIF ENDIF ENDDO SETCURSOR(L6) RETURN P3 /*------------------- Convertido para Harbour -------------- 2005 - Name: DISPLAYBAR Params: P1, P2, P3 Return: Nil Example: DISPLAYBAR(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DISPLAYBAR(P1, P2, P3) AEVAL(P1, {|BL1|BL1[6] := P2, DRAWBARITE(BL1, 1, P3)}) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: BARLEFT Params: P1, P2, P3 Return: Number Example: BARLEFT(P1, P2, P3) .......................................................................... */ STATIC FUNCTION BARLEFT(P1, P2, P3) IF SETMOVFLAG() .AND. SETBARMSG() SETBARMSG(.F.) ENDIF HIDEBARFOC(P1[P2], P3) P2 := IF((--P2) == 0, LEN(P1), P2) SHOWBARFOC(P1[P2], P3) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: BARRIGHT Params: P1, P2, P3 Return: Number Example: BARRIGHT(P1, P2, P3) .......................................................................... */ STATIC FUNCTION BARRIGHT(P1, P2, P3) IF SETMOVFLAG() .AND. SETBARMSG() SETBARMSG(.F.) ENDIF HIDEBARFOC(P1[P2], P3) P2 := IF((++P2) > LEN(P1), 1, P2) SHOWBARFOC(P1[P2], P3) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: BARGOTO Params: P1, P2, P3, P4 Return: Undefined Example: BARGOTO(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION BARGOTO(P1, P2, P3, P4) HIDEBARFOC(P1[P2], P4) P2 := IF(LEN(P1) >= P3, P3, P2) SHOWBARFOC(P1[P2], P4) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWBARFOC Params: P1, P2 Return: Nil Example: SHOWBARFOC(P1, P2) .......................................................................... */ STATIC FUNCTION SHOWBARFOC(P1, P2) DRAWBARITE(P1, 2, P2) SHOWBARMSG(P1, P2) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: BAREXECUTE Params: P1, P2, P3, P4, P5 Return: Variable Example: BAREXECUTE(P1, P2, P3, P4, P5) .......................................................................... */ STATIC FUNCTION BAREXECUTE(P1, P2, P3, P4, P5) LOCAL L6 IF VALTYPE(P1[P2, 3]) == "A" .AND. P1[P2, 4] L6 := DOWNMENU(P1[P2, 3], 1, P1[P2, 6] + 1, P1[P2, 7], 1, P5, P3, P1) P2 := IF(L6 == -1, P2, L6) ELSEIF VALTYPE(P1[P2, 3]) == "B" .AND. P1[P2, 4] .AND. P4 <> -1 IF SETMOVFLAG() .AND. .NOT. SETBARMSG() SETBARMSG(.T.) ELSE SETMOVFLAG(.F.) EVAL(P1[P2, 3]) ENDIF ENDIF RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: BARESCAPE Params: P1, P2, P3 Return: Number Example: BARESCAPE(P1, P2, P3) .......................................................................... */ STATIC FUNCTION BARESCAPE(P1, P2, P3) RETURN 0 /*------------------- Convertido para Harbour -------------- 2005 - Name: CHKBRMOUSE Params: P1, P2, P3, P4 Return: Variable Example: CHKBRMOUSE(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION CHKBRMOUSE(P1, P2, P3, P4) LOCAL L5, L6, L7 MEMVAR->NRET := 0 IF P3[2] == P2 + 2 L6 := P1[P4, 7] L7 := P1[P4, 7] + P1[P4, 8] IF P3[3] >= L6 .AND. P3[3] <= L7 MEMVAR->NRET := -1 ENDIF ELSEIF P3[2] == P2 FOR L5 := 1 TO LEN(P1) L6 := P1[L5, 7] L7 := P1[L5, 7] + P1[L5, 8] IF P3[3] >= L6 .AND. P3[3] <= L7 MEMVAR->NRET := L5 SETMOVFLAG(.F.) EXIT ENDIF NEXT ENDIF RETURN NRET /*------------------- Convertido para Harbour -------------- 2005 - Name: HIDEBARFOC Params: P1, P2 Return: Nil Example: HIDEBARFOC(P1, P2) .......................................................................... */ STATIC FUNCTION HIDEBARFOC(P1, P2) DRAWBARITE(P1, 1, P2) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DRAWBARITE Params: P1, P2, P3 Return: Nil Example: DRAWBARITE(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DRAWBARITE(P1, P2, P3) LOCAL L4, L5, L6 := PADR(" " + TEXTMENU(P1[1]), P1[8]) LOCAL L7 := AT("&", P1[1]) IF P2 = 1 L4 := IF(P1[4], P3[1], P3[2]) L5 := IF(P1[4], P3[6], P3[8]) ELSEIF P2 = 2 L4 := IF(P1[4], P3[3], P3[4]) L5 := IF(P1[4], P3[5], P3[7]) ENDIF DEVPOS(P1[6], P1[7]) VLDEVOUTPICT(L6, L4) DEVPOS(P1[6], P1[7] + L7) VLDEVOUTPICT(P1[5], L5) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWBARMSG Params: P1, P2 Return: Nil Example: SHOWBARMSG(P1, P2) .......................................................................... */ STATIC FUNCTION SHOWBARMSG(P1, P2) IF SETBARMSG() .AND. (P1[2] <> NIL .OR. P1[2] = ("")) DWNMSG(P1[2], P2[10]) ENDIF RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DOWNMENU Params: P1, P2, P3, P4, P5, P6, P7, P8 Return: Number Example: DOWNMENU(P1, P2, P3, P4, P5, P6, P7, P8) .......................................................................... */ FUNCTION DOWNMENU(P1, P2, P3, P4, P5, P6, P7, P8) LOCAL L9 := ARRAY(4) LOCAL L10 := SETCURSOR(0) LOCAL L11 := LEN(P1) LOCAL L12 := P1[1, 10] LOCAL L13, L14, L15, L16 := 1 LOCAL L17, L18, L19 := {} LOCAL L20, L21, L22, L23 := 0 LOCAL L24 := .T. P7 := IF(P7 == NIL, -1, P7) P8 := IF(VALTYPE(P8) <> "A", {}, P8) P6 := IF(PCOUNT() < 6, MENUCOLORS(), P6) AUXPSHDOWN(L19, P1, P2, P3, P4, P5, L16, P6) DO WHILE L23 == 0 SETMOVFLAG(.F.) L20 := L19[L16, 1] L21 := L19[L16, 2] P2 := L20[1] DO WHILE L21[P2, 9] P2 := IF((++P2) > LEN(L21), 1, P2) ENDDO DO WHILE P2 <> 0 IF L24 DISPLAYDOW(L19[L16], P6) SHOWDWNFOC(L21[P2], P6) L24 := .F. ENDIF L15 := WAITSTATE() IF L15[1] == 1 IF (L18 := ASCAN(L21, {|BL1|UPPER(CHR(L15[2])) == UPPER(BL1[5]); })) <> 0 P2 := DWNGOTO(L21, P2, L18, P6) P2 := DWNEXECUTE(L19, L21, P2, L20, L16, P6) L16 := LEN(L19) L24 := .T. ELSEIF L15[2] = 5 P2 := DWNUP(L21, P2, P6) ELSEIF L15[2] = 24 P2 := DWNDOWN(L21, P2, P6) ELSEIF L15[2] = 19 P2 := DWNLEFT(L19, L21, L16, P6) L16 := LEN(L19) L23 := -1 ELSEIF L15[2] = 4 P2 := DWNRIGH(L19, L21, L16, P6) L16 := LEN(L19) L23 := -1 ELSEIF L15[2] = 27 P2 := DWNESCAPE(L19, L21, P2, P6) --L16 L23 := IF(L16 == 0, -1, L23) ELSEIF L15[2] == 13 .AND. L21[P2, 4] P2 := DWNEXECUTE(L19, L21, P2, L20, L16, P6) L16 := LEN(L19) L24 := .T. ENDIF ELSEIF L15[1] == 2 L22 := CHKDNMOUSE(L19, L21, P2, L15, L16, P8, P7) IF L22[2] <> 0 DO WHILE L16 > L22[1] AUXPOPDOWN(L19) --L16 ENDDO IF L16 > 0 L19[L16, 1, 1] := L22[2] ELSE L23 := L22[2] ENDIF P2 := 0 L24 := .T. ENDIF ELSEIF L15[1] == 3 IF L16 > 0 .AND. (L17 := CHKUPMOUSE(L19, L21, P2, L15, L16)) ; <> 0 P2 := DWNGOTO(L21, P2, L17, P6) P2 := DWNEXECUTE(L19, L21, P2, L20, L16, P6) L16 := LEN(L19) L24 := .T. ENDIF ELSEIF L15[1] == 4 .AND. L16 > 0 .AND. (L17 := CHKUPMOUSE(L19, ; L21, P2, L15, L16)) <> 0 P2 := DWNGOTO(L21, P2, L17, P6) ENDIF ENDDO IF L16 = 0 EXIT ENDIF ENDDO SETCURSOR(L10) RETURN L23 /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNEXECUTE Params: P1, P2, P3, P4, P5, P6 Return: Number Example: DWNEXECUTE(P1, P2, P3, P4, P5, P6) .......................................................................... */ STATIC FUNCTION DWNEXECUTE(P1, P2, P3, P4, P5, P6) IF VALTYPE(P2[P3, 3]) == "A" .AND. P2[P3, 4] P4[1] := P3 ++P5 AUXPSHDOWN(P1, P2[P3, 3], 1, P2[P3, 6] - 1, P2[P3, 7], P2[P3, 10], ; P5, P6) P3 := 0 ELSEIF VALTYPE(P2[P3, 3]) == "B" .AND. P2[P3, 4] EVAL(P2[P3, 3]) ENDIF RETURN P3 /*------------------- Convertido para Harbour -------------- 2005 - Name: AUXPSHDOWN Params: P1, P2, P3, P4, P5, P6, P7, P8 Return: Nil Example: AUXPSHDOWN(P1, P2, P3, P4, P5, P6, P7, P8) .......................................................................... */ STATIC FUNCTION AUXPSHDOWN(P1, P2, P3, P4, P5, P6, P7, P8) LOCAL L9 := LEN(P2) LOCAL L10 := P2[1, 10] LOCAL L11, L12, L13, L14, L15 P3 := IF(P3 == NIL, 1, P3) FOR L12 := 1 TO L9 L10 := MAX(P2[L12, 10], L10) NEXT FOR L12 := 1 TO L9 P2[L12, 10] := L10 NEXT L13 := P4 + L9 + 1 L14 := P5 + P2[1, 10] + 1 IF P7 > 1 .AND. (P5 > 45 .OR. P5 + P6 > 65) P5 := P5 + P6 L14 := L14 + P6 P5 := P5 - IF(L14 + 3 > 80, P6 + P2[1, 10] + 2, 0) L14 := L14 - IF(L14 + 3 > 80, P6 + P2[1, 10] + 2, 0) P4 := P4 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) L13 := L13 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) IF P5 < 0 P5 := 77 - (L14 - P5) L14 := P5 + P2[1, 10] + 1 ENDIF ELSEIF P7 > 1 P5 := P5 + P6 L14 := L14 + P6 P5 := P5 - IF(L14 + 3 > 80, L14 + 3 - 80, 0) L14 := L14 - IF(L14 + 3 > 80, L14 + 3 - 80, 0) P4 := P4 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) L13 := L13 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) ELSE P5 := P5 - IF(L14 + 3 > 80, L14 + 3 - 80, 0) L14 := L14 - IF(L14 + 3 > 80, L14 + 3 - 80, 0) P4 := P4 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) L13 := L13 - IF(L13 + 1 > 22, L13 + 1 - 22, 0) ENDIF L15 := NBOX(P4, P5, L13, L14, P8[9]) FOR L12 := 1 TO L9 P2[L12, 6] := P4 + L12 P2[L12, 7] := P5 + 1 NEXT AADD(P1, {{P3, L15, P4, P5, L13, L14}, P2}) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DISPLAYDOW Params: P1, P2 Return: Nil Example: DISPLAYDOW(P1, P2) .......................................................................... */ STATIC FUNCTION DISPLAYDOW(P1, P2) LOCAL L3 FOR L3 := 1 TO LEN(P1[2]) DRAWDOWNIT(P1[2, L3], 1, P2) NEXT RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNGOTO Params: P1, P2, P3, P4 Return: Undefined Example: DWNGOTO(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION DWNGOTO(P1, P2, P3, P4) HIDEDWNFOC(P1[P2], P4) P2 := IF(P1[P3, 9], P2, P3) SHOWDWNFOC(P1[P2], P4) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNUP Params: P1, P2, P3 Return: Number Example: DWNUP(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DWNUP(P1, P2, P3) HIDEDWNFOC(P1[P2], P3) P2 := IF((--P2) == 0, LEN(P1), P2) DO WHILE P1[P2, 9] P2 := IF((--P2) == 0, LEN(P1), P2) ENDDO SHOWDWNFOC(P1[P2], P3) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNDOWN Params: P1, P2, P3 Return: Number Example: DWNDOWN(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DWNDOWN(P1, P2, P3) HIDEDWNFOC(P1[P2], P3) P2 := IF((++P2) > LEN(P1), 1, P2) DO WHILE P1[P2, 9] P2 := IF((++P2) > LEN(P1), 1, P2) ENDDO SHOWDWNFOC(P1[P2], P3) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWDWNFOC Params: P1, P2 Return: Nil Example: SHOWDWNFOC(P1, P2) .......................................................................... */ STATIC FUNCTION SHOWDWNFOC(P1, P2) DRAWDOWNIT(P1, 2, P2) SHOWDOWNMS(P1, P2) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNLEFT Params: P1, P2, P3 Return: Number Example: DWNLEFT(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DWNLEFT(P1, P2, P3) DO WHILE P3 > 0 AUXPOPDOWN(P1) --P3 ENDDO SETMOVFLAG(.T.) SETMOVLEFT(.T.) SETBARMSG(.F.) RETURN 0 /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNRIGH Params: P1, P2, P3 Return: Number Example: DWNRIGH(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DWNRIGH(P1, P2, P3) DO WHILE P3 > 0 AUXPOPDOWN(P1) --P3 ENDDO SETMOVFLAG(.T.) SETMOVRIGH(.T.) SETBARMSG(.F.) RETURN 0 /*------------------- Convertido para Harbour -------------- 2005 - Name: DWNESCAPE Params: P1, P2, P3 Return: Number Example: DWNESCAPE(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DWNESCAPE(P1, P2, P3) AUXPOPDOWN(P1) SETBARMSG(.T.) RETURN 0 /*------------------- Convertido para Harbour -------------- 2005 - Name: CHKDNMOUSE Params: P1, P2, P3, P4, P5, P6, P7 Return: Array Example: CHKDNMOUSE(P1, P2, P3, P4, P5, P6, P7) .......................................................................... */ STATIC FUNCTION CHKDNMOUSE(P1, P2, P3, P4, P5, P6, P7) LOCAL L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18 := MEMVAR->; XMIK2 := 0 IF P4[2] == P7 FOR L10 := 1 TO LEN(P6) L11 := P6[L10, 7] L12 := P6[L10, 7] + P6[L10, 8] IF P4[3] >= L11 .AND. P4[3] <= L12 L18 := 0 MEMVAR->XMIK2 := L10 EXIT ENDIF NEXT ELSE FOR L8 := 1 TO P5 L17 := LEN(P1[L8, 2]) L13 := P1[L8, 1, 3] + 1 L14 := P1[L8, 1, 4] + 1 L15 := P1[L8, 1, 5] - 1 L16 := P1[L8, 1, 6] - 1 IF P4[2] >= L13 .AND. P4[2] <= L15 .AND. P4[3] >= L14 .AND. P4[3] ; <= L16 FOR L9 := 1 TO L17 IF P4[2] == P1[L8, 2, L9, 6] .AND. .NOT. P1[L8, 2, L9, 9] L18 := L8 MEMVAR->XMIK2 := L9 EXIT ENDIF NEXT ENDIF IF L18 <> 0 EXIT ENDIF NEXT ENDIF RETURN {L18, XMIK2} /*------------------- Convertido para Harbour -------------- 2005 - Name: AUXPOPDOWN Params: P1 Return: Nil Example: AUXPOPDOWN(P1) .......................................................................... */ STATIC FUNCTION AUXPOPDOWN(P1) LOCAL L2 := LEN(P1) RSTENV(P1[L2, 1, 2]) ASIZE(P1, L2 - 1) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: CHKUPMOUSE Params: P1, P2, P3, P4, P5 Return: Number Example: CHKUPMOUSE(P1, P2, P3, P4, P5) .......................................................................... */ STATIC FUNCTION CHKUPMOUSE(P1, P2, P3, P4, P5) LOCAL L6, L7, L8, L9, L10, L11, L12 := 0 L11 := LEN(P2) L7 := P1[P5, 1, 3] + 1 L8 := P1[P5, 1, 4] + 1 L9 := P1[P5, 1, 5] - 1 L10 := P1[P5, 1, 6] - 1 IF P4[2] >= L7 .AND. P4[2] <= L9 .AND. P4[3] >= L8 .AND. P4[3] <= L10 FOR L6 := 1 TO L11 IF P4[2] == P2[L6, 6] .AND. .NOT. P2[L6, 9] L12 := L6 EXIT ENDIF NEXT ENDIF RETURN L12 /*------------------- Convertido para Harbour -------------- 2005 - Name: HIDEDWNFOC Params: P1, P2 Return: Nil Example: HIDEDWNFOC(P1, P2) .......................................................................... */ STATIC FUNCTION HIDEDWNFOC(P1, P2) DRAWDOWNIT(P1, 1, P2) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DRAWDOWNIT Params: P1, P2, P3 Return: Nil Example: DRAWDOWNIT(P1, P2, P3) .......................................................................... */ STATIC FUNCTION DRAWDOWNIT(P1, P2, P3) LOCAL L4, L5, L6, L7, L8 := IF(P1[8], "û"," ") LOCAL L9 := IF(VALTYPE(P1[3]) == "A", ">"," ") L6 := IF(P1[9], REPLICATE("Ä", P1[10]), PADR(L8 + TEXTMENU(P1[1]), P1[; 10] - 1) + L9) L7 := IF(P1[9], 0, AT("&", P1[1]) + 1) IF P2 = 1 L4 := IF(P1[4], P3[1], P3[2]) L5 := IF(P1[4], P3[6], P3[8]) ELSEIF P2 = 2 L4 := IF(P1[4], P3[3], P3[4]) L5 := IF(P1[4], P3[5], P3[7]) ENDIF IF P1[9] DEVPOS(P1[6], P1[7]) VLDEVOUTPICT(L6, L4) ELSE DEVPOS(P1[6], P1[7]) VLDEVOUTPICT(L6, L4) DEVPOS(P1[6], P1[7] + L7) VLDEVOUTPICT(P1[5], L5) ENDIF RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWDOWNMS Params: P1, P2 Return: Nil Example: SHOWDOWNMS(P1, P2) .......................................................................... */ STATIC FUNCTION SHOWDOWNMS(P1, P2) IF P1[2] <> NIL .OR. P1[2] = ("") DWNMSG(P1[2], P2[10]) ENDIF RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: FRAME Params: P1, P2, P3, P4, P5, P6, P7, P8, P9 Return: Nil Example: FRAME(P1, P2, P3, P4, P5, P6, P7, P8, P9) .......................................................................... */ #INCLUDE "box.ch" FUNCTION FRAME(P1, P2, P3, P4, P5, P6, P7, P8, P9) LOCAL L10 := SETCOLOR(), L11 := MEMVAR->DN := "", L12 := P4 - P2 - 1, ; L13 := MEMVAR->Y := MEMVAR->Z := 0 P6 := IF(P6 == NIL, 1, P6) P7 := IF(P7 == NIL, 2, P7) P8 := IF(P8 == NIL, "N/W", P8) P9 := IF(P9 == NIL, "N/W", P9) IF P7 = 1 L11 := "N+/W" MEMVAR->DN := "W+/W" ELSEIF P7 = 2 L11 := "W+/W" MEMVAR->DN := "N+/W" ELSEIF P7 = 3 L11 := MEMVAR->DN := P8 ENDIF VLDISPBOX(P1 + 1, P2, P3 , P2, B_SINGLE+" ", L11) DEVPOS(P1, P2) VLDEVOUTPICT(chr(218) + REPLICATE("Ä", L12), L11) DEVPOS(P3, P2) VLDEVOUTPICT(chr(192), L11) VLDISPBOX(P1 + 1, P4, P3 , P4, B_SINGLE, DN) DEVPOS(P3, P2 + 1) VLDEVOUTPICT(REPLICATE("Ä", L12) + chr(217), DN) DEVPOS(P1, P4) VLDEVOUTPICT(chr(191), DN) IF P5 <> NIL MEMVAR->Z := LEN(P5) IF P6 = 1 DEVPOS(P1, P2 + 2) VLDEVOUTPICT(" " + P5 + " ", P9) ELSEIF P6 = 2 DEVPOS(P1, P4 - L12 / 2 - Z / 2 - 1) VLDEVOUTPICT(" " + P5 + " ", P9) ELSEIF P6 = 3 DEVPOS(P1, P4 - Z - 3) VLDEVOUTPICT(" " + P5 + " ", P9) ENDIF ENDIF SETCOLOR(L10) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: MSGBOX3 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 Return: Variable Example: MSGBOX3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) .......................................................................... */ FUNCTION MSGBOX3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) LOCAL L12, L13, L14, L15 P4 := IF(P4 == NIL, "&Sim", P4) P5 := IF(P5 == NIL, "&NÆo", P5) P6 := IF(P6 == NIL, "&Cancelar", P6) P7 := IF(P7 == NIL, 1, P7) P8 := IF(P8 == NIL, 3, P8) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L12 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L12 + 7) / 2), P3) P9 := IF(P9 == NIL, "W+*/R", P9) P10 := IF(P10 == NIL, "R+*/W", P10) P11 := IF(P11 == NIL, "N*/W", P11) L14 := NEWBUTTON() ADDBUTTON(L14, P3 + 3 + L12, 13, 18, P4, NIL, IF(P8 == 1, .T., .F.)) ADDBUTTON(L14, P3 + 3 + L12, 31, 18, P5, NIL, IF(P8 == 2, .T., .F.)) ADDBUTTON(L14, P3 + 3 + L12, 49, 18, P6, NIL, IF(P8 == 3, .T., .F.)) L13 := WIN(P3, 10, P3 + 5 + L12, 69, P2, P9, P10) IF VALTYPE(P1) == "A" FOR L15 := 1 TO L12 DEVPOS(P3 + 1 + L15, 13) VLDEVOUT(PADC(P1[L15], 54), P11) NEXT ELSE DEVPOS(P3 + 2, 13) VLDEVOUT(PADC(P1, 54), P11) ENDIF SETCURSOR(0) L15 := PROCBUTTON(L14, 2, IF(P7 < 3, P7, 2)) RSTENV(L13) RETURN L15 #include "box.ch" /*------------------- Convertido para Harbour -------------- 2005 - Name: MSGBOX3D1 Params: P1, P2, P3, P4, P5, P6, P7 Return: Nil Example: MSGBOX3D1(P1, P2, P3, P4, P5, P6, P7) .......................................................................... */ FUNCTION MSGBOX3D1(P1, P2, P3, P4, P5, P6, P7) LOCAL L8 := MEMVAR->I := 0, L9 := MEMVAR->OBUT := {} P4 := IF(P4 == NIL, "&OK", P4) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L8 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L8 + 8) / 2), P3) P5 := IF(P5 == NIL, "W+/N", P5) P6 := IF(P6 == NIL, "N/W", P6) P7 := IF(P7 == NIL, "N/W", P7) MEMVAR->OBUT := NEWBUTTON() ADDBUTTON(OBUT, P3 + 5 + L8, 31, 18, P4, NIL, .T.) L9 := WIN(P3, 10, P3 + 8 + L8, 69, P2, P5, P6) VLDISPBOX(P3 + 2, 11, P3 + 7 + L8, 11, B_SINGLE, "W+/W") VLDISPBOX(P3 + 2, 68, P3 + 7 + L8, 68, B_SINGLE, "N+/W") DEVPOS(P3 + 2, 11) VLDEVOUT(chr(218), "W+/W") DEVPOS(P3 + 7 + L8, 11) VLDEVOUT(chr(192), "W+/W") DEVPOS(P3 + 2, 12) VLDEVOUT(REPLICATE(chr(196),56), "W+/W") DEVPOS(P3 + 7 + L8, 12) VLDEVOUT(REPLICATE(chr(196),56), "N+/W") DEVPOS(P3 + 2, 68) VLDEVOUT(chr(191), "N+/W") DEVPOS(P3 + 7 + L8, 68) VLDEVOUT(chr(217), "N+/W") IF VALTYPE(P1) == "A" FOR I := 1 TO L8 DEVPOS(P3 + 2 + I, 13) VLDEVOUT(PADC(P1[I], 54), P7) NEXT ELSE DEVPOS(P3 + 3, 13) VLDEVOUT(PADC(P1, 54), P7) ENDIF SETCURSOR(0) PROCBUTTON(OBUT, 1, 1) RSTENV(L9) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: MSGBOX3D2 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 Return: Variable Example: MSGBOX3D2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) .......................................................................... */ FUNCTION MSGBOX3D2(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10) LOCAL L11 := MEMVAR->I := 0, L12 := MEMVAR->OBUT := {} P4 := IF(P4 == NIL, "&Sim", P4) P5 := IF(P5 == NIL, "&NÆo", P5) P6 := IF(P6 == NIL, 1, P6) P7 := IF(P7 == NIL, 2, P7) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L11 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L11 + 8) / 2), P3) P8 := IF(P8 == NIL, "W+/N", P8) P9 := IF(P9 == NIL, "N/W", P9) P10 := IF(P10 == NIL, "N/W", P10) MEMVAR->OBUT := NEWBUTTON() ADDBUTTON(OBUT, P3 + 5 + L11, 21, 18, P4, NIL, IF(P7 == 1, .T., .F.)) ADDBUTTON(OBUT, P3 + 5 + L11, 41, 18, P5, NIL, IF(P7 == 2, .T., .F.)) L12 := WIN(P3, 10, P3 + 8 + L11, 69, P2, P8, P9) VLDISPBOX(P3 + 2, 11, P3 + 7 + L11, 11, B_SINGLE, "W+/W") VLDISPBOX(P3 + 2, 68, P3 + 7 + L11, 68, B_SINGLE, "N+/W") DEVPOS(P3 + 2, 11) VLDEVOUT(chr(218), "W+/W") DEVPOS(P3 + 7+l11, 11) VLDEVOUT(chr(192), "W+/W") DEVPOS(P3 + 2, 12) VLDEVOUT(REPLICATE(chr(196), 56), "W+/W") DEVPOS(P3 + 7 + L11, 12) VLDEVOUT(REPLICATE(chr(196), 56), "N+/W") DEVPOS(P3 + 2, 68) VLDEVOUT(chr(191), "N+/W") DEVPOS(P3 + 7+l11, 68) VLDEVOUT(chr(217), "N+/W") IF VALTYPE(P1) == "A" FOR I := 1 TO L11 DEVPOS(P3 + 2 + I, 13) VLDEVOUT(PADC(P1[I], 54), P10) NEXT ELSE DEVPOS(P3 + 3, 13) VLDEVOUT(PADC(P1, 54), P10) ENDIF SETCURSOR(0) MEMVAR->I := PROCBUTTON(OBUT, 1, IF(P6 < 3, P6, 2)) RSTENV(L12) RETURN I /*------------------- Convertido para Harbour -------------- 2005 - Name: MSGBOX3D3 Params: P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 Return: Variable Example: MSGBOX3D3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) .......................................................................... */ FUNCTION MSGBOX3D3(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11) LOCAL L12, L13, L14, L15 P4 := IF(P4 == NIL, "&Sim", P4) P5 := IF(P5 == NIL, "&NÆo", P5) P6 := IF(P6 == NIL, "&Cancelar", P6) P7 := IF(P7 == NIL, 1, P7) P8 := IF(P8 == NIL, 3, P8) P1 := IF(P1 == NIL, "", P1) P2 := IF(P2 == NIL, "Aten‡Æo!", P2) L12 := IF(VALTYPE(P1) == "A", LEN(P1), 1) P3 := IF(P3 == NIL, INT(12 - (L12 + 8) / 2), P3) P9 := IF(P9 == NIL, "W+/N", P9) P10 := IF(P10 == NIL, "N/W", P10) P11 := IF(P11 == NIL, "N/W", P11) L14 := NEWBUTTON() ADDBUTTON(L14, P3 + 5 + L12, 13, 18, P4, NIL, IF(P8 == 1, .T., .F.)) ADDBUTTON(L14, P3 + 5 + L12, 31, 18, P5, NIL, IF(P8 == 2, .T., .F.)) ADDBUTTON(L14, P3 + 5 + L12, 49, 18, P6, NIL, IF(P8 == 3, .T., .F.)) L13 := WIN(P3, 10, P3 + 8 + L12, 69, P2, P9, P10) VLDISPBOX(P3 + 2, 11, P3 + 7 + L12, 11, B_SINGLE, "W+/W") VLDISPBOX(P3 + 2, 68, P3 + 7 + L12, 68, B_SINGLE, "N+/W") DEVPOS(P3 + 2, 11) VLDEVOUT(chr(218), "W+/W") DEVPOS(P3 + 7+l12, 11) VLDEVOUT(chr(192), "W+/W") DEVPOS(P3 + 2, 12) VLDEVOUT(REPLICATE(chr(196), 56), "W+/W") DEVPOS(P3 + 7 + L12, 12) VLDEVOUT(REPLICATE(chr(196), 56), "N+/W") DEVPOS(P3 + 2, 68) VLDEVOUT(chr(191), "N+/W") DEVPOS(P3 + 7+l12, 68) VLDEVOUT(chr(217), "N+/W") IF VALTYPE(P1) == "A" FOR L15 := 1 TO L12 DEVPOS(P3 + 2 + L15, 13) VLDEVOUT(PADC(P1[L15], 54), P11) NEXT ELSE DEVPOS(P3 + 3, 13) VLDEVOUT(PADC(P1, 54), P11) ENDIF SETCURSOR(0) L15 := PROCBUTTON(L14, 1, IF(P7 < 4, P7, 3)) RSTENV(L13) RETURN L15 /*------------------- Convertido para Harbour -------------- 2005 - Name: PROCBUTTON Params: P1, P2, P3, P4 Return: Number Example: PROCBUTTON(P1, P2, P3, P4) .......................................................................... */ FUNCTION PROCBUTTON(P1, P2, P3, P4) LOCAL L5 := SETCURSOR(0) LOCAL L6, L7, L8, L9 := 0 P2 := IF(P2 == NIL, 1, P2) P3 := IF(P3 == NIL, 1, P3) SHOWBUTTON(P1, P2, P4) DO WHILE .NOT. P1[P3, 4] P3 := IF((++P3) > LEN(P1), 1, P3) ENDDO DO WHILE L9 == 0 SHOWBUTFOC(P1[P3], P2, P4) L6 := WAITSTATE() IF L6[1] == 1 IF (L7 := ASCAN(P1, {|BL1|UPPER(CHR(L6[2])) == UPPER(BL1[8])})) ; <> 0 P3 := BUTGOTO(P1, P3, L7, P2, P4) P3 := L9 := BUTEXECUTE(P1, P3, P2, P4) ELSEIF L6[2] == 19 .OR. L6[2] == 271 .OR. L6[2] == 5 P3 := BUTLEFT(P1, P3, P2, P4) ELSEIF L6[2] == 4 .OR. L6[2] == 9 .OR. L6[2] == 24 P3 := BUTRIGHT(P1, P3, P2, P4) ELSEIF L6[2] = 27 IF (L7 := ASCAN(P1, {|BL1|BL1[5]})) <> 0 .AND. P1[L7, 4] P3 := BUTGOTO(P1, P3, L7, P2, P4) P3 := L9 := BUTEXECUTE(P1, P3, P2, P4) ENDIF ELSEIF L6[2] == 13 .AND. P1[P3, 4] P3 := L9 := BUTEXECUTE(P1, P3, P2, P4) ENDIF ELSEIF L6[1] == 2 IF (L8 := CHKBTMOUSE(P1, L6)) <> 0 .AND. L8 <> P3 P3 := BUTGOTO(P1, P3, L8, P2, P4) ENDIF ELSEIF L6[1] == 3 IF (L8 := CHKBTMOUSE(P1, L6)) <> 0 P3 := BUTGOTO(P1, P3, L8, P2, P4) P3 := L9 := BUTEXECUTE(P1, L8, P2, P4) ENDIF ELSEIF L6[1] == 4 .AND. (L8 := CHKBTMOUSE(P1, L6)) <> 0 .AND. L8 <> ; P3 P3 := BUTGOTO(P1, P3, L8, P2, P4) ENDIF ENDDO SETCURSOR(L5) RETURN L9 /*------------------- Convertido para Harbour -------------- 2005 - Name: BUTGOTO Params: P1, P2, P3, P4, P5 Return: Undefined Example: BUTGOTO(P1, P2, P3, P4, P5) .......................................................................... */ STATIC FUNCTION BUTGOTO(P1, P2, P3, P4, P5) HIDEBUTFOC(P1[P2], P4, P5) P2 := IF(LEN(P1) >= P3, P3, P2) SHOWBUTFOC(P1[P2], P4, P5) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: BUTLEFT Params: P1, P2, P3, P4 Return: Number Example: BUTLEFT(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION BUTLEFT(P1, P2, P3, P4) HIDEBUTFOC(P1[P2], P3, P4) P2 := IF((--P2) == 0, LEN(P1), P2) SHOWBUTFOC(P1[P2], P3, P4) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: BUTRIGHT Params: P1, P2, P3, P4 Return: Number Example: BUTRIGHT(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION BUTRIGHT(P1, P2, P3, P4) HIDEBUTFOC(P1[P2], P3, P4) P2 := IF((++P2) > LEN(P1), 1, P2) SHOWBUTFOC(P1[P2], P3, P4) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWBUTFOC Params: P1, P2, P3 Return: Nil Example: SHOWBUTFOC(P1, P2, P3) .......................................................................... */ STATIC FUNCTION SHOWBUTFOC(P1, P2, P3) DRAWBUTTON(P1, P2, P3, 2, .F.) SHOWBUTMSG(P1, P2, P3) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: BUTEXECUTE Params: P1, P2, P3, P4 Return: Undefined Example: BUTEXECUTE(P1, P2, P3, P4) .......................................................................... */ STATIC FUNCTION BUTEXECUTE(P1, P2, P3, P4) DRAWBUTTON(P1[P2], P3, P4, 3, .F., .F.) INKEY(0.12) DRAWBUTTON(P1[P2], P3, P4, 2, .F.) EVAL(P1[P2, 3]) INKEY(0.12) HIDEBUTFOC(P1[P2], P3, P4) RETURN P2 /*------------------- Convertido para Harbour -------------- 2005 - Name: CHKBTMOUSE Params: P1, P2 Return: Variable Example: CHKBTMOUSE(P1, P2) .......................................................................... */ STATIC FUNCTION CHKBTMOUSE(P1, P2) LOCAL L3 := MEMVAR->NBUT := 0 LOCAL L4, L5, L6 FOR L3 := 1 TO LEN(P1) L4 := P1[L3, 6] L5 := P1[L3, 7] L6 := P1[L3, 7] + P1[L3, 9] - 1 IF P2[2] == L4 .AND. P2[3] >= L5 .AND. P2[3] <= L6 MEMVAR->NBUT := L3 EXIT ENDIF NEXT RETURN NBUT /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWBUTTON Params: P1, P2, P3 Return: Nil Example: SHOWBUTTON(P1, P2, P3) .......................................................................... */ FUNCTION SHOWBUTTON(P1, P2, P3) AEVAL(P1, {|BL1|DRAWBUTTON(BL1, P2, P3)}) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: HIDEBUTFOC Params: P1, P2, P3 Return: Nil Example: HIDEBUTFOC(P1, P2, P3) .......................................................................... */ STATIC FUNCTION HIDEBUTFOC(P1, P2, P3) DRAWBUTTON(P1, P2, P3, 1, .T.) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: DRAWBUTTON Params: P1, P2, P3, P4, P5, P6 Return: Nil Example: DRAWBUTTON(P1, P2, P3, P4, P5, P6) .......................................................................... */ STATIC FUNCTION DRAWBUTTON(P1, P2, P3, P4, P5, P6) LOCAL L7, L8, L9, L10, L11, L12, L13, L14, L15, L16, L17, L18, L19, L20,; L21, L22, L23, L24, L25, L26, L27 P4 := IF(P4 == NIL, 1, P4) P5 := IF(P5 == NIL, .T., P5) P6 := IF(P6 == NIL, .T., P6) L16 := TEXTBUTTON(P1[1]) IF P2 = 1 L7 := "N/W" L8 := IF(P6, "W*/N", "N*/N") L9 := "W+*/N" L10 := "W*/N" L12 := "W+*/N" L13 := "N+*/N" L15 := IF(P1[4], "GR+*/N", "W*/N") ELSEIF P2 = 2 L7 := "N*/W" L8 := IF(P6, "W+/W", "N+/W") L9 := "N/W" L10 := "N+/W" L12 := "N/W" L13 := "W/W" L15 := IF(P1[4], "W+/W", "N+/W") ELSEIF P2 = 3 L7 := P3[1] L8 := IF(P6, P3[2], P3[3]) L9 := P3[4] L10 := P3[5] L12 := P3[6] L13 := P3[7] L15 := IF(P1[4], P3[8], P3[5]) ENDIF IF P4 = 1 L16 := PADC(L16, P1[9] - 3) L17 := AT(UPPER(P1[8]), UPPER(L16)) - 1 L11 := IF(P1[4], L9, L10) L14 := L13 ELSEIF P4 = 2 L16 := PADC(L16, P1[9] - 3) L17 := AT(UPPER(P1[8]), UPPER(L16)) - 1 L11 := IF(P1[4], L9, L10) L14 := L12 ELSEIF P4 = 3 L16 := " " + LEFT(PADC(L16, P1[9] - 3), P1[9] - 4) L17 := AT(UPPER(P1[8]), UPPER(L16)) - 1 L11 := IF(P1[4], L9, L10) L14 := L12 ENDIF L26 := AT(ALLTRIM(L16), L16) - 1 L27 := L26 + LEN(P1[1]) + 2 IF P5 L18 := Chr( 218 ) L19 := Chr( 196 ) L20 := Chr( 191 ) L21 := Chr( 179 ) L22 := Chr( 217 ) L23 := Chr( 196 ) L24 := Chr( 192 ) L25 := Chr( 179 ) ELSE L18 := Chr( 201 ) L19 := Chr( 205 ) L20 := Chr( 187 ) L21 := Chr( 186 ) L22 := Chr( 188 ) L23 := Chr( 205 ) L24 := Chr( 200 ) L25 := Chr( 186 ) ENDIF DEVPOS(P1[6] - 1, P1[7]) VLDEVOUT(L18 + REPLICATE(L19, P1[9] - 2) + L20, L7) DEVPOS(P1[6], P1[7]) VLDEVOUT(L25, L7) DEVPOS(P1[6], P1[7] + 1) VLDEVOUT(" ", L8) DEVPOS(P1[6], P1[7] + 2) VLDEVOUT(L16, L11) DEVPOS(P1[6], P1[7] + 2 + L17) VLDEVOUT(P1[8], L15) DEVPOS(P1[6], P1[7] + P1[9] - 1) VLDEVOUT(L21, L7) DEVPOS(P1[6] + 1, P1[7]) VLDEVOUT(L24 + REPLICATE(L23, P1[9] - 2) + L22, L7) DEVPOS(P1[6], P1[7] + L26) VLDEVOUT("[", L14) DEVPOS(P1[6], P1[7] + L27) VLDEVOUT("]", L14) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: TEXTBUTTON Params: P1 Return: String Example: TEXTBUTTON(P1) .......................................................................... */ STATIC FUNCTION TEXTBUTTON(P1) LOCAL L2 := "" LOCAL L3 := AT("&", P1) LOCAL L4 := SUBSTR(P1, 1, L3 - 1) LOCAL L5 := SUBSTR(P1, L3 + 1) RETURN IF(L3 <> 0, L4 + L5, P1) /*------------------- Convertido para Harbour -------------- 2005 - Name: SHOWBUTMSG Params: P1, P2, P3 Return: Nil Example: SHOWBUTMSG(P1, P2, P3) .......................................................................... */ STATIC FUNCTION SHOWBUTMSG(P1, P2, P3) LOCAL L4 := IF(P2 == 3, P3[9], "R*/W") IF P1[2] <> NIL .OR. P1[2] <> ("") DWNMSG(P1[2], L4) ENDIF RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: SETKEYMOUSE Params: P1, P2 Return: Array Example: SETKEYMOUSE(P1, P2) .......................................................................... */ FUNCTION SETKEYMOUSE(P1, P2) LOCAL L3, L4, L5 := {} IF PCOUNT() = 1 L3 := ASCAN(S2_7, {|BL1|BL1[1] == P1}) IF L3 > 0 L5 := S2_7[L3, 2] ENDIF ELSEIF LEN(P2) = 4 L3 := ASCAN(S2_7, {|BL1|BL1[1] == P1}) IF L3 > 0 L5 := S2_7[L3, 2] S2_7[L3, 1] := P1 S2_7[L3, 2] := P2 ELSE AADD(S2_7, {P1, P2}) ENDIF ELSEIF LEN(P2) = 0 L3 := ASCAN(S2_7, {|BL1|BL1[1] == P1}) IF L3 > 0 L5 := S2_7[L3, 2] ADEL(S2_7, L3) ASIZE(S2_7, LEN(S2_7) - 1) ENDIF ENDIF RETURN L5 /*------------------- Convertido para Harbour -------------- 2005 - Name: WAITSTATE Params: None. Return: Array Example: WAITSTATE() .......................................................................... */ FUNCTION WAITSTATE() STATIC S2_8 := 0 STATIC S2_9 := 0 STATIC S2_10 := 0 LOCAL L1 := {0, NIL, NIL} LOCAL L2, L3 := ARRAY(4) LOCAL L4 := VLSCRSAVER() LOCAL L5, L6, L7 RESETTIMER() DO WHILE L1[1] == 0 IF SECONDS() - GETTIMER() > L4[1] EVAL(L4[2]) RESETTIMER() ENDIF IF (L2 := NINKEY()) <> 0 L1[2] := L2 L1[1] := 1 ELSE VLMOUSEINF(L3) IF L3[1] .OR. L3[2] IF S2_8 == 0 .OR. S2_8 == 3 L1[1] := S2_8 := 2 L1[2] := L3[3] L1[3] := L3[4] S2_9 := L3[3] S2_10 := L3[4] ELSEIF (S2_8 == 2 .OR. S2_8 == 4) .AND. (L3[3] <> S2_9 .OR. L3[; 4] <> S2_10) L1[1] := S2_8 := 4 L1[2] := L3[3] L1[3] := L3[4] S2_9 := L3[3] S2_10 := L3[4] ENDIF ELSEIF S2_8 == 2 .OR. S2_8 == 4 L1[1] := S2_8 := 3 L1[2] := L3[3] L1[3] := L3[4] ELSE L1[1] := S2_8 := 0 ENDIF ENDIF IF L1[1] = 3 L7 := ACLONE(GETKEYMOUS()) FOR L6 := 1 TO LEN(L7) IF L1[2] >= L7[L6, 2, 1] .AND. L1[2] <= L7[L6, 2, 2] .AND. L1[; 3] >= L7[L6, 2, 3] .AND. L1[3] <= L7[L6, 2, 4] L1[1] := S2_8 := 0 IF (L5 := SETKEY(L7[L6, 1])) <> NIL EVAL(L5, PROCNAME(1), PROCLINE(1), "") ENDIF ENDIF NEXT ENDIF ENDDO RETURN L1 /*------------------- Convertido para Harbour -------------- 2005 - Name: VLKEYBOARD Params: P1 Return: Nil Example: VLKEYBOARD(P1) .......................................................................... */ FUNCTION VLKEYBOARD(P1) __KEYBOARD(P1) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: VLGETMOVTO Params: P1 Return: Undefined Example: VLGETMOVTO(P1) .......................................................................... */ FUNCTION VLGETMOVTO(P1) STATIC S2_1 LOCAL L2 := S2_1 IF PCOUNT() > 0 S2_1 := P1 ENDIF RETURN L2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SETMOVLEFT Params: P1 Return: Undefined Example: SETMOVLEFT(P1) .......................................................................... */ FUNCTION SETMOVLEFT(P1) STATIC S2_3 := .F. LOCAL L2 := S2_3 IF P1 <> NIL S2_3 := P1 ENDIF RETURN L2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SETMOVRIGH Params: P1 Return: Undefined Example: SETMOVRIGH(P1) .......................................................................... */ FUNCTION SETMOVRIGH(P1) STATIC S2_4 := .F. LOCAL L2 := S2_4 IF P1 <> NIL S2_4 := P1 ENDIF RETURN L2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SETMOVFLAG Params: P1 Return: Undefined Example: SETMOVFLAG(P1) .......................................................................... */ FUNCTION SETMOVFLAG(P1) STATIC S2_5 := .F. LOCAL L2 := S2_5 IF P1 <> NIL S2_5 := P1 ENDIF RETURN L2 /*------------------- Convertido para Harbour -------------- 2005 - Name: SETBARMSG Params: P1 Return: Undefined Example: SETBARMSG(P1) .......................................................................... */ FUNCTION SETBARMSG(P1) STATIC S2_2 := .T. LOCAL L2 := S2_2 IF P1 <> NIL S2_2 := P1 ENDIF RETURN L2 /*------------------- Convertido para Harbour -------------- 2005 - Name: RESETTIMER Params: None. Return: Number Example: RESETTIMER() .......................................................................... */ FUNCTION RESETTIMER() RETURN S2_6 := SECONDS() /*------------------- Convertido para Harbour -------------- 2005 - Name: VLSCRSAVER Params: P1, P2 Return: Undefined Example: VLSCRSAVER(P1, P2) .......................................................................... */ FUNCTION VLSCRSAVER(P1, P2) STATIC S2_11 := {180, {||VLMARQUEE()}} LOCAL L3 := ACLONE(S2_11) S2_11[1] := IF(P1 <> NIL, P1, S2_11[1]) S2_11[2] := IF(P2 <> NIL, P2, S2_11[2]) RETURN L3 /*------------------- Convertido para Harbour -------------- 2005 - Name: GETTIMER Params: None. Return: Undefined Example: GETTIMER() .......................................................................... */ FUNCTION GETTIMER() RETURN S2_6 /*------------------- Convertido para Harbour -------------- 2005 - Name: GETKEYMOUS Params: None. Return: Undefined Example: GETKEYMOUS() .......................................................................... */ FUNCTION GETKEYMOUS() RETURN S2_7 /*------------------- Convertido para Harbour -------------- 2005 - Name: WAITSAVER Params: P1 Return: Logical Example: WAITSAVER(P1) .......................................................................... */ FUNCTION WAITSAVER(P1) LOCAL L2 := ARRAY(4) LOCAL L3 := ARRAY(4) LOCAL L4, L5 := .F. VLMOUSEINF(L2) L3 := ACLONE(L2) RESETTIMER() DO WHILE .T. IF (L4 := INKEY()) <> 0 L5 := .T. EXIT ENDIF VLMOUSEINF(L2) IF L3[1] <> L2[1] .OR. L3[2] <> L2[2] .OR. L3[3] <> L2[3] .OR. L3[4] ; <> L2[4] L5 := .T. EXIT ENDIF IF P1 == NIL EXIT ELSEIF P1 = 0 LOOP ELSEIF SECONDS() - GETTIMER() >= P1 EXIT ENDIF ENDDO RETURN L5 /*------------------- Convertido para Harbour -------------- 2005 - Name: VLMARQUEE Params: P1, P2, P3 Return: Nil Example: VLMARQUEE(P1, P2, P3) .......................................................................... */ FUNCTION VLMARQUEE(P1, P2, P3) LOCAL L4 := SAVENV(0, 0, 24, 79) LOCAL L5, L6, L7 SETCURSOR(0) P1 := IF(P1 == NIL, "Pressione algo para continuar...", P1) P2 := IF(P2 == NIL, "W/N", P2) P3 := IF(P3 == NIL, 0.1, P3) SETCOLOR("") VLSCROLL() SETPOS(0, 0) DO WHILE .T. FOR L6 := 0 TO 24 FOR L7 := 0 TO 79 DEVPOS(L6, L7) VLDEVOUT(P1, P2) L5 := WAITSAVER(P3) IF L5 EXIT ENDIF DEVPOS(L6, L7) VLDEVOUT(" ") NEXT IF L5 EXIT ENDIF NEXT IF L5 EXIT ENDIF ENDDO RSTENV(L4) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: SOMBRA Params: P1, P2, P3, P4 Return: Nil Example: SOMBRA(P1, P2, P3, P4) .......................................................................... */ FUNCTION SOMBRA(P1, P2, P3, P4) LOCAL L5, L6, L7 := VLSAVESCREEN(P1 + 1, P4 + 1, P3 + 1, P4 + 2) LOCAL L8 := VLSAVESCREEN(P3 + 1, P2 + 2, P3 + 1, P4 + 2) FOR L5 := 2 TO LEN(L7) STEP 2 L6 := SHADOW(ASC(SUBSTR(L7, L5, 1))) L7 := STUFF(L7, L5, 1, L6) NEXT FOR L5 := 2 TO LEN(L8) STEP 2 L6 := SHADOW(ASC(SUBSTR(L8, L5, 1))) L8 := STUFF(L8, L5, 1, L6) NEXT VLRESTSCREEN(P1 + 1, P4 + 1, P3 + 1, P4 + 2, L7) VLRESTSCREEN(P3 + 1, P2 + 2, P3 + 1, P4 + 2, L8) RETURN NIL /*------------------- Convertido para Harbour -------------- 2005 - Name: SHADOW Params: P1 Return: String Example: SHADOW(P1) .......................................................................... */ STATIC FUNCTION SHADOW(P1) LOCAL L2 := P1 % 16 LOCAL L3 := (P1 - L2) / 16 LOCAL L4 := {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7} L2 := L4[L2 + 1] L3 := L4[L3 + 1] RETURN CHR(16 * L3 + L2) /*------------------- Convertido para Harbour -------------- 2005 - Name: VLGETREADER Params: P1 Return: Undefined Example: VLGETREADER(P1) .......................................................................... */ PROCEDURE VLGETREADER(P1) LOCAL L2, L3, L4, L5, L6, L7, L8, L9, L10, L11, L12, L13 := ARRAY(4) LOCAL L14 L2 := ASCAN(GETLIST, {|BL1|BL1 == P1}) IF .NOT. VLGETMOVTO() == NIL .AND. L2 <> VLGETMOVTO() IF L2 > VLGETMOVTO() P1:EXITSTATE := 1 ELSE P1:EXITSTATE := 2 ENDIF ELSE VLGETMOVTO(NIL) L11 := GETPREVALIDATE(P1) IF L11 P1:SETFOCUS() // P1:LEFT() DO WHILE P1:EXITSTATE() == 0 IF P1:TYPEOUT() P1:EXITSTATE := 5 ENDIF DO WHILE P1:EXITSTATE() == 0 L4 := .F. L5 := .F. DO WHILE .NOT. L5 .AND. .NOT. L4 L14 := WAITSTATE() IF L14[1] = 1 L3 := L14[2] L5 := .T. ENDIF IF .NOT. L5 L8 := L14[2] L9 := L14[3] IF L14[1] = 2 L10 := ASCAN(GETLIST, {|BL1|L8 == BL1:ROW() .AND. ; L9 >= BL1:COL() .AND. L9 <= BL1:COL() + LEN(; TRANSFORM(BL1:VARGET(), BL1:PICTURE())) - 1}) L4 := L10 > 0 ENDIF ENDIF ENDDO IF L5 GETAPPLYKEY(P1, L3) ELSE VLGETGOTO(L10) ENDIF ENDDO L12 := GETPOSTVALIDATE(P1) IF .NOT. L12 P1:EXITSTATE := 0 VLGETMOVTO(NIL) ENDIF ENDDO P1:KILLFOCUS() ENDIF ENDIF RETURN