No es tan sencillo como parece.. ya que el formulario utiliza
sentencias y variables que no conozco..
El screen cuenta con un campo llamado m.t_codjui, un campo llamado
m.t_obs, un boton llamado m.edit_btn,
otro boton llamado m.del_btn y uno ulitmo llamado m.prnt_btn, este
boton es el que llama al reporte
En el metodo preprograma esta el siguiente script:
#WNAME wz_win
#READCLAUSE NOLOCK
*~ WIZARDSCREEN
#SECTION1
PRIVATE wzfields,wztalk
IF SET("TALK") = "ON"
SET TALK OFF
m.wztalk = "ON"
ELSE
m.wztalk = "OFF"
ENDIF
m.wzfields=SET('FIELDS')
SET FIELDS OFF
IF m.wztalk = "ON"
SET TALK ON
ENDIF
#SECTION2
#DEFINE C_DBFEMPTY 'La base de datos est vac¡a. ¨Desea agregar alg£n
registro?'
#DEFINE C_EDITS 'Por favor, finalice su edici¢n.'
#DEFINE C_TOPFILE 'Principio de archivo.'
#DEFINE C_ENDFILE 'Fin de archivo.'
#DEFINE C_BRTITLE 'Encontrar registro'
#DEFINE C_NOLOCK 'En este momento no se puede bloquear el registro,
int‚ntelo m s tarde.'
#DEFINE C_ECANCEL 'Edici¢n cancelada.'
#DEFINE C_DELREC '¨Eliminar registros seleccionados?'
#DEFINE C_NOFEAT 'Caracter¡stica no disponible ahora.'
#DEFINE C_NOWIZ 'Asistente no disponible.'
#DEFINE C_MAKEREPO 'Crear un informe con el Asistente para informes.'
#DEFINE C_NOREPO 'No se puede crear el informe.'
#DEFINE C_DELNOTE 'Eliminando registros...'
#DEFINE C_READONLY 'La tabla es de s¢lo lectura: no se permite su
edici¢n.'
#DEFINE C_NOTABLE 'No hay ninguna tabla seleccionada. Abra una tabla
o ejecute una consulta.'
#DEFINE C_BADEXPR 'Expresi¢n no v lida.'
#DEFINE C_LOCWIZ 'Buscar
WIZARD.APP:'
#DEFINE C_MULTITABLE 'Tiene tablas de relaci¢n multiple: no se permite
agregar registros.'
MOVE WINDOW 'wz_win' CENTER
PRIVATE isediting,isadding,wztblarr
PRIVATE wzolddelete,wzolderror,wzoldesc
PRIVATE wzalias, tempcurs,wzlastrec
PRIVATE isreadonly,find_drop,is2table
IF EMPTY(ALIAS())
WAIT WINDOW C_NOTABLE
RETURN
ENDIF
m.wztblarr= ''
m.wzalias=SELECT()
m.isediting=.F.
m.isadding=.F.
m.is2table = .F.
m.wzolddelete=SET('DELETE')
SET DELETED ON
m.tempcurs=SYS(2015) &&used if General field
m.wzlastrec = 1
m.wzolderror=ON('error')
ON ERROR DO wizerrorhandler
wzoldesc=ON('KEY','ESCAPE')
ON KEY LABEL ESCAPE
m.find_drop = IIF(_DOS,0,2)
m.isreadonly=IIF(ISREAD(),.T.,.F.)
IF m.isreadonly
WAIT WINDOW C_READONLY TIMEOUT 1
ENDIF
IF RECCOUNT()=0 AND !m.isreadonly AND fox_alert(C_DBFEMPTY)
APPEND BLANK
ENDIF
DEFINE WINDOW comjud ;
AT 0.000, 0.000 ;
SIZE 37.846,105.833 ;
TITLE "Comentario Judicial" ;
FONT "MS Sans Serif", 8 ;
STYLE "B" ;
NOFLOAT ;
NOCLOSE ;
NOMINIMIZE ;
DOUBLE ;
in consulta ;
COLOR RGB(,,,192,192,192) ;
ICON FILE LOCFILE("G:\SISJUD\ICO\UBASOFT.ICO","ICO", ;
"¿Dónde está ubasoft?")
MOVE WINDOW comjud CENTER
selec t_juicio // esta es la tabla del sistema judicial.
SCATTER MEMVAR MEMO
En el metodo postprograma y procedimientos esta el siguiente codigo:
SET DELETED &wzolddelete
SET FIELDS &wzfields
ON ERROR &wzolderror
ON KEY LABEL ESCAPE &wzoldesc
DO CASE
CASE _DOS AND SET('DISPLAY')='VGA25'
@24,0 CLEAR TO 24,79
CASE _DOS AND SET('DISPLAY')='VGA50'
@49,0 CLEAR TO 49,79
CASE _DOS
@24,0 CLEAR TO 24,79
ENDCASE
****Procedures****
PROCEDURE readdeac
IF isediting
ACTIVATE WINDOW 'wz_win'
WAIT WINDOW C_EDITS NOWAIT
ENDIF
IF !WVISIBLE(WOUTPUT())
CLEAR READ
RETURN .T.
ENDIF
RETURN .F.
PROCEDURE readact
IF !isediting
SELECT (m.wzalias)
SHOW GETS
ENDIF
DO REFRESH
RETURN
PROCEDURE wizerrorhandler
*This very simple error handler is primarily intended
*to trap for General field OLE errors which may occur
*during editing from the MODIFY GENERAL window.
WAIT WINDOW message()
RETURN
PROCEDURE printrec
PRIVATE sOldError,wizfname,saverec,savearea,tmpcurs,tmpstr
PRIVATE prnt_btn,p_recs,p_output,pr_out,pr_record
STORE 1 TO p_recs,p_output
STORE 0 TO prnt_btn
STORE RECNO() TO saverec
m.sOldError=ON('error')
DO pdialog
IF m.prnt_btn = 2
RETURN
ENDIF
IF !FILE(ALIAS()+'.FRX')
m.wizfname=SYS(2004)+'WIZARDS\'+'
WIZARD.APP'
IF !FILE(m.wizfname)
ON ERROR *
m.wizfname=LOCFILE('
WIZARD.APP','APP',C_LOCWIZ)
ON ERROR &sOldError
IF !'
WIZARD.APP'$UPPER(m.wizfname)
WAIT WINDOW C_NOWIZ
RETURN
ENDIF
ENDIF
WAIT WINDOW C_MAKEREPO NOWAIT
m.savearea=SELECT()
m.tmpcurs='_'+LEFT(SYS(3),7)
CREATE CURSOR (m.tmpcurs) (comment m)
m.tmpstr = '* LAYOUT = COLUMNAR'+CHR(13)+CHR(10)
INSERT INTO (m.tmpcurs) VALUES(m.tmpstr)
SELECT (m.savearea)
DO (m.wizfname) WITH '','WZ_QREPO','NOSCRN/
CREATE',ALIAS(),m.tmpcurs
USE IN (m.tmpcurs)
WAIT CLEAR
IF !FILE(ALIAS()+'.FRX') &&wizard could not create report
WAIT WINDOW C_NOREPO
RETURN
ENDIF
ENDIF
m.pr_out=IIF(m.p_output=1,'TO PRINT NOCONSOLE','PREVIEW')
m.pr_record=IIF(m.p_recs=1,'NEXT 1','ALL')
REPORT FORM (ALIAS()) &pr_out &pr_record
GO m.saverec
RETURN
PROCEDURE BTN_VAL
PARAMETER m.btnname
DO CASE
* CASE m.btnname='TOP'
* GO TOP
* WAIT WINDOW C_TOPFILE NOWAIT
* CASE m.btnname='PREV'
* IF !BOF()
* SKIP -1
* ENDIF
* IF BOF()
* WAIT WINDOW C_TOPFILE NOWAIT
* GO TOP
* ENDIF
* CASE m.btnname='NEXT'
* IF !EOF()
* SKIP 1
* ENDIF
* IF EOF()
* WAIT WINDOW C_ENDFILE NOWAIT
* GO BOTTOM
* ENDIF
* CASE m.btnname='END'
* GO BOTTOM
* WAIT WINDOW C_ENDFILE NOWAIT
* CASE m.btnname='LOCATE'
* DO loc_dlog
* CASE m.btnname='ADD' AND !isediting &&add record
* isediting=.T.
* isadding=.T.
* =edithand('ADD')
* _curobj=1
* DO refresh
* SHOW GETS
* RETURN
CASE m.btnname='EDIT' AND !isediting &&edit record
IF EOF() OR BOF()
WAIT WINDOW C_ENDFILE NOWAIT
RETURN
ENDIF
IF RLOCK()
isediting=.T.
_curobj=1
DO refresh
RETURN
ELSE
WAIT WINDOW C_NOLOCK
ENDIF
CASE m.btnname='EDIT' AND isediting &&save record
IF isadding
=edithand('SAVE')
ELSE
GATHER MEMVAR MEMO
ENDIF
UNLOCK
isediting=.F.
isadding=.F.
DO refresh
CASE m.btnname='DELETE' AND isediting &&cancel record
IF isadding
=edithand('CANCEL')
ENDIF
isediting=.F.
isadding=.F.
UNLOCK
WAIT WINDOW C_ECANCEL NOWAIT
DO refresh
CASE m.btnname='DELETE'
m.bailout=.T. &&this is needed if used with FoxApp
CLEAR READ
RETURN
CASE m.btnname='PRINT'
DO printrec
RETURN
CASE m.btnname='EXIT'
ENDCASE
SCATTER MEMVAR MEMO
SHOW GETS
RETURN
PROCEDURE REFRESH
DO CASE
CASE m.isreadonly AND RECCOUNT()=0
SHOW GETS DISABLE
SHOW GET exit_btn ENABLE
CASE m.isreadonly
SHOW GET add_btn DISABLE
SHOW GET del_btn DISABLE
SHOW GET edit_btn DISABLE
CASE (RECCOUNT()=0 OR EOF()) AND !m.isediting
SHOW GETS DISABLE
SHOW GET add_btn ENABLE
SHOW GET exit_btn ENABLE
CASE m.isediting
SHOW GET find_drop DISABLE
SHOW GET top_btn DISABLE
SHOW GET prev_btn DISABLE
SHOW GET loc_btn DISABLE
SHOW GET next_btn DISABLE
SHOW GET end_btn DISABLE
SHOW GET add_btn DISABLE
SHOW GET prnt_btn DISABLE
SHOW GET exit_btn DISABLE
SHOW GET edit_btn,1 PROMPT "\<Guardar"
SHOW GET del_btn,1 PROMPT "\<Cancelar"
ON KEY LABEL ESCAPE DO BTN_VAL WITH 'DELETE'
RETURN
OTHERWISE
SHOW GET edit_btn,1 PROMPT "E\<ditar"
SHOW GET del_btn,1 PROMPT "\<Salir"
SHOW GETS ENABLE
ENDCASE
IF m.is2table
SHOW GET add_btn DISABLE
ENDIF
ON KEY LABEL ESCAPE
RETURN
PROCEDURE edithand
PARAMETER m.paction
* procedure handles edits
DO CASE
CASE m.paction = 'ADD'
SCATTER MEMVAR MEMO BLANK
CASE m.paction = 'SAVE'
INSERT INTO (ALIAS()) FROM MEMVAR
CASE m.paction = 'CANCEL'
* nothing here
ENDCASE
RETURN
PROCEDURE fox_alert
PARAMETER wzalrtmess
PRIVATE alrtbtn
m.alrtbtn=2
DEFINE WINDOW _qec1ij2t7 AT 0,0 SIZE 8,50 ;
FONT "MS Sans Serif",10 STYLE 'B' ;
FLOAT NOCLOSE NOMINIMIZE DOUBLE TITLE WTITLE()
MOVE WINDOW _qec1ij2t7 CENTER
ACTIVATE WINDOW _qec1ij2t7 NOSHOW
@ 2,(50-txtwidth(wzalrtmess))/2 SAY wzalrtmess;
FONT "MS Sans Serif", 10 STYLE "B"
@ 6,18 GET m.alrtbtn ;
PICTURE "@*HT \<Aceptar;\?\!\<Cancelar" ;
SIZE 1.769,8.667,1.333 ;
FONT "MS Sans Serif", 8 STYLE "B"
ACTIVATE WINDOW _qec1ij2t7
READ CYCLE MODAL
RELEASE WINDOW _qec1ij2t7
RETURN m.alrtbtn=1
PROCEDURE pdialog
DEFINE WINDOW _qjn12zbvh ;
AT 0.000, 0.000 ;
SIZE 13.231,54.800 ;
TITLE "Microsoft FoxPro" ;
FONT "MS Sans Serif", 8 ;
FLOAT NOCLOSE MINIMIZE SYSTEM
MOVE WINDOW _qjn12zbvh CENTER
ACTIVATE WINDOW _qjn12zbvh NOSHOW
@ 2.846,33.600 SAY "Salida:" ;
FONT "MS Sans Serif", 8 ;
STYLE "BT"
@ 2.846,4.800 SAY "Imprimir:" ;
FONT "MS Sans Serif", 8 ;
STYLE "BT"
@ 4.692,7.200 GET m.p_recs ;
PICTURE "@*RVN \<Registro actual;\<Todos los registros" ;
SIZE 1.308,18.500,0.308 ;
DEFAULT 1 ;
FONT "MS Sans Serif", 8 ;
STYLE "BT"
@ 4.692,36.000 GET m.p_output ;
PICTURE "@*RVN \<Impresora;\<Presentar" ;
SIZE 1.308,12.000,0.308 ;
DEFAULT 1 ;
FONT "MS Sans Serif", 8 ;
STYLE "BT"
@ 10.154,16.600 GET m.prnt_btn ;
PICTURE "@*HT I\<mprimir;\<Cancelar" ;
SIZE 1.769,8.667,0.667 ;
DEFAULT 1 ;
FONT "MS Sans Serif", 8 ;
STYLE "B"
ACTIVATE WINDOW _qjn12zbvh
READ CYCLE MODAL
RELEASE WINDOW _qjn12zbvh
RETURN
PROCEDURE loc_dlog
PRIVATE gfields,i
DEFINE WINDOW wzlocate FROM 1,1 TO 20,40;
SYSTEM GROW CLOSE ZOOM FLOAT FONT "MS Sans Serif",8
MOVE WINDOW wzlocate CENTER
m.gfields=SET('FIELDS',2)
IF !EMPTY(RELATION(1))
SET FIELDS ON
IF m.gfields # 'GLOBAL'
SET FIELDS GLOBAL
ENDIF
IF EMPTY(FLDLIST())
m.i=1
DO WHILE !EMPTY(OBJVAR(m.i))
IF ATC('M.',OBJVAR(m.i))=0
SET FIELDS TO (OBJVAR(m.i))
ENDIF
m.i = m.i + 1
ENDDO
ENDIF
ENDIF
BROWSE WINDOW wzlocate NOEDIT NODELETE ;
NOMENU TITLE C_BRTITLE
SET FIELDS &gfields
SET FIELDS OFF
RELEASE WINDOW wzlocate
RETURN