2650 lines
93 KiB
C++
2650 lines
93 KiB
C++
/*************************************************************************\
|
||
|* *|
|
||
|* HERM_GST *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* M¢dulo encargado de gestionar la base de datos de hnos. *|
|
||
|* el puntero a la estructura definida. *|
|
||
|* *|
|
||
|* Fecha: 21-07-96 14.34 / 18.00 *|
|
||
|* 23.13 / 00.30 *|
|
||
\*************************************************************************/
|
||
|
||
#include <stdlib.h>
|
||
#include <conio.h>
|
||
#include <alloc.h>
|
||
#include <string.h>
|
||
#include <graphics.h>
|
||
|
||
#include "..\libs\make_bot\make_bot.h"
|
||
#include "..\libs\bdatos\bdatos.hh"
|
||
#include "Herm.h"
|
||
|
||
#define ULTIMO_ITEM 26
|
||
#define INICIO_ITEM 6
|
||
|
||
#define INIcristo 0
|
||
#define INIvirgen 20
|
||
|
||
#define HACIA_ATRAS -1
|
||
#define DESDE_EL_PRINCIPIO 0
|
||
#define HACIA_ADELANTE 1
|
||
|
||
extern int far Espera_TeclaRaton(void);
|
||
|
||
|
||
struct date FechaActual;
|
||
char FICHA_REGISTRO;
|
||
|
||
BDatos BHerm;
|
||
HermStruct SHerm, BHtmp, BHtmp2;
|
||
|
||
BDatos BHBorrados;
|
||
HERMBORRADOS HermanosBorrados;
|
||
|
||
extern CONFIG Config;
|
||
extern BDatos BConfig;
|
||
|
||
int EditComentario(void);
|
||
|
||
void Error(char *cError);
|
||
void MuestraDatos(void);
|
||
void PapeletaDeSitio(void);
|
||
void MuestraFotografia(void);
|
||
void IncluirBorrado( int NHno );
|
||
void BuscaItem( char TipoBusqueda );
|
||
void InsertaEnOrden(char HnoHna);
|
||
char EscogeInsignia( int CtoVirgen );
|
||
void ImprimePapeleta(long CuotaSalida);
|
||
void PreparaNuevoRegistro(int HnoHna);
|
||
void MarcaItem( int NItem, char como );
|
||
int ComparacionParcial( HermStruct A );
|
||
int BuscaConfirmaHermanoBajo( long NHerm );
|
||
void EditItem( int Item, int HnoHna, int Accion );
|
||
void HighLight( int NItem, char fondo, char texto );
|
||
int ComparaRegistros( const void *A, const void *B );
|
||
void Escr_Mensaje(char *Encabezado, char lineas, char Mensaje[][50] );
|
||
extern int DifDate( struct date FechaF, struct date FechaO, struct date *FechaD );
|
||
|
||
//)Û)Û)Û)Û)Û)Û)Û)Û)Û)Û)ÛÛ)Û)Û)Û)Û)Û)Û)Û)Û)Û)ÛÛ)Û)Û)Û)Û)Û)Û)Û)Û)Û)Û
|
||
void MuestraAyudaHerm( char columna );
|
||
void HermNuevoRegistro( HermStruct *NHerm );
|
||
int ObtenMatchHerm( HermStruct *BuscaHerm );
|
||
int Match_Herm( HermStruct A, HermStruct B );
|
||
void EditMatchRef( char Row, HermStruct * BuscaHerm );
|
||
void MatchDrawRef( char Row, HermStruct BuscaHerm, char como );
|
||
void ObtenCoordenadasMatch( char Row, int *X0, int *Y0, int *X1, int *Y1 );
|
||
//)Û)Û)Û)Û)Û)Û)Û)Û)Û)Û)ÛÛ)Û)Û)Û)Û)Û)Û)Û)Û)Û)ÛÛ)Û)Û)Û)Û)Û)Û)Û)Û)Û)Û
|
||
|
||
|
||
|
||
void muestra( int insignia, char como, char CtoVirgen );
|
||
|
||
void ImprimeFicha(void);
|
||
|
||
|
||
long CurrReg = 0;
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* GestionHermanos *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Contempla la gestion total de la base de datos de hnos/as *|
|
||
|* ALTAS, BAJAS, CONSULTAS. *|
|
||
|* *|
|
||
|* Entradas: Base a tratar ( hno/hna ) *|
|
||
|* *|
|
||
|* Salidas: OK Todo ha ido bien *|
|
||
|* ERROR Algo va mal *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int GestionHermanos( char HnoHna, int Accion )
|
||
{
|
||
int CurrItem=0, oldCol = -1;
|
||
char Mensaje[][50] = { "La base de Datos", "esta vacia." };
|
||
char File[80];
|
||
int ok = 0, BPush;
|
||
True_Push = 0;
|
||
|
||
CurrReg = 0;
|
||
|
||
getdate( &FechaActual );
|
||
|
||
strcpy( BHerm.MyHeader.ProgName, "Hermadad" );
|
||
BHerm.MyHeader.VerHi = 1;
|
||
BHerm.MyHeader.VerLow = 0;
|
||
|
||
Imprime_Estaticos(1, "Herm.img");
|
||
Imprime_Secuencia( 1 );
|
||
Imprime_Estaticos(2, "Herm.img");
|
||
if ( Accion == BAJAS )
|
||
outtextxy( 504, 32, "BORRAR" );
|
||
else if ( Accion == CONSULTAS )
|
||
outtextxy( 504, 32, "Guardar" );
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
|
||
// Base de Datos
|
||
if ( HnoHna == HERMANOS )
|
||
{
|
||
strcpy( File, "datos\\hermanos.dbf" );
|
||
FICHA_REGISTRO = 0;
|
||
} else {
|
||
strcpy( File, "datos\\hermanas.dbf" );
|
||
FICHA_REGISTRO = 1;
|
||
}
|
||
|
||
if ( BHerm.AbrirReg( File, sizeof( HermStruct ) ) != OK )
|
||
Error(BHerm.cError);
|
||
|
||
// Hermanos borrados
|
||
if ( HnoHna == HERMANOS )
|
||
strcpy( File, "datos\\hnos_brr.dbf" );
|
||
else
|
||
strcpy( File, "datos\\hnas_brr.dbf" );
|
||
|
||
if ( BHBorrados.AbrirReg( File, sizeof( HERMBORRADOS ) ) != OK )
|
||
Error(BHBorrados.cError);
|
||
|
||
if ( Accion != ALTAS )
|
||
{
|
||
if ( BHerm.Registros() == 0 )
|
||
{
|
||
Escr_Mensaje( "ERROR", 2, Mensaje );
|
||
BHerm.CerrarReg();
|
||
return OK;
|
||
}
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
} else PreparaNuevoRegistro(HnoHna);
|
||
|
||
BHtmp2 = SHerm;
|
||
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
|
||
while( !ok )
|
||
{
|
||
// MarcaItem( CurrItem, INTENSO );
|
||
if ( CurrItem != oldCol )
|
||
{
|
||
oldCol = CurrItem; MuestraAyudaHerm( CurrItem );
|
||
}
|
||
|
||
HighLight( CurrItem, ROJO, NEGRO );
|
||
|
||
BPush = Comprueba_Secuencia( 1, NULL );
|
||
|
||
HighLight( CurrItem, BLANCO, NEGRO );
|
||
|
||
// MarcaItem( CurrItem, NORMAL );
|
||
switch ( BPush )
|
||
{
|
||
case 0: // No se pulso ningun BOTON
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
// El raton todav¡a sigue pulsado
|
||
break;
|
||
case -2:
|
||
if ( (BPush = getch()) != 27 )
|
||
{
|
||
if ( BPush != 13 ) ungetch( BPush );
|
||
EditItem( CurrItem, HnoHna, Accion );
|
||
} else { ok = 1; }
|
||
break;
|
||
// Tecla Normal
|
||
case -1: // Hay una tecla especial en BUFFER
|
||
// La eliminamos
|
||
switch( getch() )
|
||
{
|
||
// Flecha Izquierda
|
||
case 75:
|
||
case 15:
|
||
CurrItem--; if ( CurrItem < 0 ) CurrItem = ULTIMO_ITEM-1;
|
||
break;
|
||
// Flecha Derecha
|
||
case 77:
|
||
case 9:
|
||
CurrItem++; if ( CurrItem >= ULTIMO_ITEM ) CurrItem = 0;
|
||
break;
|
||
// Flecha Arriba
|
||
case 72:
|
||
CurrItem--; if ( CurrItem < 0 ) CurrItem = ULTIMO_ITEM-1;
|
||
break;
|
||
// Flecha Abajo
|
||
case 80:
|
||
CurrItem++; if ( CurrItem >= ULTIMO_ITEM ) CurrItem = 0;
|
||
break;
|
||
}
|
||
break;
|
||
|
||
// INICIO DE BOTONES
|
||
// Avance
|
||
case 1:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
CurrReg++;
|
||
while( CurrReg >= BHerm.Registros() ) CurrReg--;
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
BHtmp2 = SHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
} else {
|
||
if ( Optar( 1, "ALTAS DE HERMANOS", "Dar de alta a este", "hermano y seguir en altas", NULL ) )
|
||
{
|
||
InsertaEnOrden(HnoHna);
|
||
PreparaNuevoRegistro(HnoHna);
|
||
MuestraDatos();
|
||
}
|
||
}
|
||
break;
|
||
// Avance Rapido
|
||
case 2:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
CurrReg+=10;
|
||
while( CurrReg >= BHerm.Registros() ) CurrReg--;
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
BHtmp2 = SHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
}
|
||
break;
|
||
// Retroceso
|
||
case 3:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
CurrReg-=10;
|
||
if ( CurrReg < 0 ) CurrReg = 0;
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
BHtmp2 = SHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
}
|
||
break;
|
||
// Retroceso Rapido
|
||
case 4:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
CurrReg--;
|
||
if ( CurrReg < 0 ) CurrReg = 0;
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
BHtmp2 = SHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
}
|
||
break;
|
||
// Teclas Varias
|
||
case 5:
|
||
// Mientra este en altas sirve para nada
|
||
// Bajas para eliminar la ficha si se pulsa
|
||
if ( Accion == BAJAS )
|
||
{
|
||
if ( Optar( 1, "BAJAS DE HERMANOS", "Confirme el borrado", "de la ficha actual", NULL ) )
|
||
{
|
||
if ( BHerm.DelReg( BHerm.RegActual() ) != OK )
|
||
Error(BHerm.cError);
|
||
IncluirBorrado( SHerm.NHno );
|
||
if ( BHerm.Registros() != 0 )
|
||
{
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
{
|
||
CurrReg = BHerm.Registros() - 1;
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK )
|
||
Error(BHerm.cError);
|
||
|
||
}
|
||
|
||
BHtmp2 = SHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
}
|
||
}
|
||
} else
|
||
if ( Accion == CONSULTAS )
|
||
{
|
||
if ( Optar( 1, "SALVAGUARDIA DE CAMBIOS", "Seguro que deseea", "guardar los cambios ?", NULL ) )
|
||
{
|
||
/*
|
||
if ( BHerm.DelReg( BHerm.RegActual() ) != OK )
|
||
Error();
|
||
*/
|
||
SHerm.NHno = BHtmp2.NHno;
|
||
// InsertaEnOrden(HnoHna);
|
||
BHerm.EscribeReg( (void *)&SHerm, CurrReg );
|
||
}
|
||
}
|
||
break;
|
||
// Menu Principal
|
||
case 6:
|
||
ok = 1;
|
||
break;
|
||
|
||
// Buscar atras
|
||
case ULTIMO_ITEM+INICIO_ITEM+1:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
BuscaItem( HACIA_ATRAS );
|
||
BHtmp2 = SHerm;
|
||
}
|
||
break;
|
||
|
||
// Reiniciar Busqueda
|
||
case ULTIMO_ITEM+INICIO_ITEM+2:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
BuscaItem( DESDE_EL_PRINCIPIO );
|
||
BHtmp2 = SHerm;
|
||
}
|
||
break;
|
||
|
||
// Buscar adelante
|
||
case ULTIMO_ITEM+INICIO_ITEM+3:
|
||
if ( Accion != ALTAS )
|
||
{
|
||
BuscaItem( HACIA_ADELANTE );
|
||
BHtmp2 = SHerm;
|
||
}
|
||
break;
|
||
// Imprime la ficha personal
|
||
case ULTIMO_ITEM+INICIO_ITEM+4:
|
||
ImprimeFicha();
|
||
BHtmp2 = SHerm;
|
||
break;
|
||
// Imprime la papeleta de sitio
|
||
case ULTIMO_ITEM+INICIO_ITEM+5:
|
||
if ( Accion == CONSULTAS )
|
||
{
|
||
PapeletaDeSitio();
|
||
BHtmp2 = SHerm;
|
||
}
|
||
break;
|
||
default:
|
||
// Todos los botones que siguen pertenecen a la base de datos:
|
||
if ( BPush >= INICIO_ITEM && BPush <= 32 )
|
||
{
|
||
// Si no es el actual
|
||
if ( CurrItem != BPush-INICIO_ITEM-1 )
|
||
{
|
||
CurrItem = BPush-INICIO_ITEM-1;
|
||
}
|
||
}
|
||
}
|
||
|
||
if ( ok == 1 && Accion == ALTAS )
|
||
// Quiere realmente dar de alta a ese hermano
|
||
if ( Optar( 1, "ALTA DE HERMANOS", "Desea dar de alta", "esta ficha...", NULL ) )
|
||
InsertaEnOrden(HnoHna);
|
||
}
|
||
|
||
BHerm.CerrarReg();
|
||
BHBorrados.CerrarReg();
|
||
return OK;
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraDatos *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Reescribe todos los datos en la pantalla *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraDatos(void)
|
||
{
|
||
int i;
|
||
|
||
for ( i = 0; i < 26; i++ )
|
||
HighLight( i, BLANCO, NEGRO );
|
||
|
||
};
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MarcaItem *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Pone un marco intenso o normal al item seleccionado *|
|
||
|* *|
|
||
|* Entradas: numero de item *|
|
||
|* NORMAL, INTENSO *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MarcaItem( int NItem, char como )
|
||
{
|
||
struct linesettingstype lineinfo;
|
||
|
||
getlinesettings( &lineinfo );
|
||
setlinestyle( SOLID_LINE, 0, THICK_WIDTH );
|
||
setwritemode(XOR_PUT);
|
||
setcolor ( BLANCO );
|
||
rectangle( Botones[NItem+INICIO_ITEM].Left, Botones[NItem+INICIO_ITEM].Up, Botones[NItem+INICIO_ITEM].Right, Botones[NItem+INICIO_ITEM].Down );
|
||
setlinestyle( lineinfo.linestyle, lineinfo.upattern, lineinfo.thickness );
|
||
setwritemode(COPY_PUT);
|
||
|
||
if ( como == NORMAL )
|
||
{
|
||
setcolor ( NEGRO );
|
||
rectangle( Botones[NItem+INICIO_ITEM].Left, Botones[NItem+INICIO_ITEM].Up, Botones[NItem+INICIO_ITEM].Right, Botones[NItem+INICIO_ITEM].Down );
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Mensaje *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Mustra un mensaje en pantalla y espera una tecla *|
|
||
|* *|
|
||
|* Entradas: Mensaje encabezado *|
|
||
|* 3 comentarios *|
|
||
|* *|
|
||
|* Salidas: OK Todo ha ido bien *|
|
||
|* ERROR Algo va mal *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void Escr_Mensaje(char *Encabezado, char lineas, char Mensaje[][50])
|
||
{
|
||
int Center= (296 - textwidth( Encabezado ) ) / 2;
|
||
char CMen; struct textsettingstype texttypeinfo;
|
||
void *Imagen;
|
||
|
||
if ( (Imagen = malloc( JD_imagesize(170, 165, 470, 315) ) ) == NULL )
|
||
return;
|
||
|
||
getimage( 170, 165, 470, 315, Imagen );
|
||
|
||
gettextsettings( &texttypeinfo );
|
||
|
||
Imprime_Estaticos(20, "Herm.img");
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
|
||
|
||
setcolor( 63 ); outtextxy( 172+Center, 165, Encabezado );
|
||
setcolor( ROJO );
|
||
|
||
for ( CMen = 0; CMen < lineas; CMen++ )
|
||
{
|
||
Center= (296 - textwidth( Mensaje[CMen] ) ) / 2;
|
||
outtextxy( 172+Center, 200+20*CMen, Mensaje[CMen] );
|
||
}
|
||
|
||
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
|
||
|
||
while( kbhit() ) getch();
|
||
Espera_TeclaRaton();
|
||
|
||
putimage( 170, 165, Imagen, COPY_PUT );
|
||
|
||
free( Imagen );
|
||
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* EditItem *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Edita el item que se le pasa como parametro, para ello *|
|
||
|* se mantendr invertido el campo el tiempo que dure la ed. *|
|
||
|* *|
|
||
|* Entradas: Item ha editar *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void EditItem( int NItem, int HnoHna, int Accion )
|
||
{
|
||
char buffer[80];
|
||
int posX, posY, posX1, posY1;
|
||
int tmpVar;
|
||
|
||
posX = Botones[NItem+INICIO_ITEM].Left+3;
|
||
posY = Botones[NItem+INICIO_ITEM].Up+1;
|
||
posX1 = Botones[NItem+INICIO_ITEM].Right-3;
|
||
posY1 = Botones[NItem+INICIO_ITEM].Down-1;
|
||
|
||
switch( NItem )
|
||
{
|
||
// N§ de hermano
|
||
case 0:
|
||
if ( Accion != ALTAS )
|
||
strcpy( buffer, "0" );
|
||
else
|
||
sprintf( buffer, "%ld", SHerm.NHno );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 4, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
if ( atol(buffer) < ( Config.NHnoHna[HnoHna]+1 ) && Accion == ALTAS )
|
||
{
|
||
if ( BuscaConfirmaHermanoBajo( atol(buffer)) )
|
||
SHerm.NHno = atol( buffer );
|
||
} else
|
||
if ( Accion == ALTAS && atol(buffer) == (Config.NHnoHna[HnoHna]+1) ) SHerm.NHno = atol( buffer );
|
||
else SHerm.NHno = atol( buffer );
|
||
break;
|
||
// Nombre
|
||
case 1:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Nombre );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 10, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Nombre, buffer );
|
||
break;
|
||
// Primer Apellido
|
||
case 2:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Apellido1 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Apellido1, buffer );
|
||
break;
|
||
// Segundo Apellido
|
||
case 3:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Apellido2 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Apellido2, buffer );
|
||
break;
|
||
// Direccion
|
||
case 4:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Direccion );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 29, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Direccion, buffer );
|
||
break;
|
||
// Numero
|
||
case 5:
|
||
strcpy( buffer, SHerm.Num );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 3, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Num, buffer );
|
||
break;
|
||
// Piso
|
||
case 6:
|
||
strcpy( buffer, SHerm.Piso );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 5, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Piso, buffer );
|
||
break;
|
||
// C.P.
|
||
case 7:
|
||
sprintf( buffer, "%ld", SHerm.CodP );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
SHerm.CodP = atol( buffer );
|
||
break;
|
||
// Poblacion
|
||
case 8:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Poblacion );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 15, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Poblacion, buffer );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
strcpy( buffer, SHerm.Provincia );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 15, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Provincia, buffer );
|
||
break;
|
||
// Fecha de Nacimiento
|
||
case 10:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
sprintf( buffer, "%02d%02d%04d", (int)SHerm.FechaN.da_day
|
||
, (int)SHerm.FechaN.da_mon
|
||
, (int)SHerm.FechaN.da_year );
|
||
|
||
if ( !( InputCadenaG_T5( buffer, 1, 8, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
{
|
||
if ( buffer[0] == '\0' )
|
||
{
|
||
SHerm.FechaN.da_day = 0;
|
||
SHerm.FechaN.da_mon = 0;
|
||
SHerm.FechaN.da_year = 0;
|
||
} else {
|
||
SHerm.FechaN.da_day = (buffer[0]-'0')*10+(buffer[1]-'0');
|
||
SHerm.FechaN.da_mon = (buffer[2]-'0')*10+(buffer[3]-'0');
|
||
SHerm.FechaN.da_year = (buffer[4]-'0')*1000+(buffer[5]-'0')*100+(buffer[6]-'0')*10+(buffer[7]-'0');
|
||
}
|
||
}
|
||
|
||
if ( // Mayor de 18 a¤os
|
||
DifDate( FechaActual, SHerm.FechaN, NULL ) > 18 &&
|
||
|
||
/*
|
||
( FechaActual.da_year - SHerm.FechaN.da_year ) > 18 &&
|
||
// Mas de un a¤o de antiguedad
|
||
( FechaActual.da_year - SHerm.Antig.da_year ) > 1
|
||
*/
|
||
DifDate( FechaActual, SHerm.Antig, NULL ) > 1
|
||
)
|
||
{
|
||
SHerm.Varios.PuedVotar = 1;
|
||
} else {
|
||
SHerm.Varios.PuedVotar = 0;
|
||
}
|
||
HighLight( 19, BLANCO, NEGRO );
|
||
|
||
break;
|
||
// Antiguedad
|
||
case 11:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
sprintf( buffer, "%02d%02d%04d", (int)SHerm.Antig.da_day
|
||
, (int)SHerm.Antig.da_mon
|
||
, (int)SHerm.Antig.da_year );
|
||
|
||
if ( !( InputCadenaG_T5( buffer, 1, 8, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
{
|
||
if ( buffer[0] == '\0' )
|
||
{
|
||
SHerm.Antig.da_day = 0;
|
||
SHerm.Antig.da_mon = 0;
|
||
SHerm.Antig.da_year = 0;
|
||
} else {
|
||
SHerm.Antig.da_day = (buffer[0]-'0')*10+(buffer[1]-'0');
|
||
SHerm.Antig.da_mon = (buffer[2]-'0')*10+(buffer[3]-'0');
|
||
SHerm.Antig.da_year = (buffer[4]-'0')*1000+(buffer[5]-'0')*100+(buffer[6]-'0')*10+(buffer[7]-'0');
|
||
}
|
||
}
|
||
|
||
if ( // Mayor de 18 a¤os
|
||
/*
|
||
( FechaActual.da_year - SHerm.FechaN.da_year ) > 18 &&
|
||
// Mas de un a¤o de antiguedad
|
||
( FechaActual.da_year - SHerm.Antig.da_year ) > 1
|
||
*/
|
||
DifDate( FechaActual, SHerm.FechaN, NULL ) > 18 &&
|
||
|
||
/*
|
||
( FechaActual.da_year - SHerm.FechaN.da_year ) > 18 &&
|
||
// Mas de un a¤o de antiguedad
|
||
( FechaActual.da_year - SHerm.Antig.da_year ) > 1
|
||
*/
|
||
DifDate( FechaActual, SHerm.Antig, NULL ) > 1
|
||
|
||
)
|
||
{
|
||
SHerm.Varios.PuedVotar = 1;
|
||
} else
|
||
{
|
||
SHerm.Varios.PuedVotar = 0;
|
||
}
|
||
HighLight( 19, BLANCO, NEGRO );
|
||
|
||
break;
|
||
// Reserva
|
||
case 12:
|
||
SHerm.Varios.Reserva = !SHerm.Varios.Reserva;
|
||
break;
|
||
// Posicion
|
||
case 13:
|
||
strcpy( buffer, SHerm.Posicion );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 15, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Posicion, buffer );
|
||
break;
|
||
// Insignia
|
||
case 14:
|
||
tmpVar = EscogeInsignia( SHerm.Varios.CtoVirgen );
|
||
SHerm.Insignia = ( tmpVar == -1 ) ? SHerm.Insignia : tmpVar;
|
||
break;
|
||
// Telefono 1
|
||
case 15:
|
||
if ( Accion != ALTAS )
|
||
buffer[0] = '\0';
|
||
else
|
||
strcpy( buffer, SHerm.Telefono1 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 15, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Telefono1, buffer );
|
||
break;
|
||
// Telefono 2
|
||
case 16:
|
||
strcpy( buffer, SHerm.Telefono2 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 15, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
strcpy( SHerm.Telefono2, buffer );
|
||
break;
|
||
|
||
// De aqui para abajo son CheckBox y se tratan de forma diferente...
|
||
|
||
// Realiza estacion de penitencia
|
||
case 17:
|
||
// SOLO ACCESIBLE DESDE DENTRO Y FUERA
|
||
if ( Optar( 1, "ALTERACION DE CAMPOS", "Seguro que desea", "alterar ese campo?", NULL ) )
|
||
SHerm.Varios.RealPenit = !SHerm.Varios.RealPenit;
|
||
break;
|
||
// Acogido a Cuota Familiar
|
||
case 18:
|
||
SHerm.Varios.CuotaFam = !SHerm.Varios.CuotaFam;
|
||
break;
|
||
// Tiene posibilidad de votar
|
||
case 19:
|
||
SHerm.Varios.PuedVotar = !SHerm.Varios.PuedVotar;
|
||
break;
|
||
// Recibe notificaciones
|
||
case 20:
|
||
SHerm.Varios.Notific = !SHerm.Varios.Notific;
|
||
break;
|
||
// Tiene tunica de la hermandad
|
||
case 21:
|
||
SHerm.Varios.TunicaHd = !SHerm.Varios.TunicaHd;
|
||
break;
|
||
// N§ de Tunica Solo si Tiene tunica de la hermandad
|
||
case 22:
|
||
if ( SHerm.Varios.TunicaHd )
|
||
{
|
||
sprintf( buffer, "%ld", SHerm.NTunica );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, posX, posY, posX1, posY1 ) >> 8 ) )
|
||
SHerm.NTunica = atol( buffer );
|
||
}
|
||
break;
|
||
// Cristo o Virgen
|
||
case 23:
|
||
SHerm.Varios.CtoVirgen = !SHerm.Varios.CtoVirgen;
|
||
HighLight( 24, BLANCO, NEGRO );
|
||
HighLight( 14, BLANCO, NEGRO );
|
||
break;
|
||
// Cristo o Virgen
|
||
case 24:
|
||
SHerm.Varios.CtoVirgen = !SHerm.Varios.CtoVirgen;
|
||
HighLight( 23, BLANCO, NEGRO );
|
||
HighLight( 14, BLANCO, NEGRO );
|
||
break;
|
||
// Comentario
|
||
case 25:
|
||
EditComentario();
|
||
break;
|
||
}
|
||
|
||
while( kbhit() ) getch();
|
||
HighLight( NItem, BLANCO, NEGRO );
|
||
|
||
}
|
||
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* HighLight *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Sobreimprime el fondo del campo. *|
|
||
|* *|
|
||
|* Entradas: Item, fondo. *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void HighLight( int NItem, char fondo, char texto )
|
||
{
|
||
int posX, posY;
|
||
char buffer[80];
|
||
int i;
|
||
|
||
posX = Botones[NItem+INICIO_ITEM].Left;
|
||
posY = Botones[NItem+INICIO_ITEM].Up;
|
||
|
||
setfillstyle( SOLID_FILL, fondo );
|
||
bar( Botones[NItem+INICIO_ITEM].Left, Botones[NItem+INICIO_ITEM].Up, Botones[NItem+INICIO_ITEM].Right, Botones[NItem+INICIO_ITEM].Down );
|
||
setcolor( texto );
|
||
|
||
// Por defecto buffer vacio (un espacio en blanco)
|
||
sprintf( buffer, " " );
|
||
|
||
// Mete en Buffer lo que hay que imprimir, para poder justificarlo
|
||
switch ( NItem )
|
||
{
|
||
// N§ de hermano
|
||
case 0:
|
||
sprintf( buffer, " %05ld", SHerm.NHno );
|
||
break;
|
||
// Nombre
|
||
case 1:
|
||
sprintf( buffer, "%-15s", SHerm.Nombre );
|
||
break;
|
||
// Primer Apellido
|
||
case 2:
|
||
sprintf( buffer, "%-15s", SHerm.Apellido1 );
|
||
break;
|
||
//
|
||
case 3:
|
||
sprintf( buffer, "%-15s", SHerm.Apellido2 );
|
||
break;
|
||
// Direccion
|
||
case 4:
|
||
sprintf( buffer, "%-20s", SHerm.Direccion );
|
||
break;
|
||
// Numero
|
||
case 5:
|
||
sprintf( buffer, "%-3s", SHerm.Num );
|
||
break;
|
||
// Piso
|
||
case 6:
|
||
sprintf( buffer, "%-5s", SHerm.Piso );
|
||
break;
|
||
// C.P.
|
||
case 7:
|
||
sprintf( buffer, " %05ld", SHerm.CodP );
|
||
break;
|
||
// Poblacion
|
||
case 8:
|
||
sprintf( buffer, "%-15s", SHerm.Poblacion );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
sprintf( buffer, "%-15s", SHerm.Provincia );
|
||
break;
|
||
// Fecha de Nacimiento
|
||
case 10:
|
||
sprintf( buffer, "%02d-%02d-%04d", (int)SHerm.FechaN.da_day
|
||
, (int)SHerm.FechaN.da_mon
|
||
, (int)SHerm.FechaN.da_year );
|
||
break;
|
||
// Antiguedad
|
||
case 11:
|
||
sprintf( buffer, "%02d-%02d-%04d", (int)SHerm.Antig.da_day
|
||
, (int)SHerm.Antig.da_mon
|
||
, (int)SHerm.Antig.da_year );
|
||
break;
|
||
// Reserva
|
||
case 12:
|
||
if ( SHerm.Varios.Reserva )
|
||
sprintf( buffer, ".X" );
|
||
break;
|
||
// Ultima posicion
|
||
case 13:
|
||
sprintf( buffer, "%-15s", SHerm.Posicion );
|
||
break;
|
||
// Insignia
|
||
case 14:
|
||
sprintf( buffer, "%-15s", Config.Insignia[ ( SHerm.Varios.CtoVirgen == 0 ? 0 : 1)*20 + SHerm.Insignia ].NInsignia );
|
||
break;
|
||
// Telefono 1
|
||
case 15:
|
||
sprintf( buffer, "%-15s", SHerm.Telefono1 );
|
||
break;
|
||
// Telefono 2
|
||
case 16:
|
||
sprintf( buffer, "%-15s", SHerm.Telefono2 );
|
||
break;
|
||
// Realizo estacion de penitencia
|
||
case 17:
|
||
posY-=3;
|
||
if ( SHerm.Varios.RealPenit )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// Acogido a Cuota Familiar
|
||
case 18:
|
||
posY-=3;
|
||
if ( SHerm.Varios.CuotaFam )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// Tiene posibilidad de votar
|
||
case 19:
|
||
posY-=3;
|
||
if ( SHerm.Varios.PuedVotar )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// Recibe notificaciones
|
||
case 20:
|
||
if ( SHerm.Varios.Notific )
|
||
sprintf( buffer, "*" );
|
||
posY-=3;
|
||
break;
|
||
// Tiene tunica de la hermandad
|
||
case 21:
|
||
posY-=3;
|
||
if ( SHerm.Varios.TunicaHd )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// N§ de Tunica
|
||
case 22:
|
||
if ( SHerm.Varios.TunicaHd )
|
||
sprintf( buffer, "%04d", SHerm.NTunica );
|
||
break;
|
||
// Cristo o Virgen
|
||
case 23:
|
||
posY-=3;
|
||
if ( !SHerm.Varios.CtoVirgen )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// Cristo o Virgen
|
||
case 24:
|
||
posY-=3;
|
||
if ( SHerm.Varios.CtoVirgen )
|
||
sprintf( buffer, "*" );
|
||
break;
|
||
// El comentario es el 25 pero este se trata a parte
|
||
case 25:
|
||
for ( i = 0; i<6; i++ )
|
||
outtextxy( posX+3, (posY+1)+20*i, SHerm.Comentario[i] );
|
||
return;
|
||
}
|
||
|
||
outtextxy( posX+3, posY+1, buffer );
|
||
}
|
||
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Error *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Deber mostar un mensaje de error y abandonar el programa *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void Error(char *cError)
|
||
{
|
||
closegraph();
|
||
cprintf("\r\nSe producio un error: %s", cError );
|
||
cprintf("\r\n%s\r\n", BHerm.cError );
|
||
BHerm.CerrarReg();
|
||
|
||
exit(1);
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* PreparaNuevoRegistro *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Vacia la ficha para poder rellenarla desde cero *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void PreparaNuevoRegistro(int HnoHna)
|
||
{
|
||
int i;
|
||
|
||
|
||
|
||
SHerm.NHno = Config.NHnoHna[HnoHna]+1;
|
||
|
||
strcpy( SHerm.Nombre, "" );
|
||
strcpy( SHerm.Apellido1, "" );
|
||
strcpy( SHerm.Apellido2, "" );
|
||
strcpy( SHerm.Direccion, "" );
|
||
strcpy( SHerm.Num, "" );
|
||
strcpy( SHerm.Piso, "" );
|
||
|
||
SHerm.CodP = 0;
|
||
|
||
strcpy( SHerm.Poblacion, "" );
|
||
strcpy( SHerm.Provincia, "" );
|
||
|
||
SHerm.FechaN.da_day = 0;
|
||
SHerm.FechaN.da_mon = 0;
|
||
SHerm.FechaN.da_year = 0;
|
||
|
||
SHerm.Antig.da_day = FechaActual.da_day;
|
||
SHerm.Antig.da_mon = FechaActual.da_mon;
|
||
SHerm.Antig.da_year = FechaActual.da_year;
|
||
|
||
SHerm.Varios.Reserva = 0;
|
||
|
||
strcpy( SHerm.Posicion, "" );
|
||
|
||
SHerm.Insignia = 0;
|
||
|
||
strcpy( SHerm.Telefono1, "" );
|
||
strcpy( SHerm.Telefono2, "" );
|
||
|
||
SHerm.Varios.CuotaFam = 0;
|
||
SHerm.Varios.Notific = 0;
|
||
SHerm.Varios.PuedVotar = 0;
|
||
SHerm.Varios.RealPenit = 0;
|
||
SHerm.Varios.TunicaHd = 0;
|
||
SHerm.Varios.CtoVirgen = 0;
|
||
|
||
// Aqui vaciamos el comentario
|
||
for ( i=0; i<6; i++ )
|
||
strcpy( SHerm.Comentario[i], "" );
|
||
|
||
|
||
}
|
||
|
||
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* BuscaItem *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Buca el primer item que coincida desde la pos. del parametro*|
|
||
|* *|
|
||
|* Entradas: HACIA_ATRAS DESDE_EL_PRINCIPIO HACIA_DELANTE *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
|
||
/*
|
||
int BuscaItem( int HaciaDonde )
|
||
{
|
||
char Incremento; // Sirve para saber cuanto de incrementa
|
||
// cada vez que se recorre la base
|
||
long posVisitada; // Posicion que estamos visitando
|
||
char enc; // flag para saber si enc == cierto
|
||
HermStruct tmpHerm; // tmp de intercambio
|
||
char Mensaje[3][50];
|
||
long oldPos;
|
||
|
||
|
||
// Dado que la base puede estar odenada segun cualquier topico
|
||
// creo mas razonable buscar como toda la vida: DESDE el principio
|
||
// hasta que se encuentre el item.
|
||
|
||
|
||
oldPos = BHerm.RegActual();
|
||
|
||
if ( HaciaDonde == DESDE_EL_PRINCIPIO )
|
||
{
|
||
posVisitada = 0; Incremento = 1;
|
||
} else {
|
||
posVisitada = CurrReg; Incremento = HaciaDonde;
|
||
// La ficha en la que estoy ya la he visto;; Busco otra
|
||
posVisitada += Incremento;
|
||
}
|
||
|
||
enc = 0;
|
||
// Continua mientras este dentro de los limites y no se encuentre coincidencias
|
||
while( posVisitada >= 0 && posVisitada < BHerm.Registros() && !enc )
|
||
{
|
||
// leo el registro
|
||
BHerm.LeeReg( &tmpHerm, posVisitada );
|
||
|
||
if ( ComparacionParcial( tmpHerm ) )
|
||
{
|
||
enc = 1;
|
||
CurrReg = posVisitada;
|
||
}
|
||
// incremento la posici¢n
|
||
posVisitada += Incremento;
|
||
};
|
||
|
||
// Si se encuentra conincidencia OK!! las paso al registro SHerm
|
||
if ( enc )
|
||
{
|
||
SHerm = tmpHerm;
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
} else {
|
||
if ( HaciaDonde == DESDE_EL_PRINCIPIO )
|
||
{
|
||
strcpy( Mensaje[0], "No se encontr¢ niguna" );
|
||
strcpy( Mensaje[1], "coincidencia." );
|
||
Escr_Mensaje( "Comando BUSCAR", 2, Mensaje );
|
||
} else {
|
||
strcpy( Mensaje[0], "No se encontraron mas" );
|
||
strcpy( Mensaje[1], "coincidencias en este" );
|
||
strcpy( Mensaje[2], "sentido. Pruebe otro." );
|
||
Escr_Mensaje( "Comando BUSCAR", 3, Mensaje );
|
||
}
|
||
CurrReg = oldPos;
|
||
}
|
||
|
||
|
||
|
||
return enc;
|
||
}
|
||
*/
|
||
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* InsertaEnOrden *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Inserta en orden, atendiendo a como este ordenada la base. *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void InsertaEnOrden(char HnoHna)
|
||
{
|
||
long avance;
|
||
char enc; char PorDonde;
|
||
|
||
enc = 0;
|
||
/*
|
||
if ( Config.item_ordenado == 0 )
|
||
{
|
||
PorDonde = ARRIBA;
|
||
avance = BHerm.Registros() - 1;
|
||
while( avance >= 0 && !enc )
|
||
{
|
||
BHerm.LeeReg( (void *)&BHtmp, avance );
|
||
if ( ComparaRegistros( (void *)&SHerm, (void *)&BHtmp ) > 0 )
|
||
avance --;
|
||
else
|
||
enc = 1;
|
||
};
|
||
} else {
|
||
*/
|
||
PorDonde = ABAJO;
|
||
avance = 0;
|
||
while( avance < BHerm.Registros() && !enc )
|
||
{
|
||
BHerm.LeeReg( (void *)&BHtmp, avance );
|
||
if ( ComparaRegistros( (void *)&SHerm, (void *)&BHtmp ) > 0 )
|
||
avance ++;
|
||
else
|
||
enc = 1;
|
||
};
|
||
// }
|
||
|
||
// Si se encuentra, inserto por abajo de avance, sino al final
|
||
if ( enc )
|
||
BHerm.InsReg( (void *)&SHerm, avance, PorDonde );
|
||
else
|
||
BHerm.InsReg( (void *)&SHerm, BHerm.Registros(), ARRIBA );
|
||
|
||
// Hay que tener en cuenta el aumentar el numero de hermanos/as
|
||
Config.NHnoHna[HnoHna] ++;
|
||
if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
|
||
Error(BConfig.cError);
|
||
|
||
};
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ComparaRegistros *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Compara los registros, atendiendo a que tiene que comparar *|
|
||
|* esto se guarda en Config.item_ordenado *|
|
||
|* *|
|
||
|* *|
|
||
|* *|
|
||
|* *|
|
||
|* *|
|
||
|* Entradas: Elemento A y B, a comparar *|
|
||
|* *|
|
||
|* Salidas: Si A << B < 0 *|
|
||
|* A == B = 0 *|
|
||
|* A >> B > 0 *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int ComparaRegistros( const void *A, const void *B )
|
||
{
|
||
char dev;
|
||
|
||
// Tipos de ordenaciones posibles
|
||
switch( Config.item_ordenado[FICHA_REGISTRO] )
|
||
{
|
||
// Por N¦ de Hermanos
|
||
case 0:
|
||
if ( ( ((HermStruct *)A) -> NHno ) < ( ((HermStruct *)B) -> NHno ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> NHno ) == ( ((HermStruct *)B) -> NHno ) ) return 0;
|
||
if ( ( ((HermStruct *)A) -> NHno ) > ( ((HermStruct *)B) -> NHno ) ) return 1;
|
||
break;
|
||
// Por Nombre
|
||
case 1:
|
||
dev = strcmpi( ( ((HermStruct *)A) -> Nombre ), ( ((HermStruct *)B) -> Nombre ) );
|
||
if ( dev == 0 )
|
||
return strcmpi( ( ((HermStruct *)A) -> Apellido1 ), ( ((HermStruct *)B) -> Apellido1 ) );
|
||
else
|
||
return dev;
|
||
// Por Apellido1
|
||
case 2:
|
||
dev = strcmpi( ( ((HermStruct *)A) -> Apellido1 ), ( ((HermStruct *)B) -> Apellido1 ) );
|
||
if ( dev == 0 )
|
||
return strcmpi( ( ((HermStruct *)A) -> Apellido2 ), ( ((HermStruct *)B) -> Apellido2 ) );
|
||
else
|
||
return dev;
|
||
// Por Direccion
|
||
case 3:
|
||
return strcmpi( ( ((HermStruct *)A) -> Direccion ), ( ((HermStruct *)B) -> Direccion ) );
|
||
// Por Poblacion
|
||
case 4:
|
||
return strcmpi( ( ((HermStruct *)A) -> Poblacion ), ( ((HermStruct *)B) -> Poblacion ) );
|
||
// Por Provincia
|
||
case 5:
|
||
return strcmpi( ( ((HermStruct *)A) -> Provincia ), ( ((HermStruct *)B) -> Provincia ) );
|
||
// Por Fecha de Nacimiento
|
||
case 6:
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_year ) < ( ((HermStruct *)B) -> FechaN.da_year ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_year ) > ( ((HermStruct *)B) -> FechaN.da_year ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_mon ) < ( ((HermStruct *)B) -> FechaN.da_mon ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_mon ) > ( ((HermStruct *)B) -> FechaN.da_mon ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_day ) < ( ((HermStruct *)B) -> FechaN.da_day ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> FechaN.da_day ) > ( ((HermStruct *)B) -> FechaN.da_day ) ) return 1;
|
||
|
||
return 0;
|
||
// Por Antiguedad
|
||
case 7:
|
||
if ( ( ((HermStruct *)A) -> Antig.da_year ) < ( ((HermStruct *)B) -> Antig.da_year ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_year ) > ( ((HermStruct *)B) -> Antig.da_year ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Antig.da_mon ) < ( ((HermStruct *)B) -> Antig.da_mon ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_mon ) > ( ((HermStruct *)B) -> Antig.da_mon ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Antig.da_day ) < ( ((HermStruct *)B) -> Antig.da_day ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_day ) > ( ((HermStruct *)B) -> Antig.da_day ) ) return 1;
|
||
|
||
return 0;
|
||
// Por Insignia
|
||
case 8:
|
||
if ( ( ((HermStruct *)A) -> Insignia ) < ( ((HermStruct *)B) -> Insignia ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Insignia ) > ( ((HermStruct *)B) -> Insignia ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Antig.da_year ) < ( ((HermStruct *)B) -> Antig.da_year ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_year ) > ( ((HermStruct *)B) -> Antig.da_year ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Antig.da_mon ) < ( ((HermStruct *)B) -> Antig.da_mon ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_mon ) > ( ((HermStruct *)B) -> Antig.da_mon ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Antig.da_day ) < ( ((HermStruct *)B) -> Antig.da_day ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Antig.da_day ) > ( ((HermStruct *)B) -> Antig.da_day ) ) return 1;
|
||
|
||
break;
|
||
// Por n§ de Tunica
|
||
case 9:
|
||
if ( ( ((HermStruct *)A) -> Varios.RealPenit ) < ( ((HermStruct *)B) -> Varios.RealPenit ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Varios.RealPenit ) > ( ((HermStruct *)B) -> Varios.RealPenit ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> Varios.CtoVirgen ) < ( ((HermStruct *)B) -> Varios.CtoVirgen ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> Varios.CtoVirgen ) > ( ((HermStruct *)B) -> Varios.CtoVirgen ) ) return 1;
|
||
|
||
if ( ( ((HermStruct *)A) -> NTunica ) < ( ((HermStruct *)B) -> NTunica ) ) return -1;
|
||
if ( ( ((HermStruct *)A) -> NTunica ) > ( ((HermStruct *)B) -> NTunica ) ) return 1;
|
||
|
||
return 0;
|
||
}
|
||
|
||
return -1;
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* BuscaConfirmaHermanoBajo *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Busca y Confirma, que va a ocupar la posicion de un hermano *|
|
||
|* eliminado, con posibilidad de volver aun... *|
|
||
|* *|
|
||
|* Entradas: n§ de hermano *|
|
||
|* Salidas: 1 Encontrado y desea ocupar posicion *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int BuscaConfirmaHermanoBajo( long NHerm )
|
||
{
|
||
long i=0; char enc = 0;
|
||
|
||
HermanosBorrados.NHerm = -1;
|
||
|
||
for( i=0; i<BHBorrados.Registros() && enc == 0; i++ )
|
||
{
|
||
if ( HermanosBorrados.NHerm == NHerm )
|
||
enc = 1;
|
||
else
|
||
BHBorrados.LeeReg( (void *)&HermanosBorrados, i );
|
||
}
|
||
|
||
if ( enc )
|
||
if ( Optar( 1, "POSICION DUDOSA", "Ese hermano esta eliminado", "¨Seguro de ocupar su posici¢n?", NULL ) )
|
||
{
|
||
BHBorrados.DelReg( BHBorrados.RegActual() );
|
||
return 1;
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* IncluirBorrado *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Carga, (si existe), la foto asignada y la muestra. *|
|
||
|* *|
|
||
|* Entradas: N§ de Hermano *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void IncluirBorrado( int NHno )
|
||
{
|
||
HermanosBorrados.NHerm = NHno;
|
||
HermanosBorrados.FechaBorrado.da_day = FechaActual.da_day;
|
||
HermanosBorrados.FechaBorrado.da_mon = FechaActual.da_mon;
|
||
HermanosBorrados.FechaBorrado.da_year = FechaActual.da_year;
|
||
|
||
// Inserta un Reg por arriba de pos.
|
||
BHBorrados.InsReg( (void *)&HermanosBorrados, BHBorrados.Registros(), ARRIBA );
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* EscogeInsignia *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Despliega un cuadro con las insignias correspondientes *|
|
||
|* *|
|
||
|* Entradas: Insignias Cto/Virgen *|
|
||
|* Salidas: n§ de insignia escogida *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
char EscogeInsignia( int CtoVirgen )
|
||
{
|
||
void *ptr_fondo;
|
||
char insignia = 0, ok = 0, old_color;
|
||
struct textsettingstype texttypeinfo;
|
||
|
||
if ( CtoVirgen != 0 ) CtoVirgen = 1;
|
||
|
||
// Asignar memoria
|
||
if ( (ptr_fondo = malloc( JD_imagesize( 155, 180, 285, 302 ) ) ) != NULL )
|
||
{
|
||
getimage( 155, 180, 285, 302, ptr_fondo );
|
||
|
||
setfillstyle( SOLID_FILL, GRIS_CLARO );
|
||
bar( 155, 180, 285, 302 ); // Desplegar cuadro
|
||
old_color = getcolor();
|
||
setcolor(NEGRO);
|
||
rectangle( 155, 180, 285, 302 );
|
||
|
||
gettextsettings( &texttypeinfo );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
|
||
// Mostramos datos
|
||
for( insignia = 0; insignia < 10; insignia++)
|
||
muestra( insignia, NORMAL, CtoVirgen );
|
||
|
||
insignia = 0;
|
||
muestra( insignia, INTENSO, CtoVirgen );
|
||
do{
|
||
while( !kbhit() );
|
||
switch ( getch() )
|
||
{
|
||
case 0:
|
||
switch( getch() )
|
||
{
|
||
// Flecha Abajo
|
||
case 80:
|
||
muestra( insignia, NORMAL, CtoVirgen );
|
||
insignia--; if ( insignia < 0 ) insignia = 0;
|
||
if ( insignia == 9 )
|
||
{
|
||
for( insignia = 0; insignia < 10; insignia++)
|
||
muestra( insignia, NORMAL, CtoVirgen );
|
||
insignia = 9;
|
||
}
|
||
muestra( insignia, INTENSO, CtoVirgen );
|
||
break;
|
||
// Flecha Arriba
|
||
case 72:
|
||
muestra( insignia, NORMAL, CtoVirgen );
|
||
insignia++; if ( insignia > 19 ) insignia = 19;
|
||
if ( insignia == 10 )
|
||
{
|
||
for( insignia = 10; insignia < 20; insignia++)
|
||
muestra( insignia, NORMAL, CtoVirgen );
|
||
insignia = 10;
|
||
}
|
||
muestra( insignia, INTENSO, CtoVirgen );
|
||
break;
|
||
}
|
||
break;
|
||
// Escape
|
||
case 27:
|
||
ok = 1;
|
||
insignia = -1;
|
||
break;
|
||
// Intro
|
||
case 13:
|
||
ok = 1;
|
||
break;
|
||
}
|
||
}while( !ok );
|
||
|
||
// etc...
|
||
putimage( 155, 180, ptr_fondo, COPY_PUT );
|
||
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
|
||
setcolor( old_color );
|
||
free( ptr_fondo );
|
||
}
|
||
return insignia;
|
||
}
|
||
|
||
|
||
void muestra( int insignia, char como, char CtoVirgen )
|
||
{
|
||
setfillstyle( SOLID_FILL, (como==NORMAL) ? GRIS_CLARO : ROJO );
|
||
|
||
bar( 160, 291-12*(insignia%10), 280, 301-12*(insignia%10) );
|
||
outtextxy( 165, 290-12*(insignia%10), Config.Insignia[insignia+20*CtoVirgen].NInsignia );
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraFotografia *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Carga, (si existe), la foto asignada y la muestra. *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraFotografia(void)
|
||
{
|
||
char buffer[80];
|
||
sprintf( buffer, "fotos\hn%c%5ld.pcx", ( SHerm.Varios.CtoVirgen == 0 ) ? 'o' : 'a' , SHerm.NHno );
|
||
|
||
if ( file_exists(buffer) )
|
||
{
|
||
|
||
while( kbhit() ) getch();
|
||
}
|
||
};
|
||
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* OrdenaBase *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Ordena la base de datos segun el topico que indique el *|
|
||
|* usuario... *|
|
||
|* *|
|
||
|* Entradas: Base a tratar ( hno/hna ) *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void OrdenaBase( char HnoHna )
|
||
{
|
||
int ok = 0, BPush;
|
||
int t_orden = 0;
|
||
char Mensaje[][50] = { "La base de Datos", "esta vacia." };
|
||
char File[80];
|
||
|
||
strcpy( BHerm.MyHeader.ProgName, "Hermadad" );
|
||
BHerm.MyHeader.VerHi = 1;
|
||
BHerm.MyHeader.VerLow = 0;
|
||
|
||
// Base de Datos
|
||
if ( HnoHna == HERMANOS )
|
||
{
|
||
strcpy( File, "datos\\hermanos.dbf" );
|
||
FICHA_REGISTRO = 0;
|
||
}
|
||
else
|
||
{
|
||
strcpy( File, "datos\\hermanas.dbf" );
|
||
FICHA_REGISTRO = 1;
|
||
}
|
||
|
||
if ( BHerm.AbrirReg( File, sizeof( HermStruct ) ) != OK )
|
||
Error(BHerm.cError);
|
||
|
||
|
||
if ( BHerm.Registros() == 0 )
|
||
{
|
||
Escr_Mensaje( "ERROR", 2, Mensaje );
|
||
BHerm.CerrarReg();
|
||
return;
|
||
}
|
||
|
||
|
||
Imprime_Estaticos( 3, "Herm.img");
|
||
Imprime_Secuencia( 3 );
|
||
Imprime_Estaticos( 4, "Herm.img");
|
||
|
||
do {
|
||
BPush = Comprueba_Secuencia( 3, NULL );
|
||
switch ( BPush )
|
||
{
|
||
case 0: // No se pulso ningun BOTON
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
// El raton todav¡a sigue pulsado
|
||
break;
|
||
case -2:
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
break;
|
||
// Tecla Normal
|
||
case -1: // Hay una tecla especial en BUFFER
|
||
// La eliminamos
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
default:
|
||
if ( BPush >= 1 && BPush <= 10 )
|
||
{
|
||
ok = 1;
|
||
t_orden = BPush - 1;
|
||
}
|
||
}
|
||
} while( !ok ) ;
|
||
|
||
if ( t_orden != 9 )
|
||
{
|
||
Imprime_Estaticos( 5, "Herm.img");
|
||
|
||
Config.item_ordenado[FICHA_REGISTRO] = t_orden;
|
||
if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
|
||
Error(BConfig.cError);
|
||
BHerm.SortReg(ComparaRegistros);
|
||
BHerm.CerrarReg();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/////// EDITAR COMENTARIO....
|
||
int EditComentario(void)
|
||
{
|
||
|
||
// int ls; // longitud cadena
|
||
char *s1, *s, *s_tmp, *s_tmp1; // puntero a cadena inicial
|
||
int key, ok, Linea = 0, Columna = 0, X, Y, lmax, X1/*, Y1*/;
|
||
char Buffer[80];
|
||
|
||
lmax = 49;
|
||
X = Botones[25+INICIO_ITEM].Left+2;
|
||
Y = Botones[25+INICIO_ITEM].Up+2;
|
||
X1 = Botones[25+INICIO_ITEM].Right-2;
|
||
// Y1 = Botones[25+INICIO_ITEM].Down-2;
|
||
|
||
ok = 0;
|
||
|
||
s_tmp1 = s_tmp = s = s1 = SHerm.Comentario[0]; // inicio cadena
|
||
|
||
s += lmax ; *s = '\0';
|
||
s = s_tmp;
|
||
|
||
do {
|
||
|
||
|
||
setfillstyle(SOLID_FILL, AZUL); // selecciona los atributos de
|
||
bar( X, Y+Linea*20, X1, Y+Linea*20 + 20); // relleno, y Borra el campo
|
||
setcolor(BLANCO); // devuelve el color a su estado
|
||
|
||
outtextxy( X, Y+Linea*20, s1 ); // e imprime la cadena.
|
||
// ls = strlen ( s ); // Longitud de la cadena actual
|
||
|
||
|
||
if ( Columna < lmax ) { // Muestra cursor si es posible
|
||
strncpy( Buffer, s1, Columna );
|
||
Buffer[Columna] = '\0';
|
||
setcolor(ROJO);
|
||
outtextxy( X + textwidth( Buffer ), Y+Linea*20+2, "Ü");
|
||
}
|
||
|
||
switch ( ( key = getch() ) ) { // obtiene tecla
|
||
// Intro o Return
|
||
case 13:
|
||
|
||
if( Linea < 5 ) {
|
||
setfillstyle(SOLID_FILL, BLANCO); // selecciona los atributos de
|
||
bar( X, Y+Linea*20, X1, Y+Linea*20 + 20); // relleno, y Borra el campo
|
||
setcolor(NEGRO); // devuelve el color a su estado
|
||
outtextxy( X, Y+Linea*20, s1 ); // e imprime la cadena.
|
||
|
||
Linea++;
|
||
s_tmp1 = s_tmp = s = s1 = SHerm.Comentario[Linea]; // inicio cadena
|
||
s += lmax; *s = '\0';
|
||
Columna = 0;
|
||
s = s_tmp1 = s_tmp = s1;
|
||
}
|
||
break;
|
||
|
||
case 0:
|
||
|
||
switch ( key = getch() ) {
|
||
|
||
// F. Arriba
|
||
case 72:
|
||
if( Linea > 0 ) {
|
||
setfillstyle(SOLID_FILL, BLANCO); // selecciona los atributos de
|
||
bar( X, Y+Linea*20, X1, Y+Linea*20 + 20); // relleno, y Borra el campo
|
||
setcolor(NEGRO); // devuelve el color a su estado
|
||
outtextxy( X, Y+Linea*20, s1 ); // e imprime la cadena.
|
||
|
||
Linea--;
|
||
s_tmp1 = s_tmp = s = s1 = SHerm.Comentario[Linea]; // inicio cadena
|
||
s += lmax; *s = '\0';
|
||
if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0;
|
||
s_tmp = s1; }
|
||
s = s_tmp1 = s_tmp;
|
||
|
||
}
|
||
|
||
break;
|
||
// F. Abajo
|
||
case 80:
|
||
|
||
if( Linea < 5 ) {
|
||
setfillstyle(SOLID_FILL, BLANCO); // selecciona los atributos de
|
||
bar( X, Y+Linea*20, X1, Y+Linea*20 + 20); // relleno, y Borra el campo
|
||
setcolor(NEGRO); // devuelve el color a su estado
|
||
outtextxy( X, Y+Linea*20, s1 ); // e imprime la cadena.
|
||
|
||
Linea++;
|
||
s_tmp1 = s_tmp = s = s1 = SHerm.Comentario[Linea]; // inicio cadena
|
||
s += lmax; *s = '\0';
|
||
if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0;
|
||
s_tmp = s1; }
|
||
s = s_tmp1 = s_tmp;
|
||
}
|
||
break;
|
||
// F. Derecha
|
||
case 77:
|
||
case 9:
|
||
if ( Columna < strlen(s1) ) { Columna++; s++; }
|
||
break;
|
||
// F. Izquierda
|
||
case 75:
|
||
case 11:
|
||
if ( Columna > 0) { Columna--; s--; }
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
break;
|
||
// Back Space
|
||
case 8:
|
||
if ( Columna > 0 ) {
|
||
Columna--;
|
||
s--;
|
||
s_tmp1 = s_tmp = s;
|
||
while ( *s_tmp1 != NULL ) {
|
||
s_tmp1++;
|
||
*s_tmp = *s_tmp1;
|
||
s_tmp++;
|
||
}
|
||
}
|
||
break;
|
||
case 27:
|
||
ok = 1;
|
||
break;
|
||
default:
|
||
if ( key >= 32 && key <= 254 && Columna < lmax) {
|
||
*s++ = key;
|
||
Columna++;
|
||
}
|
||
break;
|
||
}
|
||
}while(!ok);
|
||
|
||
while(kbhit()) getch(); // Vacia Buffer impidiendo falsas
|
||
// pulsaciones...
|
||
|
||
|
||
setfillstyle(SOLID_FILL, BLANCO); // selecciona los atributos de
|
||
bar( X, Y+Linea*20, X1, Y+Linea*20 + 20); // relleno, y Borra el campo
|
||
setcolor(AZUL); // devuelve el color a su estado
|
||
|
||
outtextxy( X, Y+Linea*20, s1 ); // e imprime la cadena.
|
||
|
||
return /* de momento nada */ 0;
|
||
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ImprimeFicha *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Imprime la ficha actual *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void ImprimeFicha(void)
|
||
{
|
||
char buffer[80];
|
||
|
||
while ( !Comprueba_Impresora() )
|
||
{
|
||
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
|
||
return;
|
||
};
|
||
|
||
fprintf( stdprn, "\n\rÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
|
||
fprintf( stdprn, "\n\r³ Fichas de Hermanos ³");
|
||
fprintf( stdprn, "\n\rÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Numero de Hermano: %5ld ³", SHerm.NHno );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Nombre: %-15s ³", SHerm.Nombre );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
|
||
fprintf( stdprn, "\n\r³ Apellidos: %-30s ³", buffer );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, (SHerm.Num[0]=='\0')?"":", num:", SHerm.Num, (SHerm.Piso[0]=='\0') ? "":", piso:", SHerm.Piso );
|
||
fprintf( stdprn, "\n\r³ Direccion: %-50s ³" );
|
||
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
sprintf( buffer, "(%s)", SHerm.Provincia );
|
||
fprintf( stdprn, "\n\r³ CP: %05ld Poblaci¢n: %-15s %-17s ³", SHerm.CodP, SHerm.Poblacion, buffer );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Fecha de Nacimiento: %02d-%02d-%04d Telefono 1: %-15s ³", (int)SHerm.FechaN.da_day, (int)SHerm.FechaN.da_mon, SHerm.FechaN.da_year, SHerm.Telefono1 );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Antig<69>edad: (%3d a¤os) %02d-%02d-%04d Telefono 2: %-15s ³", (FechaActual.da_year - SHerm.Antig.da_year), (int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year, SHerm.Telefono1 );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Reserva: %-2s ³", (SHerm.Varios.Reserva == 0) ? "NO" : "SI" );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Posici¢n: %-15s ³", SHerm.Posicion );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\r³ Insignia: %-30s ³", Config.Insignia[SHerm.Insignia + 20*( (SHerm.Varios.CtoVirgen == 0) ? 0 : 1 ) ].NInsignia );
|
||
fprintf( stdprn, "\n\r³ ³");
|
||
fprintf( stdprn, "\n\rÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r Observaciones:");
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[0] );
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[1] );
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[2] );
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[3] );
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[4] );
|
||
fprintf( stdprn, "\n\r");
|
||
fprintf( stdprn, "\n\r %s", SHerm.Comentario[5] );
|
||
fprintf( stdprn, "\n\r");
|
||
fputc(12, stdprn);
|
||
}
|
||
|
||
|
||
// SOLO ACCESIBLE DESDE DENTRO
|
||
|
||
|
||
void PapeletaDeSitio(void)
|
||
{
|
||
// char CMen;
|
||
struct textsettingstype texttypeinfo;
|
||
// void *Imagen;
|
||
long CuotaSalida = 0;
|
||
char buffer[90]; int key, ok = 0, Impr;
|
||
/*
|
||
if ( (Imagen = malloc( imagesize(170, 165, 470, 315) ) ) == NULL )
|
||
return;
|
||
|
||
getimage( 170, 165, 470, 315, Imagen );
|
||
|
||
Imprime_Estaticos(20, "Herm.img");
|
||
*/
|
||
gettextsettings( &texttypeinfo );
|
||
/*
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
|
||
|
||
setcolor( BLANCO );
|
||
outtextxy( 172+((296 - textwidth( "Papeleta de Sitio" ) ) / 2 ), 165, "Papeleta de Sitio" );
|
||
setcolor( NEGRO );
|
||
|
||
rectangle( 172, 290, 272, 313 );
|
||
rectangle( 370, 290, 467, 313 );
|
||
|
||
sprintf( buffer, " Insignia: %s", Config.Insignia[ ( SHerm.Varios.CtoVirgen == 0 ? 0 : 1)*20 + SHerm.Insignia ].NInsignia );
|
||
outtextxy( 172, 200, buffer );
|
||
outtextxy( 172, 200+20*2, " Cuota de salida: ");
|
||
outtextxy( 172, 190+20*5, " (A)ceptar (C)ancelar");
|
||
|
||
*/
|
||
|
||
Impr = 0;
|
||
Optar( ENCUADRE, "Papeletas de sitio", "Introduzca cuota de salida", NULL );
|
||
|
||
setfillstyle( SOLID_FILL, BLANCO );
|
||
bar( 400, 250, 465, 270 );
|
||
|
||
do{
|
||
/*
|
||
Espera_TeclaRaton();
|
||
if ( !kbhit() )
|
||
{
|
||
if ( x_raton > 172 && x_raton < 272 && y_raton > 290 && y_raton < 313 )
|
||
{
|
||
if( CuotaSalida != 0 )
|
||
{
|
||
ImprimePapeleta(CuotaSalida);
|
||
putimage( 170, 165, Imagen, COPY_PUT );
|
||
free( Imagen );
|
||
ok=1;
|
||
}
|
||
} else
|
||
if ( x_raton > 370 && x_raton < 467 && y_raton > 290 && y_raton < 313 )
|
||
{
|
||
putimage( 170, 165, Imagen, COPY_PUT );
|
||
free( Imagen );
|
||
ok = 1;
|
||
}
|
||
}
|
||
else
|
||
*/
|
||
switch ( Comprueba_Secuencia( SEC_OPTAR, NULL ) )
|
||
{
|
||
case 0:
|
||
case -1:
|
||
while( kbhit() ) getch();
|
||
break;
|
||
case -2:
|
||
if ( (key=getch() ) != 13 )
|
||
ungetch(key);
|
||
|
||
sprintf( buffer, "%ld", CuotaSalida );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 400, 250, 465, 270 ) >> 8 ) )
|
||
{
|
||
CuotaSalida = atol( buffer );
|
||
setfillstyle( SOLID_FILL, BLANCO );
|
||
bar( 400, 250, 465, 270 );
|
||
setcolor( NEGRO );
|
||
outtextxy( 400, 250, buffer );
|
||
}
|
||
break;
|
||
// Aceptar
|
||
case 1:
|
||
Impr = ok = 1;
|
||
break;
|
||
// Cancelar
|
||
case 2:
|
||
ok=1;
|
||
break;
|
||
}
|
||
|
||
/*
|
||
switch( key = getch() )
|
||
{
|
||
// ESC
|
||
case 27:
|
||
// putimage( 170, 165, Imagen, COPY_PUT );
|
||
// free( Imagen );
|
||
ok = 1;
|
||
break;
|
||
case 0:
|
||
switch( getch() )
|
||
{
|
||
// A
|
||
case 30:
|
||
if( CuotaSalida != 0 )
|
||
{
|
||
ImprimePapeleta(CuotaSalida);
|
||
// putimage( 170, 165, Imagen, COPY_PUT );
|
||
// free( Imagen );
|
||
ok=1;
|
||
}
|
||
break;
|
||
// C
|
||
case 46:
|
||
// putimage( 170, 165, Imagen, COPY_PUT );
|
||
// free( Imagen );
|
||
ok=1;
|
||
break;
|
||
}
|
||
break;
|
||
default:
|
||
ungetch(key);
|
||
case 13:
|
||
sprintf( buffer, "%ld", CuotaSalida );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 5, BLANCO, AZUL, 400, 240, 465, 260 ) >> 8 ) )
|
||
{
|
||
CuotaSalida = atol( buffer );
|
||
setfillstyle( SOLID_FILL, BLANCO );
|
||
bar( 400, 240, 465, 260 );
|
||
setcolor( NEGRO );
|
||
outtextxy( 400, 240, buffer );
|
||
}
|
||
break;
|
||
}
|
||
*/
|
||
}while(!ok);
|
||
|
||
Optar( ENCUADRE, "Papeletas de sitio", "Introduzca cuota de salida", NULL );
|
||
if ( Impr == 1 )
|
||
ImprimePapeleta(CuotaSalida);
|
||
|
||
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
|
||
|
||
HighLight( 17, BLANCO, NEGRO );
|
||
}
|
||
|
||
void ImprimePapeleta(long CuotaSalida)
|
||
{
|
||
char Mes[12][15] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" };
|
||
|
||
// Imprimimos la papeleta de sitio
|
||
while ( !Comprueba_Impresora() )
|
||
{
|
||
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
|
||
return;
|
||
};
|
||
|
||
fprintf( stdprn, "\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r" );
|
||
fprintf( stdprn, " %s %s %s\n\r\n\r", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
|
||
fprintf( stdprn, " %s%s%s%s\n\r",SHerm.Direccion, (SHerm.Num[0]=='\0')?"":", ", SHerm.Num, (SHerm.Piso[0]=='\0') ? "":", ", SHerm.Piso );
|
||
fprintf( stdprn, " %s", Config.Insignia[SHerm.Insignia + 20*( (SHerm.Varios.CtoVirgen == 0) ? 0 : 1 ) ].NInsignia );
|
||
fprintf( stdprn, "\n\r\n\r\n\r" );
|
||
fprintf( stdprn, " %s\n\r\n\r", Config.HoraSalida );
|
||
fprintf( stdprn, " %2d %12s %2d\n\r", FechaActual.da_day, Mes[FechaActual.da_mon], ( FechaActual.da_year - (FechaActual.da_year / 100 ) * 100 ) );
|
||
fprintf( stdprn, "\n\r\n\r\n\r" );
|
||
fprintf( stdprn, " #%ld#", CuotaSalida );
|
||
|
||
fputc(12, stdprn );
|
||
|
||
SHerm.Varios.RealPenit = 1;
|
||
BHerm.EscribeReg( (void*)&SHerm, BHerm.RegActual() );
|
||
}
|
||
|
||
|
||
|
||
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛ Û ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Û ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Û ÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Û ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ Û ÛÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛ ÛÛÛÛÛÛ Û ÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛ ÛÛÛÛ ÛÛ ÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛ ÛÛÛ ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraAyudaHerm *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Muestra una peque¤a descripcion del contenido para el campo *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* columna campo ha mostar su ayuda *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraAyudaHerm( char columna )
|
||
{
|
||
char buffer1[80];
|
||
|
||
switch( columna )
|
||
{
|
||
// N§ de Hermano
|
||
case 0:
|
||
sprintf ( buffer1, "N§ de hermano/a, que esta visionando" );
|
||
break;
|
||
// Nombre
|
||
case 1:
|
||
sprintf ( buffer1, "Nombre del hermano/a" );
|
||
break;
|
||
// Apellido1
|
||
case 2:
|
||
sprintf ( buffer1, "Primer Apellido del hermano/a" );
|
||
break;
|
||
// Apellido2
|
||
case 3:
|
||
sprintf ( buffer1, "Segundo Apellido del hermano/a" );
|
||
break;
|
||
// Direccion
|
||
case 4:
|
||
sprintf ( buffer1, "Direcci¢n del hermano/a" );
|
||
break;
|
||
// Numero
|
||
case 5:
|
||
sprintf ( buffer1, "N£mero, Plaza, Bloque" );
|
||
break;
|
||
// Piso
|
||
case 6:
|
||
sprintf ( buffer1, "Escalera, Letra de Piso/Casa" );
|
||
break;
|
||
// C.P.
|
||
case 7:
|
||
sprintf ( buffer1, "C¢digo Postal" );
|
||
break;
|
||
// Poblacion
|
||
case 8:
|
||
sprintf ( buffer1, "Poblaci¢n" );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
sprintf ( buffer1, "Provincia" );
|
||
break;
|
||
// Fecha de Nacimiento
|
||
case 10:
|
||
sprintf ( buffer1, "Fecha de nacimiento" );
|
||
break;
|
||
// Fecha de Alta
|
||
case 11:
|
||
sprintf ( buffer1, "Fecha de alta en esta Hermandad" );
|
||
break;
|
||
// Reserva
|
||
case 12:
|
||
sprintf ( buffer1, "Reserva" );
|
||
break;
|
||
// Posicion
|
||
case 13:
|
||
sprintf ( buffer1, "Poscion" );
|
||
break;
|
||
// Insignia
|
||
case 14:
|
||
sprintf ( buffer1, "Insignia con la que realizar penitencia" );
|
||
break;
|
||
|
||
// Telefono1
|
||
case 15:
|
||
sprintf ( buffer1, "Telefono particular del hermano/a" );
|
||
break;
|
||
// Telefono2
|
||
case 16:
|
||
sprintf ( buffer1, "Telefono de contacto / fax" );
|
||
break;
|
||
// Estacion Penitencia
|
||
case 17:
|
||
sprintf ( buffer1, "¨ Realizar la estaci¢n de penitencia ?" );
|
||
break;
|
||
// Acogido a Cuota
|
||
case 18:
|
||
sprintf ( buffer1, "¨ Esta acogido a cuota familiar ?" );
|
||
break;
|
||
// Tiene Posibilidad de votar
|
||
case 19:
|
||
sprintf ( buffer1, "¨ Tiene posibilidad de votar ?" );
|
||
break;
|
||
// Recibe notificaciones
|
||
case 20:
|
||
sprintf ( buffer1, "¨ Recibe notificaciones ?" );
|
||
break;
|
||
// Posee tunica de propiedad
|
||
case 21:
|
||
sprintf ( buffer1, "¨ Es la t£nica de la hermandad ?" );
|
||
break;
|
||
// N§ de la tunica
|
||
case 22:
|
||
sprintf ( buffer1, "N£mero de tunica, ( 0 == HDAD )" );
|
||
break;
|
||
// Cristo / Virgen
|
||
case 23:
|
||
case 24:
|
||
sprintf ( buffer1, "Realizar penitencia en Cristo o Virgen" );
|
||
break;
|
||
// Comentario
|
||
case 25:
|
||
sprintf ( buffer1, "Observaciones con respecto al hno/a" );
|
||
break;
|
||
}
|
||
|
||
// Ayuda reducida
|
||
setfillstyle( SOLID_FILL, EGA_BLACK ); bar( 7, 457, 498, 473 );
|
||
// Imprime la ayudita
|
||
setcolor( EGA_WHITE ); outtextxy( 7, 457, buffer1 );
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
// Û Parte secundaria del m¢dulo Û
|
||
// Û Û
|
||
// Û Secci¢n de Busqueda de hermanos Û
|
||
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
// Û Parte secundaria del m¢dulo Û
|
||
// Û Û
|
||
// Û Secci¢n de Busqueda de refecencias Û
|
||
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* BuscaItem *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Busca una referencia por su n§ o descripcion *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* ATRAS Busca otra coincidencia hacia atras *|
|
||
|* NUEVA_BUSQUEDA Inicia una nueva busqueda *|
|
||
|* ADELANTE Busca otra coincidencia hacia delante *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void BuscaItem( char TipoBusqueda )
|
||
{
|
||
static HermStruct BuscaHerm;
|
||
char enc; long i;
|
||
|
||
|
||
switch ( TipoBusqueda )
|
||
{
|
||
case DESDE_EL_PRINCIPIO://NUEVA_BUSQUEDA:
|
||
if ( ObtenMatchHerm( &BuscaHerm ) != OK )
|
||
return;
|
||
i = 0;
|
||
break;
|
||
case HACIA_ATRAS:
|
||
case HACIA_ADELANTE:
|
||
i = CurrReg + TipoBusqueda;
|
||
if ( i < 0 ) i = 0;
|
||
break;
|
||
}
|
||
|
||
Optar( ENCUADRE, "Comando: Buscar", "Ahora se inica", "la busqueda elegida", NULL );
|
||
enc = 0;
|
||
while ( i < BHerm.Registros() && !enc )
|
||
{
|
||
if ( BHerm.LeeReg( (void *)&SHerm, i ) == ERROR )
|
||
Error( BHerm.cError );
|
||
if ( Match_Herm( SHerm, BuscaHerm ) )
|
||
enc = 1;
|
||
else
|
||
i++;
|
||
}
|
||
|
||
Optar( ENCUADRE, NULL );
|
||
|
||
if ( enc )
|
||
{
|
||
CurrReg = i;
|
||
} else
|
||
switch( TipoBusqueda )
|
||
{
|
||
case DESDE_EL_PRINCIPIO://NUEVA_BUSQUEDA:
|
||
Optar( 0, "Comando: Buscar", "No se encontr¢", "ninguna coincidencia", NULL );
|
||
break;
|
||
case HACIA_ATRAS:
|
||
case HACIA_ADELANTE:
|
||
Optar( 0, "Comando: Buscar", "No se encontr¢", "ninguna coincidencia", NULL );
|
||
break;
|
||
}
|
||
|
||
if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) == ERROR )
|
||
Error( BHerm.cError);
|
||
MuestraDatos();
|
||
MuestraFotografia();
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Match_Herm *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Compara dos registros y devuelve la posible coincidencia *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Registros a comparar *|
|
||
|* *|
|
||
|* Salidas: *|
|
||
|* Resultado de la comparaci¢n *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int Match_Herm( HermStruct A, HermStruct B )
|
||
{
|
||
// Solo comprueba estos topicos...
|
||
|
||
if ( B.NHno != 0 )
|
||
return ( B.NHno == A.NHno );
|
||
|
||
// Nombre
|
||
if ( B.Nombre[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Nombre, A.Nombre, strlen( B.Nombre ) ) != 0 )
|
||
return 0;
|
||
}
|
||
// Apellido 1
|
||
if ( B.Apellido1[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Apellido1, A.Apellido1, strlen( B.Apellido1 ) ) != 0 )
|
||
return 0;
|
||
}
|
||
|
||
// Apellido 2
|
||
if ( B.Apellido2[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Apellido2, A.Apellido2, strlen( B.Apellido2 ) ) != 0 )
|
||
return 0;
|
||
}
|
||
|
||
// Direccion
|
||
if ( B.Direccion[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Direccion, A.Direccion, strlen( B.Direccion ) ) != 0 )
|
||
return 0;
|
||
}
|
||
|
||
// Poblacion
|
||
if ( B.Poblacion[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Poblacion, A.Poblacion, strlen( B.Poblacion ) ) != 0 )
|
||
return 0;
|
||
}
|
||
|
||
// Telefono 1
|
||
if ( B.Telefono1[0] != '\0' )
|
||
{
|
||
if ( strncmpi( B.Telefono1, A.Telefono1, strlen( B.Telefono1 ) ) != 0 )
|
||
return 0;
|
||
}
|
||
|
||
// FechaN
|
||
if ( B.FechaN.da_year != 0 )
|
||
{
|
||
if ( B.FechaN.da_year != A.FechaN.da_year )
|
||
return 0;
|
||
}
|
||
|
||
// Antiguedad
|
||
if ( B.Antig.da_year != 0 )
|
||
{
|
||
if ( B.Antig.da_year != A.Antig.da_year )
|
||
return 0;
|
||
}
|
||
|
||
// Vale tio, has pasado todos los controles
|
||
return 1;
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ObtenMatchHerm *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Obtine los patrones de busqueda necesarios *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Estructura donde guardar el patron de busqueda *|
|
||
|* *|
|
||
|* Salidas: *|
|
||
|* OK La entrada es correcta *|
|
||
|* ERROR El usuario interrumpio la busqueda *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int ObtenMatchHerm( HermStruct *BuscaHerm )
|
||
{
|
||
char Row, ok, i;
|
||
int BPush, key, DEV;
|
||
struct textsettingstype texttypeinfo;
|
||
|
||
gettextsettings( &texttypeinfo );
|
||
|
||
Optar( ENCUADRE, "Comando: Buscar", NULL );
|
||
Imprime_Estaticos( 300, "herm.img" );
|
||
|
||
ok = 0; Row = 0;
|
||
|
||
HermNuevoRegistro( BuscaHerm );
|
||
|
||
do
|
||
{
|
||
MatchDrawRef(Row, *BuscaHerm, INTENSO);
|
||
BPush = Comprueba_Secuencia( SEC_OPTAR, NULL );
|
||
MatchDrawRef(Row, *BuscaHerm, NORMAL);
|
||
|
||
switch ( BPush )
|
||
{
|
||
case 0: // No se pulso ningun BOTON
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
case -2:
|
||
if ( ( key = getch() ) != 13 && key != 27 )
|
||
ungetch( key );
|
||
EditMatchRef( Row, BuscaHerm );
|
||
for ( i=0; i < 6; i++ )
|
||
MatchDrawRef(i, *BuscaHerm, NORMAL);
|
||
break;
|
||
case -1:
|
||
switch ( getch() )
|
||
{
|
||
// Flecha Izquierda
|
||
case 75:
|
||
case 15:
|
||
// Flecha Arriba
|
||
case 72:
|
||
Row--; if ( Row < 0 ) Row = 7;
|
||
break;
|
||
// Flecha Derecha
|
||
case 77:
|
||
case 9:
|
||
// Flecha Abajo
|
||
case 80:
|
||
Row++; if ( Row > 7 ) Row = 0;
|
||
break;
|
||
}
|
||
break;
|
||
case 1:
|
||
DEV = OK; ok = 1;
|
||
break;
|
||
case 2:
|
||
DEV = ERROR; ok = 1;
|
||
break;
|
||
}
|
||
|
||
} while ( !ok );
|
||
|
||
Optar( ENCUADRE, NULL );
|
||
|
||
settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
|
||
|
||
return DEV;
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* EditMatchRef *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Edita el patron de busqueda *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Campo a editar, y lugar donde almacenarlo *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void EditMatchRef( char Row, HermStruct * BuscaHerm )
|
||
{
|
||
int X0, Y0, X1, Y1;
|
||
char buffer[80];
|
||
|
||
ObtenCoordenadasMatch( Row, &X0, &Y0, &X1, &Y1 );
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
sprintf( buffer, "%ld", BuscaHerm -> NHno );
|
||
if ( !( InputCadenaG_T5( buffer, 1, 4, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
HermNuevoRegistro( BuscaHerm );
|
||
BuscaHerm -> NHno = atol(buffer);
|
||
}
|
||
break;
|
||
case 1:
|
||
strcpy( buffer, BuscaHerm -> Telefono1 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
strcpy ( BuscaHerm -> Telefono1, buffer );
|
||
}
|
||
break;
|
||
case 2:
|
||
strcpy( buffer, BuscaHerm -> Nombre );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
strcpy ( BuscaHerm -> Nombre, buffer );
|
||
}
|
||
break;
|
||
case 3:
|
||
strcpy( buffer, BuscaHerm -> Apellido1 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
strcpy ( BuscaHerm -> Apellido1, buffer );
|
||
}
|
||
break;
|
||
case 4:
|
||
strcpy( buffer, BuscaHerm -> Apellido2 );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 12, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
strcpy ( BuscaHerm -> Apellido2, buffer );
|
||
}
|
||
break;
|
||
case 5:
|
||
strcpy( buffer, BuscaHerm -> Direccion );
|
||
if ( !( InputCadenaG_T5( buffer, 0, 25, BLANCO, AZUL, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
strcpy ( BuscaHerm -> Direccion, buffer );
|
||
}
|
||
break;
|
||
case 6:
|
||
sprintf( buffer, "%02d%02d%04d", (int)BuscaHerm -> FechaN.da_day
|
||
, (int)BuscaHerm -> FechaN.da_mon
|
||
, (int)BuscaHerm -> FechaN.da_year );
|
||
|
||
if ( !( InputCadenaG_T5( buffer, 1, 8, BLANCO, AZUL, X0, Y0, X1, Y1 ) >> 8 ) )
|
||
{
|
||
if ( buffer[0] == '\0' )
|
||
{
|
||
BuscaHerm -> FechaN.da_day = 0;
|
||
BuscaHerm -> FechaN.da_mon = 0;
|
||
BuscaHerm -> FechaN.da_year = 0;
|
||
} else {
|
||
BuscaHerm -> FechaN.da_day = (buffer[0]-'0')*10+(buffer[1]-'0');
|
||
BuscaHerm -> FechaN.da_mon = (buffer[2]-'0')*10+(buffer[3]-'0');
|
||
BuscaHerm -> FechaN.da_year = (buffer[4]-'0')*1000+(buffer[5]-'0')*100+(buffer[6]-'0')*10+(buffer[7]-'0');
|
||
}
|
||
}
|
||
break;
|
||
case 7:
|
||
sprintf( buffer, "%02d%02d%04d", (int)BuscaHerm -> Antig.da_day
|
||
, (int)BuscaHerm -> Antig.da_mon
|
||
, (int)BuscaHerm -> Antig.da_year );
|
||
|
||
if ( !( InputCadenaG_T5( buffer, 1, 8, BLANCO, AZUL, X0, Y0, X1, Y1 ) >> 8 ) )
|
||
{
|
||
if ( buffer[0] == '\0' )
|
||
{
|
||
BuscaHerm -> Antig.da_day = 0;
|
||
BuscaHerm -> Antig.da_mon = 0;
|
||
BuscaHerm -> Antig.da_year = 0;
|
||
} else {
|
||
BuscaHerm -> Antig.da_day = (buffer[0]-'0')*10+(buffer[1]-'0');
|
||
BuscaHerm -> Antig.da_mon = (buffer[2]-'0')*10+(buffer[3]-'0');
|
||
BuscaHerm -> Antig.da_year = (buffer[4]-'0')*1000+(buffer[5]-'0')*100+(buffer[6]-'0')*10+(buffer[7]-'0');
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MatchDrawRef *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Escribe los distintos campos seg£n se le indique *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Campo a mostrar, lugar donde se encuentra, y como mostrarlo *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MatchDrawRef( char Row, HermStruct BuscaHerm, char como )
|
||
{
|
||
int X0, Y0, X1, Y1;
|
||
char buffer[80];//, buffer1[80];
|
||
|
||
ObtenCoordenadasMatch( Row, &X0, &Y0, &X1, &Y1 );
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
sprintf( buffer, "%4ld", BuscaHerm.NHno );
|
||
break;
|
||
case 1:
|
||
sprintf( buffer, "%12s", BuscaHerm.Telefono1 );
|
||
break;
|
||
case 2:
|
||
sprintf( buffer, "%12s", BuscaHerm.Nombre );
|
||
break;
|
||
case 3:
|
||
sprintf( buffer, "%12s", BuscaHerm.Apellido1 );
|
||
break;
|
||
case 4:
|
||
sprintf( buffer, "%12s", BuscaHerm.Apellido2 );
|
||
break;
|
||
case 5:
|
||
sprintf( buffer, "%25s", BuscaHerm.Direccion );
|
||
break;
|
||
case 6:
|
||
sprintf( buffer, "%02d-%02d-%04d", (int)BuscaHerm.FechaN.da_day, (int)BuscaHerm.FechaN.da_mon, BuscaHerm.FechaN.da_year );
|
||
break;
|
||
case 7:
|
||
sprintf( buffer, "%02d-%02d-%04d", (int)BuscaHerm.Antig.da_day, (int)BuscaHerm.Antig.da_mon, BuscaHerm.Antig.da_year );
|
||
break;
|
||
}
|
||
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? EGA_WHITE : EGA_RED );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? EGA_BLACK : EGA_WHITE );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MatchDrawRef *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Obtiene las coordenadas relativas al campo dado. *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Campo a obtener las coordenadas, y coordenadas de salida *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void ObtenCoordenadasMatch( char Row, int *X0, int *Y0, int *X1, int *Y1 )
|
||
{
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
*X0 = 255; *X1 = 310;
|
||
*Y0 = 199; *Y1 = 217;
|
||
break;
|
||
case 1:
|
||
*X0 = 365; *X1 = 465;
|
||
*Y0 = 199; *Y1 = 217;
|
||
break;
|
||
|
||
case 2:
|
||
*X0 = 255; *X1 = 360;
|
||
*Y0 = 219; *Y1 = 237;
|
||
break;
|
||
|
||
case 3:
|
||
*X0 = 255; *X1 = 360;
|
||
*Y0 = 239; *Y1 = 257;
|
||
break;
|
||
case 4:
|
||
*X0 = 365; *X1 = 465;
|
||
*Y0 = 239; *Y1 = 257;
|
||
break;
|
||
|
||
case 5:
|
||
*X0 = 255; *X1 = 465;
|
||
*Y0 = 259; *Y1 = 277;
|
||
break;
|
||
|
||
case 6:
|
||
*X0 = 225; *X1 = 320;
|
||
*Y0 = 279; *Y1 = 297;
|
||
break;
|
||
case 7:
|
||
*X0 = 365; *X1 = 465;
|
||
*Y0 = 279; *Y1 = 297;
|
||
break;
|
||
}
|
||
|
||
(*X0) ++; (*Y0) ++;
|
||
(*X1) --; (*Y1) --;
|
||
|
||
}
|
||
|
||
|
||
void HermNuevoRegistro( HermStruct *NHerm )
|
||
{
|
||
|
||
NHerm -> NHno = 0;
|
||
NHerm -> Nombre[0] = '\0';
|
||
NHerm -> Apellido1[0] = '\0';
|
||
NHerm -> Apellido2[0] = '\0';
|
||
|
||
NHerm -> Direccion[0] = '\0';
|
||
|
||
NHerm -> Telefono1[0] = '\0';
|
||
|
||
NHerm -> FechaN.da_day = 0;
|
||
NHerm -> FechaN.da_mon = 0;
|
||
NHerm -> FechaN.da_year= 0;
|
||
|
||
NHerm -> Antig.da_day = 0;
|
||
NHerm -> Antig.da_mon = 0;
|
||
NHerm -> Antig.da_year = 0;
|
||
|
||
}
|
||
|
||
|