401 lines
16 KiB
Plaintext
401 lines
16 KiB
Plaintext
/*
|
||
* $Id$
|
||
*/
|
||
|
||
/*
|
||
* Las siguientes partes son derechos adquiridos de sus autores individuales.
|
||
* www - http://www.harbour-project.org
|
||
*
|
||
* Copyright 2000 Alejandro de G rate <alex_degarate@hotmail.com>
|
||
* Documentaci¢n en Espa¤ol de: BROWSE(), DBEDIT(), TBROWSEDB(), DBSKIPPER()
|
||
*
|
||
* Copyright 1999 Chen Kedem <niki@actcom.co.il>
|
||
* Documentaci¢n en Ingl‚s de: BROWSE(), DBEDIT(), TBROWSEDB(), DBSKIPPER()
|
||
*
|
||
* Vea doc/license.txt por los t‚rminos de la licencia.
|
||
*
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* DBEDIT()*
|
||
* $CATEGORY$
|
||
* Entrada y salida de datos
|
||
* $ONELINER$
|
||
* Despliega registros en una tabla
|
||
* $SYNTAX$
|
||
* DBEDIT( [<nSup>], [<nIzq>], [<nInf>], [<nDer>], [<acColumnas>], ;
|
||
* [<xFuncionUsuario>], [<xColumnSayPictures>], ;
|
||
* [<xCabeceraColumna>], ;
|
||
* [<xSeparadorCabecera>], [<xSeparadorColumna>], ;
|
||
* [<xSeparadorPie>], [<xPieColumna>] ) --> lExito
|
||
* $ARGUMENTS$
|
||
* <nSup> coordenada para la fila Superior de visualizaci¢n. El rango
|
||
* para <nSup> va de cero a MAXROW(), por defecto es cero.
|
||
*
|
||
* <nIzq> coordenada para la columna izquierda de visualizaci¢n. El
|
||
* rango para <nIzq> va de cero a MAXCOL(), por defecto es cero.
|
||
*
|
||
* <nInf> coordenada para la fila inferior de visualizaci¢n. El rango
|
||
* para <nInf> va de cero a MAXROW(), por defecto es MAXROW().
|
||
*
|
||
* <nDer> coordenada para la columna derecha de visualizaci¢n. El rango
|
||
* para <nDer> va de cero a MAXCOL(), por defecto es MAXCOL().
|
||
*
|
||
* <acColumnas> es un array de expresiones de caracteres que contienen
|
||
* los nombres de los campos de la base de datos, ¢ expresiones para la
|
||
* visualizaci¢n en cada columna.
|
||
* Si no es especificada, por defecto es la visualizaci¢n de todos los
|
||
* campos de la base de datos en el rea de trabajo actual.
|
||
*
|
||
* <xFuncionUsuario> es el nombre de una funci¢n ¢ un bloque de c¢digo
|
||
* que podr¡a ser llamado cada vez que una tecla no reconocida ha sido
|
||
* presionada ¢ cuando no hay m s teclas para ser procesadas y DBEDIT()
|
||
* va al modo inactivo. Si <xFuncionUsuario> es una cadena de caracteres
|
||
* ‚sta debe contener el nombre de una funci¢n de usuario definida, que
|
||
* sea v lida y sin par‚ntesis.
|
||
* Ambos la funci¢n definida por el usuario ¢ el bloque de c¢digo
|
||
* deber n aceptar dos par metros: nModo y nActualColumna.
|
||
* Ambos deber¡an devolver un valor num‚rico que corresponda a uno de
|
||
* los c¢digos de retorno esperados.
|
||
* (Vea la tabla m s abajo con la lista de nModo y los c¢digos de
|
||
* retorno).
|
||
*
|
||
* <xColumnSayPictures> es un molde (picture) opcional.
|
||
* Si <xColumnSayPictures> es una cadena de caracteres, todas las
|
||
* columnas pueden usar el mismo valor como cadena de molde (picture).
|
||
* Si <xColumnSayPictures> es un array, cada elemento debe ser una
|
||
* cadena de caracteres que corresponde a la cadena (picture) usada de
|
||
* molde para la columna con el mismo ¡ndice. Vea la ayuda para @...SAY
|
||
* para tener m s informaci¢n acerca de los valores de molde (picture).
|
||
*
|
||
* <xCabeceraColumna> contiene los t¡tulos de cabecera para cada columna
|
||
* si ‚ste es una cadena de caracteres, todas las columnas tendr n el
|
||
* mismo encabezado, si ‚ste es un array, cada elemento es una cadena
|
||
* de caracteres que contienen el titulo de cabecera para cada campo.
|
||
* La cabecera puede ser dividido en m s de una l¡nea al poner un punto
|
||
* y coma (;) en los lugares donde Ud. desea romper la l¡nea.
|
||
* Si es omitida el valor por defecto para cada cabecera de columna es
|
||
* tomado de <acColumnas> ¢ el nombre del campo de la base de datos, si
|
||
* <acColumnas> no fue especificado
|
||
*
|
||
* <xSeparadorCabecera> es un array que contiene caracteres que dibujan
|
||
* las l¡neas que separan las cabeceras y los datos de los campos .
|
||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||
* podr¡a ser usada para la visualizaci¢n de la misma l¡nea para todos
|
||
* los campos.
|
||
* El valor por defecto es una l¡nea doble.
|
||
*
|
||
* <xSeparadorColumna> es un array que contiene caracteres que dibujan
|
||
* las l¡neas que separan las columnas visualizadas. En lugar de un
|
||
* array Ud. puede usar una cadena de caracteres que podria ser usada
|
||
* para la visualizaci¢n de la misma l¡nea para todos los campos.
|
||
* El valor por defecto es una l¡nea simple.
|
||
*
|
||
* <xSeparadorPie> es un array que contiene caracteres que dibujan
|
||
* las l¡neas que separan el rea de datos de los campos y el pie.
|
||
* En lugar de un array Ud. puede usar una cadena de caracteres que
|
||
* podr¡a ser usada para la visualizaci¢n de la misma l¡nea para todos
|
||
* los campos. El valor por defecto es ning£n separador de pie.
|
||
*
|
||
* <xPieColumna> contiene el pie para ser visualizado al final de
|
||
* cada columna, si este es una cadena de caracteres, todas las columnas
|
||
* tendr n el mismo pie, si este es un array, cada elemento es una
|
||
* cadena de caracteres que contienen el pie para cada campo. El pie
|
||
* puede ser dividido en m s de una l¡nea al poner un punto y coma (;)
|
||
* en los lugares donde Ud. desea romper la l¡nea. Si es omitido, ning£n
|
||
* pie es visualizado.
|
||
* $RETURNS$
|
||
* DBEDIT() retorna .F. si no hay una base de datos abierta en ese rea
|
||
* de trabajo, ¢ si el n£mero de columnas para la visualizaci¢n es cero,
|
||
* en caso contrario DBEDIT() devuelve .T.
|
||
* $DESCRIPTION$
|
||
* DBEDIT() visualiza y permite editar registros de una ¢ m s reas de
|
||
* trabajo en una grilla en pantalla. Cada columna es definida por los
|
||
* elementos de <acColumnas> y es el equivalente de un campo.
|
||
* Cada fila es el equivalente de un registro de la base de datos.
|
||
*
|
||
*
|
||
* A Continuaci¢n estan las teclas manejadas por DBEDIT(): </par>
|
||
* -------------------------------------------------------
|
||
*
|
||
* Tecla Significado
|
||
*
|
||
* Izquierda Mueve una columna a la izquierda (campo previo)
|
||
* Derecha Mueve una columna a la derecha (proximo campo)
|
||
* Arriba Mueve arriba una fila (registro previo)
|
||
* Abajo Mueve abajo una fila (proximo registro)
|
||
* Pag-Arriba Mueve a la pantalla previa
|
||
* Pag-Abajo Mueve a la pantalla pr¢xima
|
||
* Ctrl Pag-Arriba Mueve al inicio del archivo
|
||
* Ctrl Pag-Abajo Mueve al final del archivo
|
||
* Inicio Mueve a la columna visible m s a la izquierda
|
||
* Fin Mueve a la columna visible m s a la derecha
|
||
* Ctrl Izquierda Desplaza una columna a la izquierda
|
||
* Ctrl Derecha Desplaza una columna a la deecha
|
||
* Ctrl Inicio Mueve a la columna m s a la izquierda
|
||
* Ctrl Fin Mueve a la columna m s a la derecha
|
||
*
|
||
*
|
||
* Cuando <xFuncionUsuario> es omitida, dos teclas m s estan activas:
|
||
*
|
||
* Tecla significado
|
||
*
|
||
* Esc Termina BROWSE()
|
||
* Enter Termina BROWSE()
|
||
*
|
||
*
|
||
* Cuando DBEDIT() ejecuta <xFuncionUsuario> le pasa los siguientes
|
||
* argumentos:
|
||
* nModo y el ¡ndice del registro actual en <acColumnas>.
|
||
* Si <acColumnas> es omitido, el n£mero de ¡ndice es n£mero de FIELD()
|
||
* de la estructura de la base de datos abierta.
|
||
*
|
||
*
|
||
* Valores de los Modos en DBEDIT() : </par>
|
||
* ---------------------------------
|
||
*
|
||
* Dbedit.ch Valor Significado
|
||
*
|
||
* DE_IDLE 0 DBEDIT() esta inactivo, todas la teclas de
|
||
* movimiento han sido procesadas.
|
||
* DE_HITTOP 1 Intento de mover el cursor m s alla de la parte
|
||
* superior del archivo
|
||
* DE_HITBOTTOM 2 Intento de mover el cursor despues del final
|
||
* del archivo.
|
||
* DE_EMPTY 3 No hay registros en el rea de trabajo, la base
|
||
* de datos est vacia.
|
||
* DE_EXCEPT 4 Interrupci¢n de teclado
|
||
*
|
||
*
|
||
*
|
||
* La funci¢n definida por el usuario ¢ el bloque de c¢digo debe
|
||
* retornar un valor que le indique a DBEDIT() que hacer a continuaci¢n.
|
||
*
|
||
*
|
||
* C¢digos de retorno de la Funci¢n del Usuario: </par>
|
||
* --------------------------------------------
|
||
*
|
||
* Dbedit.ch Valor Significado
|
||
*
|
||
* DE_ABORT 0 Aborta DBEDIT().
|
||
* DE_CONT 1 Continua DBEDIT() como ahora.
|
||
* DE_REFRESH 2 Fueza relectura/revisualizaci¢n en pantalla de
|
||
* todas las filas de datos
|
||
*
|
||
*
|
||
* La funci¢n del usuario es llamada una vez en cada uno de los
|
||
* siguientes casos:
|
||
* - La base de datos esta vac¡a.
|
||
* - El usuario trata de mover m s alla de la parte superior ¢ de la
|
||
* parte inferior del archivo.
|
||
* - Interrupci¢n de teclado, el usuario ha presionado una tecla que no
|
||
* puede ser manejada por DBEDIT().
|
||
* - El buffer de teclado esta vac¡o ¢ un refresco de pantalla acaba
|
||
* de ocurrir.
|
||
*
|
||
* Nota Importante:
|
||
* ---------------
|
||
* DBEDIT() es una funci¢n de compatibilidad, esta fu‚ superada por la
|
||
* clase TBrowse y no es recomendada para nuevas aplicaciones.
|
||
* $EXAMPLES$
|
||
* <fixed>
|
||
* // Despliega un archivo DBF usando valores por defecto
|
||
* USE Test
|
||
* DBEDIT()
|
||
* </fixed>
|
||
*
|
||
* $STATUS$
|
||
* S
|
||
* $COMPLIANCE$
|
||
* <xFuncionUsuario> puede ser tambi‚n un bloque de c¢digo, esta es una
|
||
* extensi¢n de Harbour.
|
||
*
|
||
* CA-Clipper lanzar un error si no hay una base de datos abierta
|
||
* Harbour puede retornar .F.
|
||
*
|
||
* Clipper es inconsistente y lanzar un error si el n£mero de columnas
|
||
* es cero. Harbour puede retornar .F.
|
||
* Las NG de CA-Clipper 5.2 indican que el valor devuelto es NIL,
|
||
* esto es err¢neo y deber¡a ser un valor l¢gico.
|
||
*
|
||
* Hay un c¢digo de retorno (3) indocumentado para las funciones
|
||
* definidas por el usuario en Clipper (ambos 87 and 5.x). este es un
|
||
* Modo de agregado (Append) el cual:
|
||
* "Divide la pantalla para permitir m s que datos sean agregados en el
|
||
* rea de la ventana".
|
||
* Este modo no es soportado por Harbour.
|
||
* $FILES$
|
||
* Los archivos de cabecera son dbedit.ch, inkey.ch
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* @...SAY,BROWSE(),TBrowse class,TRANSFORM()
|
||
* $END$
|
||
*/
|
||
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* BROWSE()*
|
||
* $CATEGORY$
|
||
* Entrada y salida de datos
|
||
* $ONELINER$
|
||
* Despliega un archivo de base de datos
|
||
* $SYNTAX$
|
||
* BROWSE( [<nSup>, <nIzq>, <nInf>, <nDer>] ) --> lExito
|
||
* $ARGUMENTS$
|
||
* <nSup> coordenada de la fila Superior de visualizaci¢n.
|
||
*
|
||
* <nIzq> coordenada de la columna izquierda de visualizaci¢n.
|
||
*
|
||
* <nInf> coordenada de la fila inferior de visualizaci¢n.
|
||
*
|
||
* <nDer> coordenada de la columna derecha de visualizaci¢n.
|
||
* $RETURNS$
|
||
* BROWSE() retorna .F. si no hay una base de datos abierta en ese rea
|
||
* de trabajo, en caso contrario devuelve .T.
|
||
* $DESCRIPTION$
|
||
* BROWSE() es un visualizador de bases de datos de prop¢sito general,
|
||
* sin demasiado trabajo ud. puede desplegar un archivo DBF con las
|
||
* siguientes teclas:
|
||
*
|
||
*
|
||
* Tecla Significado
|
||
*
|
||
* Izquierda Mueve una columna a la izquierda (campo previo)
|
||
* Derecha Mueve una columna a la derecha (proximo campo)
|
||
* Arriba Mueve arriba una fila (registro previo)
|
||
* Abajo Mueve abajo una fila (proximo registro)
|
||
* Pag-Arriba Mueve a la pantalla previa
|
||
* Pag-Abajo Mueve a la pantalla proxima
|
||
* Ctrl Pag-Arriba Mueve al inicio del archivo
|
||
* Ctrl Pag-Abajo Mueve al final del archivo
|
||
* Inicio Mueve a la columna visible m s a la izquierda
|
||
* Fin Mueve a la columna visible m s a la derecha
|
||
* Ctrl Izquierda Desplaza una columna a la izquierda
|
||
* Ctrl Derecha Desplaza una columna a la deecha
|
||
* Ctrl Inicio Mueve a la columna m s a la izquierda
|
||
* Ctrl Fin Mueve a la columna m s a la derecha
|
||
* Esc Termina el BROWSE()
|
||
*
|
||
*
|
||
*
|
||
* En la parte superior de la pantalla ud. ve una l¡nea de estado con
|
||
* la siguiente indicaci¢n:
|
||
*
|
||
*
|
||
* Registro ###/### N£mero registro actual / N£mero Total de registros.
|
||
* <none> No hay registros, el archivo esta vacio.
|
||
* <new> Ud.esta en modo de Agregado al final del archivo.
|
||
* <Deleted> El registro actual esta borrado.
|
||
* <bof> Ud. esta en el comienzo del archivo.
|
||
*
|
||
*
|
||
* Ud. deber¡a pasar las cuatro coordenadas validas, si menos de cuatro
|
||
* par metros son pasados al BROWSE() las coordenadas por defecto son:
|
||
* 1, 0, MAXROW(), MAXCOL().
|
||
* $EXAMPLES$
|
||
* <fixed>
|
||
* // muestra como desplegar una base de datos
|
||
* USE Test
|
||
* BROWSE()
|
||
* </fixed>
|
||
* $STATUS$
|
||
* S
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* DBEDIT()*,TBrowse class
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* TBrowseDB()
|
||
* $CATEGORY$
|
||
* Clase TBrowse
|
||
* $ONELINER$
|
||
* Crea un nuevo objeto TBrowse para ser usado con una base de datos.
|
||
* $SYNTAX$
|
||
* TBrowseDB( [<nSup>], [<nIzq>], [<nInf>], [<nDer>] ) --> oBrowse
|
||
* $ARGUMENTS$
|
||
* <nSup> coordenada de la fila superior de visualizaci¢n.
|
||
*
|
||
* <nIzq> coordenada de la columna izquierda de visualizaci¢n.
|
||
*
|
||
* <nInf> coordenada de la fila inferior de visualizaci¢n.
|
||
*
|
||
* <nDer> coordenada de la columna derecha de visualizaci¢n.
|
||
* $RETURNS$
|
||
* TBrowseDB() retorna un nuevo objeto TBrowse con unas coordenadas
|
||
* espec¡ficas y un :SkipBlock, :GoTopBlock y :GoBottomBlock por defecto
|
||
* para desplegar una base de datos.
|
||
* $DESCRIPTION$
|
||
* TBrowseDB() es una forma r pida de crear un objeto TBrowse junto con
|
||
* el soporte m¡nimo para desplegar una base de datos.
|
||
* Note que el objeto TBrowse devuelto no contiene objetos TBColumn y
|
||
* Ud. necesita agregar una columna para cada campo por Ud. mismo
|
||
* $EXAMPLES$
|
||
* <fixed>
|
||
* Para un buen ejemplo, mire en el c¢digo fuente de la funci¢n BROWSE()
|
||
* en el subdirectorio ../source/rtl/browse.prg
|
||
* </fixed>
|
||
* $STATUS$
|
||
* S
|
||
* $COMPLIANCE$
|
||
* TBrowseDB() funciona exactamente como la funci¢n de CA-Clipper
|
||
* TBrowseDB().
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* BROWSE()*,TBColumn class,TBrowse class,TBrowseNew()
|
||
* $END$
|
||
*/
|
||
|
||
/* $DOC$
|
||
* $FUNCNAME$
|
||
* dbSkipper()
|
||
* $CATEGORY$
|
||
* Base de datos
|
||
* $ONELINER$
|
||
* Funci¢n para ayudar a saltar registros en la base de datos
|
||
* $SYNTAX$
|
||
* dbSkipper( <nRecs> ) --> nSkipped
|
||
* $ARGUMENTS$
|
||
* <nRecs> es el n£mero de registros a saltar relativos al registro
|
||
* actual. N£meros positivos tratan de mover el puntero de registro
|
||
* hacia adelante y N£meros negativos tratan de mover el puntero de
|
||
* registro hacia atr s <nRecs> registros.
|
||
* $RETURNS$
|
||
* dbSkipper() retorna el n£mero actual de registros saltados.
|
||
* $DESCRIPTION$
|
||
* dbSkipper() es una funci¢n de ayuda usada en el mecanismo de
|
||
* despliegue para saltar un n£mero de registros mientras le da al
|
||
* llamador una indicaci¢n del n£mero actual de registros saltados.
|
||
* $EXAMPLES$
|
||
* <fixed>
|
||
* // Abre un archivo y chequea si tenemos suficientes registros en el
|
||
* USE ventas
|
||
* IF dbSkipper( 100 ) == 100
|
||
* ? "Buen trabajo!, debes irte de fiesta"
|
||
* ELSE
|
||
* ? "Muy mal, Ud. deber¡a realmente trabajar m s duro"
|
||
* ENDIF
|
||
* CLOSE
|
||
* </fixed>
|
||
* $STATUS$
|
||
* R
|
||
* $COMPLIANCE$
|
||
* dbSkipper() es una funci¢n de compatibilidad con XBase++ y no existe
|
||
* como una funci¢n est ndar en CA-Clipper 5.x
|
||
* Esta funci¢n es solamente visible si el archivo:
|
||
* ../source/rtl/browdb.prg fue compilado con la bandera HB_COMPAT_XPP.
|
||
* $FILES$
|
||
* La librer¡a es rtl
|
||
* $SEEALSO$
|
||
* DBSKIP(),SKIP
|
||
* $END$
|
||
*/
|
||
|
||
|