CON ESTE PROCEDIMIENTO VISUALIZO REPORTES PRN
** p1 nombre de archivo a visualizar
** p2 fila inicial ** p3 columna inicial ** p4 fila final ** p5 columna final ** p6 color de fondo #include 'inkey.ch' PROCEDURE VIEWER(P1, P2, P3, P4, P5, P6) LOCAL L7, L8, L9, L10, L11, L12, L13, L14 := .F. LOCAL L15, L16, L17 := 0 LOCAL L18 := 1 LOCAL L19, L20, L21, L22 IF P2 == NIL .OR. P2 < 0 P2 := 0 ENDIF IF P3 == NIL .OR. P3 < 0 P3 := 0 ENDIF IF P4 == NIL .OR. P4 > MAXROW() P4 := MAXROW() ENDIF IF P5 == NIL .OR. P5 > MAXCOL() P5 := MAXCOL() ENDIF P6 := SETCOLOR(P6) IF (L7 := FOPEN(P1, 32)) <> -1 SCROLL(P2, P3, P4, P5) SETPOS(P4, P3) L22 := "" * AEVAL({86, 73, 69, 87, 69, 82, 32, 49, 46, 48, 32, 115, 104, 97, 114,; * 101, 119, 97, 114, 101, 46, 32, 80, 108, 101, 97, 115, 101, ; * 32, 114, 101, 103, 105, 115, 116, 101, 114, 32, 105, 116, 46}, ; * {|BL1|L22 := L22 + CHR(BL1)}) DISPOUT(SUBSTR(L22, 1, P5 - P3 + 1)) L22 := NIL --P4 L8 := FSEEK(L7, 0, 2) L11 := P4 - P2 + 1 L12 := P5 - P3 + 1 L9 := {} L10 := {FSEEK(L7, 0, 0)} L13 := 0 DO WHILE L13 < L11 .AND. ATAIL(L10) < L8 AADD(L9, NEXTLINE(L7)) AADD(L10, FSEEK(L7, 0, 1)) ++L13 ENDDO L16 := L11 := L13 DO WHILE !L14 IF L17 <> 0 L18 := MAX(L18 + L17, 1) DISPBEGIN() FOR L13 := 1 TO L11 SETPOS(P2 + L13 - 1, P3) DISPOUT(PAD(SUBSTR(L9[L13], L18), L12)) NEXT DISPEND() L17 := 0 ENDIF IF L16 <> 0 SCROLL(P2, P3, P4, P5, L16) IF L16 > 0 L20 := L11 ELSE L20 := 1 ENDIF L21 := L16 / ABS(L16) L19 := L20 - L16 + L21 FOR L13 := L19 TO L20 STEP L21 SETPOS(P2 - 1 + L13, P3) DISPOUT(SUBSTR(L9[L13], L18, L12)) NEXT L16 := 0 ENDIF L15 := INKEY(0) *********************** L15 VARIABLE DE ENTRADA DE TECLADO DO CASE CASE LASTKEY()=K_SH_F5 DI='LPT1' SAVE SCREEN TO VIEW DO BORDE WITH 17,16,20,64,0,'LS' SET CURSOR ON @18,18 SAY 'Nombre de Archivo :' GET P1 @19,18 SAY 'Dispositivo Salida :' GET DI VALID BUSQUED_('O','2') READ IF LASTKEY()<>27 COPY FILE &P1 TO &DI ENDIF RESTORE SCREEN FROM VIEW CASE L15 == 27 L14 := .T. CASE L15 == 24 L16 := 1 CASE L15 == 5 L16 := -1 CASE L15 == 3 L16 := L11 CASE L15 == 18 L16 := -L11 CASE L15 == 30 IF ATAIL(L10) < L8 L10[1] := L8 L16 := -L11 ENDIF CASE L15 == 31 IF L10[1] > 0 L10[L11 + 1] := 0 L16 := L11 ENDIF CASE L15 == 4 L17 := 1 CASE L15 == 19 L17 := -1 CASE L15 == 2 L17 := 10 CASE L15 == 26 L17 := -10 CASE L15 == 6 L17 := MAX(AMAX(L9) - L12 + 1, 1) - L18 + L17 CASE L15 == 1 L17 := 1 - L18 END CASE IF L16 > 0 FSEEK(L7, ATAIL(L10), 0) L13 := 0 DO WHILE L13 < L16 .AND. ATAIL(L10) < L8 ADEL(L9, 1)[L11] := NEXTLINE(L7) ADEL(L10, 1)[L11 + 1] := FSEEK(L7, 0, 1) ++L13 ENDDO L16 := L13 ELSEIF L16 < 0 FSEEK(L7, L10[1], 0) L13 := 0 DO WHILE L13 > L16 .AND. L10[1] > 0 AINS(L9, 1)[1] := PREVLINE(L7) AINS(L10, 1)[1] := FSEEK(L7, 0, 1) --L13 ENDDO L16 := L13 ENDIF ENDDO FCLOSE(L7) ENDIF SETCOLOR(P6) RETURN /* ------ RESCUE5 1.00(D) (C) APTWARE 1993,94 ------ NAME: NEXTLINE PARAMS: P1 RETURN: STRING EXAMPLE: NEXTLINE(P1) .......................................................................... */ STATIC FUNCTION NEXTLINE(P1) LOCAL L2, L3, L4 := "" LOCAL L5 := 0 LOCAL L6, L7 := .F. LOCAL L8 := .F. LOCAL L9, L10 DO WHILE !(L7 .OR. L8) L2 := SPACE(160) L7 := (L6 := FREAD(P1, @L2, 160)) < 160 L4 := L4 + SUBSTR(L2, 1, L6) L5 := L5 + L6 L9 := AT(CHR(13)+CHR(10), L4) L10 := AT(CHR(12), L4) IF L9 == 0 .OR. L10 == 0 L3 := MAX(L9, L10) ELSE L3 := MIN(L9, L10) ENDIF IF L8 := L3 > 0 FSEEK(P1, L3 - L5 + IF(L3 == L9, 1, 0), 1) L4 := SUBSTR(L4, 1, L3 - 1) ENDIF ENDDO RETURN L4 /* ------ RESCUE5 1.00(D) (C) APTWARE 1993,94 ------ NAME: AMAX PARAMS: P1 RETURN: NUMBER EXAMPLE: AMAX(P1) .......................................................................... */ STATIC FUNCTION AMAX(P1) LOCAL L2 := 0 AEVAL(P1, {|BL1|L2 := MAX(L2, LEN(BL1))}) RETURN L2 /* ------ RESCUE5 1.00(D) (C) APTWARE 1993,94 ------ NAME: PREVLINE PARAMS: P1 RETURN: STRING EXAMPLE: PREVLINE(P1) .......................................................................... */ STATIC FUNCTION PREVLINE(P1) LOCAL L2, L3, L4 := "" LOCAL L5 := 0 LOCAL L6, L7 := .F. LOCAL L8 := .F. LOCAL L9, L10 IF FSEEK(P1, 0, 1) > 0 FSEEK(P1, -1, 1) L2 := " " FREAD(P1, @L2, 1) IF L2 == CHR(12) FSEEK(P1, -1, 1) ELSEIF L2 == CHR(10) FSEEK(P1, -2, 1) ENDIF ENDIF DO WHILE !(L7 .OR. L8) L7 := (L6 := MIN(160, FSEEK(P1, 0, 1))) < 160 L2 := SPACE(L6) FSEEK(P1, -L6, 1) FREAD(P1, @L2, L6) FSEEK(P1, -L6, 1) L4 := L2 + L4 L5 := L5 + L6 L9 := RAT(CHR(13)+CHR(10), L4) L10 := RAT(CHR(12), L4) L3 := MAX(L9, L10) IF L8 := L3 > 0 FSEEK(P1, L3 + IF(L3 == L9, 1, 0), 1) L4 := SUBSTR(L4, L3 + 1 + IF(L3 == L9, 1, 0)) ENDIF ENDDO RETURN L4 SALUDOS
DANTE
--- El lun 8-jun-09, Hector Jhon Guillen Liendo <hectorjhon59@...> escribió:
|
¡Obtén la mejor experiencia en la web!
Descarga gratis el nuevo Internet Explorer 8
http://downloads.yahoo.com/ieak8/?l=e1