1557 lines
57 KiB
C++
1557 lines
57 KiB
C++
#include <io.h>
|
||
#include <alloc.h>
|
||
#include <conio.h>
|
||
#include <string.h>
|
||
#include <stdlib.h>
|
||
#include <graphics.h>
|
||
|
||
#include "c:\program\src_dos\libs\make_bot\make_bot.h"
|
||
#include "c:\program\src_dos\libs\bdatos\bdatos.hh"
|
||
#include "alum_def.h"
|
||
|
||
#define NLINEAS_Alum 9
|
||
|
||
BDatos BAlum;
|
||
AntiguosAlumnos SAlum; // Estructura de Nombrees
|
||
|
||
/*************************************\
|
||
| |
|
||
| Parte Principal del M¢dulo |
|
||
| |
|
||
\*************************************/
|
||
void DuplicaBaseNombrees(void);
|
||
void MuestraDatosVAlum( int linea);
|
||
void MuestraDatosAlum( long RowStart );
|
||
void MuestraAyudaAlum( char columna );
|
||
//int CompruebaPulsosEstrellas( void );
|
||
void EditItemAlum( char columna, int linea );
|
||
void AlumNuevoRegistro( AntiguosAlumnos *MSAlum );
|
||
void MuestraAlum( char columna, int linea, char como );
|
||
void ObtenCoordenadasAlum( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 );
|
||
|
||
/*************************************\
|
||
| |
|
||
| Parte Secundaria del M¢dulo |
|
||
| |
|
||
| Secci¢n de Busqueda de Nombrees |
|
||
| |
|
||
\*************************************/
|
||
void ObtenCoordenadasMatchAlum( char Row, int *X0, int *Y0, int *X1, int *Y1 );
|
||
void MatchDrawAlum( char Row, AntiguosAlumnos MAlum, char como );
|
||
void BuscaAlum( char TipoBusqueda, char *CurrRow, long *CurrAlum );
|
||
int Match_Alum( AntiguosAlumnos *A, AntiguosAlumnos *B );
|
||
void EditMatchAlum( char Row, AntiguosAlumnos * MAlum );
|
||
int ObtenMatchAlum( AntiguosAlumnos *MAlum );
|
||
|
||
/*************************************\
|
||
| |
|
||
| Parte Tercera del M¢dulo |
|
||
| |
|
||
| Secci¢n para la impresi¢n |
|
||
| |
|
||
\*************************************/
|
||
void ImprimeFichaAAlum(void);
|
||
void ImprimeNombrees( char como );
|
||
void ImprimeCabeceraAlum( char como, FILE *file_out );
|
||
|
||
|
||
|
||
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
// Û Parte principal del m¢dulo Û
|
||
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* InfoAlumnos *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Controla la introduccion de datos y muestreo asi como todo *|
|
||
|* el interfaz de usuario... *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void GstAlumnos(void)
|
||
{
|
||
char buffer[100], ok = 0, i;
|
||
int BPush, key;
|
||
|
||
char oldCol = -1;
|
||
char CurrRow; // Linea sobre la que estamos
|
||
char CurrCol; // Columna sobre la que estamos
|
||
long CurrAlum; // Producto sobre el que estamos posicionados a golpes
|
||
|
||
// Rellenamos la pantalla con un fondo atractivo...
|
||
setfillstyle( Config.FillBgS, Config.FillBgC ); bar( 0, 0, 640, 480 );
|
||
Imprime_Estaticos( 30, "systm\\alum.img"); // Imprime botones estaticos 'Seccion 30'
|
||
|
||
sprintf( buffer, "datos\\alum.dbf" );
|
||
|
||
if ( BAlum.AbrirReg( buffer, sizeof( AntiguosAlumnos ) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
// Si no hay registros, creamos uno almenos.
|
||
if ( BAlum.Registros() == 0 )
|
||
{
|
||
AlumNuevoRegistro( &SAlum );
|
||
if ( BAlum.InsReg( (void *)&SAlum, BAlum.Registros(), ARRIBA ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
}
|
||
|
||
CurrAlum = 0; CurrRow = 0;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrRow + CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, 0 ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
|
||
CurrCol = 0;
|
||
|
||
do {
|
||
if ( CurrCol != oldCol )
|
||
{
|
||
oldCol = CurrCol; MuestraAyudaAlum( CurrCol );
|
||
}
|
||
|
||
// Si estamos en la parte de arriba, dejamos ver sobre que linea nos encontramos
|
||
for ( i = 0; i < 4; i++ )
|
||
MuestraAlum( i, CurrRow, (CurrCol >= 4) ? INTENSO : NORMAL );
|
||
|
||
MuestraAlum( CurrCol, CurrRow, INTENSO );
|
||
BPush = Comprueba_Secuencia( 1, NULL );
|
||
MuestraAlum( CurrCol, CurrRow, NORMAL );
|
||
|
||
switch ( BPush )
|
||
{
|
||
case 0: // No se pulso ningun BOTON
|
||
while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER
|
||
/*
|
||
if ( ( BPush = CompruebaPulsosEstrellas() ) != 0 )
|
||
{
|
||
MuestraAlum( BPush, CurrRow, INTENSO );
|
||
if ( BAlum.EscribeReg( (void *)&SAlum, (CurrRow + CurrAlum) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
}
|
||
*/
|
||
break;
|
||
case -2: // Hay una tecla normal en BUFFER
|
||
if ( ( key = getch() ) != 27 )
|
||
{
|
||
if ( key != 13 )
|
||
ungetch( key );
|
||
EditItemAlum( CurrCol, CurrRow );
|
||
if ( BAlum.EscribeReg( (void *)&SAlum, (CurrRow + CurrAlum) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraAlum( CurrCol, CurrRow, NORMAL );
|
||
CurrCol++; if ( CurrCol > 17 ) CurrCol = 17;
|
||
}
|
||
break;
|
||
case -1: // Hay una tecla especial en BUFFER
|
||
switch( getch() )
|
||
{
|
||
// Flecha Izquierda
|
||
case 75:
|
||
case 15:
|
||
CurrCol--; if ( CurrCol < 0 ) CurrCol = 17;
|
||
break;
|
||
// Flecha Derecha
|
||
case 77:
|
||
case 9:
|
||
CurrCol++; if ( CurrCol > 17 ) CurrCol = 0;
|
||
break;
|
||
// Flecha Arriba
|
||
case 72:
|
||
if ( CurrCol < 4 )
|
||
{
|
||
if ( (CurrRow + CurrAlum) > 0 )
|
||
{
|
||
if ( ( CurrRow ) <= 0 )
|
||
{
|
||
CurrRow = NLINEAS_Alum - 1; CurrAlum -= NLINEAS_Alum;
|
||
if ( CurrAlum < 0 ) CurrAlum = 0;
|
||
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrRow > 0 ) CurrRow--;
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrAlum > 0 ) CurrAlum++;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
} else {
|
||
CurrRow --; if ( CurrRow < 0 ) CurrRow = 0;
|
||
}
|
||
}
|
||
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
} else {
|
||
CurrCol--; if ( CurrCol < 0 ) CurrCol = 17;
|
||
}
|
||
break;
|
||
// Flecha Abajo
|
||
case 80:
|
||
if ( CurrCol < 4 )
|
||
{
|
||
if ( ( CurrRow + CurrAlum ) < BAlum.Registros() - 1 )
|
||
{
|
||
|
||
if ( ( CurrRow ) >= NLINEAS_Alum - 1 )
|
||
{
|
||
CurrRow = 0; CurrAlum += NLINEAS_Alum;
|
||
|
||
while ( (CurrAlum + CurrRow) >= BAlum.Registros() ) CurrAlum--;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
} else
|
||
CurrRow++;
|
||
}
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
} else {
|
||
CurrCol++; if ( CurrCol > 17 ) CurrCol = 0;
|
||
}
|
||
break;
|
||
// Inicio
|
||
case 71:
|
||
CurrRow = 0;
|
||
if ( CurrAlum != 0 )
|
||
{
|
||
CurrAlum = 0;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
}
|
||
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
break;
|
||
// Fin
|
||
case 79:
|
||
CurrRow = 0;
|
||
if ( CurrAlum != BAlum.Registros() - NLINEAS_Alum )
|
||
{
|
||
CurrAlum = BAlum.Registros() - NLINEAS_Alum;
|
||
if ( CurrAlum < 0 )
|
||
{
|
||
CurrAlum = 0;
|
||
CurrRow = BAlum.Registros()-1;
|
||
}
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
}
|
||
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
break;
|
||
}
|
||
break;
|
||
// Imprimir Alumerencias
|
||
case 1:
|
||
ImprimeFichaAAlum();
|
||
break;
|
||
// Menu Principal
|
||
case 2:
|
||
ok = 1;
|
||
break;
|
||
// Eliminar
|
||
case 3:
|
||
if ( Optar( 1, "ATENCION", "Esta seguro que desea", "eliminar al Alumno actual.", NULL ) )
|
||
{
|
||
if ( BAlum.DelReg( CurrAlum + CurrRow ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
if ( BAlum.Registros() == 0 )
|
||
{
|
||
AlumNuevoRegistro( &SAlum );
|
||
if ( BAlum.InsReg( (void *)&SAlum, BAlum.Registros(), ARRIBA ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
CurrRow = 0;
|
||
} else
|
||
|
||
// Si he borrado el £ltimo registro subo una linea
|
||
if ( (CurrAlum+CurrRow) >= ( BAlum.Registros() - 2 ) )
|
||
{
|
||
if ( (CurrRow + CurrAlum) > 0 )
|
||
{
|
||
if ( ( CurrRow ) <= 0 )
|
||
{
|
||
CurrRow = NLINEAS_Alum - 1; CurrAlum -= NLINEAS_Alum;
|
||
if ( CurrAlum < 0 ) CurrAlum = 0;
|
||
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrRow > 0 ) CurrRow--;
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrAlum > 0 ) CurrAlum++;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
} else {
|
||
CurrRow --; if ( CurrRow < 0 ) CurrRow = 0;
|
||
}
|
||
}
|
||
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
}
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
}
|
||
break;
|
||
// Insertar
|
||
case 4:
|
||
AlumNuevoRegistro( &SAlum );
|
||
if ( BAlum.InsReg( (void *)&SAlum, (CurrAlum + CurrRow), ARRIBA ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
CurrCol = 5;
|
||
if ( ( CurrRow + CurrAlum ) < BAlum.Registros() - 1 )
|
||
{
|
||
|
||
if ( ( CurrRow ) >= NLINEAS_Alum - 1 )
|
||
{
|
||
CurrRow = 0; CurrAlum += NLINEAS_Alum;
|
||
|
||
while ( (CurrAlum + CurrRow) >= BAlum.Registros() ) CurrAlum--;
|
||
|
||
} else
|
||
CurrRow++;
|
||
}
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
break;
|
||
// Retroceso R pido
|
||
case 5:
|
||
CurrRow = NLINEAS_Alum - 1; CurrAlum -= NLINEAS_Alum;
|
||
if ( CurrAlum < 0 ) CurrAlum = 0;
|
||
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrRow > 0 ) CurrRow--;
|
||
while( ( CurrRow + CurrAlum ) >= BAlum.Registros() && CurrAlum > 0 ) CurrAlum++;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
break;
|
||
// Busqueda Atras
|
||
case 6:
|
||
BuscaAlum( ATRAS, &CurrRow, &CurrAlum );
|
||
break;
|
||
// Buscar
|
||
case 7:
|
||
BuscaAlum( NUEVA_BUSQUEDA, &CurrRow, &CurrAlum );
|
||
break;
|
||
// Busqueda Adelante
|
||
case 8:
|
||
BuscaAlum( ADELANTE, &CurrRow, &CurrAlum );
|
||
|
||
break;
|
||
// AvanceR pido
|
||
case 9:
|
||
CurrRow = 0; CurrAlum += NLINEAS_Alum;
|
||
|
||
while ( (CurrAlum + CurrRow) >= BAlum.Registros() ) CurrAlum--;
|
||
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (CurrAlum + CurrRow) ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( CurrRow );
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
} while( !ok );
|
||
|
||
BAlum.CerrarReg();
|
||
}
|
||
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraDatosAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Dado un registro, se muestran sucesivamente este y todos *|
|
||
|* los que hay por debajo de ‚l, hasta que se agote la base *|
|
||
|* o no quepan mas en la pantalla. *|
|
||
|* *|
|
||
|* Entradas: Registro por el que comenzar *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraDatosAlum( long RowStart )
|
||
{
|
||
int linea, campo;
|
||
char dev;
|
||
int X0, Y0, X1, Y1;
|
||
|
||
// Imprimo la NLINEAS_Alum que caben en la pantalla
|
||
dev = OK;
|
||
for ( linea=0; linea < NLINEAS_Alum && (RowStart + linea) < BAlum.Registros()/*dev == OK*/; linea++ )
|
||
{
|
||
dev = BAlum.LeeReg( (void *)&SAlum, RowStart + linea );
|
||
if ( dev == OK )
|
||
// Por cada linea hay 4 campos, ehhh!!!
|
||
for ( campo=0; campo < 4; campo++ )
|
||
MuestraAlum( campo, linea, NORMAL );
|
||
}
|
||
|
||
// Ahora limpio los restantes huecos si los hay
|
||
if ( linea < NLINEAS_Alum ) //dev != OK )
|
||
{
|
||
//linea--;
|
||
setfillstyle( SOLID_FILL, Config.TxtBgN );
|
||
for ( ; linea < NLINEAS_Alum; linea++ )
|
||
for ( campo=0; campo < 4; campo++ )
|
||
{
|
||
ObtenCoordenadasAlum( campo, linea, &X0, &Y0, &X1, &Y1 );
|
||
bar( X0, Y0, X1, Y1 );
|
||
}
|
||
}
|
||
}
|
||
|
||
void MuestraDatosVAlum( int linea )
|
||
{
|
||
int campo;
|
||
|
||
// Mostramos los campos que faltan, ( 1¦ Linea )
|
||
// mas 5 que pertenecen a las estrellas
|
||
for ( campo=4; campo < 18; campo++ )
|
||
MuestraAlum( campo, linea, NORMAL );
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Reescribe el campo dado, seg£n la fila, y la intensidad *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* columna campo ha mostar *|
|
||
|* linea linea en la que nos encontramos *|
|
||
|* como intensidad del texto (NORMAL/INTENSO) *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraAlum( char columna, int linea, char como )
|
||
{
|
||
char buffer[80], draw;
|
||
char buffer1[80], i;
|
||
|
||
int X0, Y0, X1, Y1;
|
||
|
||
ObtenCoordenadasAlum( columna, linea, &X0, &Y0, &X1, &Y1 );
|
||
|
||
draw = 1;
|
||
|
||
|
||
switch( columna )
|
||
{
|
||
// Nombre del Alumno
|
||
case 0:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, "%15s", SAlum.Nombre );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// Apellidos
|
||
case 1:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, "%30s", SAlum.Apellidos );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// Direccion
|
||
case 2:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, "%30s", SAlum.Direccion );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// Telefono1
|
||
case 3:
|
||
sprintf ( buffer, "%15s", SAlum.Telefono1 );
|
||
break;
|
||
|
||
|
||
// Codigo
|
||
case 4:
|
||
sprintf ( buffer, " %08ld", BAlum.RegActual() );
|
||
break;
|
||
// Nombre del Alumno
|
||
case 5:
|
||
sprintf ( buffer, "%29s", SAlum.Nombre );
|
||
break;
|
||
// Apellidos
|
||
case 6:
|
||
sprintf ( buffer, "%29s", SAlum.Apellidos );
|
||
break;
|
||
// Direcci¢n
|
||
case 7:
|
||
sprintf ( buffer, "%29s", SAlum.Direccion );
|
||
break;
|
||
// Localidad
|
||
case 8:
|
||
sprintf ( buffer, "%15s", SAlum.Localidad );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
sprintf ( buffer, "%15s", SAlum.Provincia );
|
||
break;
|
||
// Codigo Postal
|
||
case 10:
|
||
sprintf ( buffer, "%09lu", SAlum.CodPostal );
|
||
break;
|
||
|
||
// Telefono1
|
||
case 11:
|
||
sprintf ( buffer, "%15s", SAlum.Telefono1 );
|
||
break;
|
||
// Fax
|
||
case 12:
|
||
sprintf ( buffer, "%15s", SAlum.Fax );
|
||
break;
|
||
|
||
// CuentaBancaria 1 / 4
|
||
case 13:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, " %04d", SAlum.CC.Oficina );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// CuentaBancaria 2 / 4
|
||
case 14:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, " %04d", SAlum.CC.Sucursal );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// CuentaBancaria 3 / 4
|
||
case 15:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, " %02d", (int)SAlum.CC.DigControl );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// CuentaBancaria 4 / 4
|
||
case 16:
|
||
draw = 0;
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
sprintf ( buffer, " %010.0f", SAlum.CC.NumCuenta );
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
|
||
// Comentario
|
||
case 17:
|
||
draw = 0;
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
for ( i = 0; i < 4; i++ )
|
||
outtextxy( X0, Y0 + 14*i, SAlum.Notas[i] );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
/*
|
||
// Estrellas
|
||
case 15:
|
||
case 16:
|
||
case 17:
|
||
case 18:
|
||
case 19:
|
||
case 20:
|
||
case 21:
|
||
case 22:
|
||
if ( ( SAlum.Estrellas & ( 0x01 << (columna - 15) ) ) >> (columna - 15 ) )
|
||
ponicono( X0+5, Y0+5, led_on, 1 );
|
||
else
|
||
ponicono( X0+5, Y0+5, led_off, 1 );
|
||
// En las estrellas no hay que imprimir nada
|
||
draw = 0;
|
||
break;
|
||
*/
|
||
|
||
}
|
||
|
||
if ( draw )
|
||
{
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
}
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MuestraAyudaAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Muestra una peque¤a descripcion del contenido para el campo *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* columna campo ha mostar su ayuda *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void MuestraAyudaAlum( char columna )
|
||
{
|
||
char buffer1[80];
|
||
|
||
switch( columna )
|
||
{
|
||
// Nombre del Alumno
|
||
case 0:
|
||
sprintf ( buffer1, "Nombre del Antiguo alumno" );
|
||
break;
|
||
// Apellidos
|
||
case 1:
|
||
sprintf ( buffer1, "1er y 2do Apellido del antiguo alumno" );
|
||
break;
|
||
// Telefono 1
|
||
case 2:
|
||
sprintf ( buffer1, "N£mero de tel‚fono del antiguo Alumno" );
|
||
break;
|
||
// Fax
|
||
case 3:
|
||
sprintf ( buffer1, "Fax o segundo tel‚fono del antiguo Alumno" );
|
||
break;
|
||
|
||
|
||
// Codigo
|
||
case 4:
|
||
sprintf ( buffer1, "Codigo secuencial. ( DATO PARA EL BANCO )" );
|
||
break;
|
||
// Nombre del Alumno
|
||
case 5:
|
||
sprintf ( buffer1, "Nombre del Antiguo alumno" );
|
||
break;
|
||
// Apellidos
|
||
case 6:
|
||
sprintf ( buffer1, "1er y 2do Apellido del antiguo alumno" );
|
||
break;
|
||
// Direccion
|
||
case 7:
|
||
sprintf ( buffer1, "Direcci¢n, calle, n§..." );
|
||
break;
|
||
// Localidad
|
||
case 8:
|
||
sprintf ( buffer1, "Localidad" );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
sprintf ( buffer1, "Provincia" );
|
||
break;
|
||
// C¢digo postal
|
||
case 10:
|
||
sprintf ( buffer1, "C¢digo Postal" );
|
||
break;
|
||
// Telefono 1
|
||
case 11:
|
||
sprintf ( buffer1, "N£mero de tel‚fono del antiguo Alumno" );
|
||
break;
|
||
// Fax
|
||
case 12:
|
||
sprintf ( buffer1, "Fax o segundo tel‚fono del antiguo Alumno" );
|
||
break;
|
||
// Codigo Cuenta Cliente
|
||
// Oficina
|
||
case 13:
|
||
sprintf ( buffer1, "Oficina 4 dig." );
|
||
break;
|
||
// Sucursal
|
||
case 14:
|
||
sprintf ( buffer1, "Sucursal 4 dig." );
|
||
break;
|
||
// Digito Control.
|
||
case 15:
|
||
sprintf ( buffer1, "D¡gito control 2 dig." );
|
||
break;
|
||
// N§ Cuenta
|
||
case 16:
|
||
sprintf ( buffer1, "N£mero de cuenta 10 dig." );
|
||
break;
|
||
|
||
case 17:
|
||
sprintf ( buffer1, "Breves notas sobre el antiguo alumno" );
|
||
break;
|
||
}
|
||
|
||
// Ayuda reducida
|
||
setfillstyle( SOLID_FILL, EGA_BLACK ); bar( 7, 457, 498, 473 );
|
||
// Imprime la ayudita
|
||
setcolor( EGA_WHITE ); outtextxy( 7, 457, buffer1 );
|
||
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* EditItemAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Se encarga de editar y validar el campo. *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* columna campo ha editar *|
|
||
|* linea linea en la que nos encontramos *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void EditItemAlum( char columna, int linea )
|
||
{
|
||
char buffer[80];
|
||
|
||
int X0, Y0, X1, Y1;
|
||
|
||
ObtenCoordenadasAlum( columna, linea, &X0, &Y0, &X1, &Y1 );
|
||
|
||
switch( columna )
|
||
{
|
||
// Codigo Real
|
||
case 4:
|
||
/*
|
||
sprintf ( buffer, "%lu", SAlum.CodigoR );
|
||
if ( !( InputCadenaG( buffer, 1, 9, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CodigoR = atol( buffer );
|
||
MuestraAlum( 0, linea, NORMAL );
|
||
MuestraAlum( 4, linea, NORMAL );
|
||
*/
|
||
break;
|
||
// Nombre del Alumno
|
||
case 5:
|
||
strcpy ( buffer, SAlum.Nombre );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Nombre, buffer );
|
||
MuestraAlum( 0, linea, NORMAL );
|
||
// MuestraAlum( 5, linea, NORMAL );
|
||
|
||
break;
|
||
// 1er y 2do Apellidos
|
||
case 6:
|
||
strcpy ( buffer, SAlum.Apellidos );
|
||
if ( !( InputCadenaG( buffer, 0, 28, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Apellidos, buffer );
|
||
MuestraAlum( 1, linea, NORMAL );
|
||
// MuestraAlum( 6, linea, NORMAL );
|
||
|
||
break;
|
||
// Direccion
|
||
case 7:
|
||
sprintf ( buffer, "%s", SAlum.Direccion );
|
||
if ( !( InputCadenaG( buffer, 0, 28, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Direccion, buffer );
|
||
MuestraAlum( 2, linea, NORMAL );
|
||
break;
|
||
// Poblaci¢n
|
||
case 8:
|
||
sprintf ( buffer, "%s", SAlum.Localidad );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Localidad, buffer );
|
||
break;
|
||
// Provincia
|
||
case 9:
|
||
sprintf ( buffer, "%s", SAlum.Provincia );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Provincia, buffer );
|
||
break;
|
||
// C¢digo Postal
|
||
case 10:
|
||
sprintf ( buffer, "%lu", SAlum.CodPostal );
|
||
if ( !( InputCadenaG( buffer, 0, 5, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CodPostal = atol ( buffer );
|
||
break;
|
||
|
||
|
||
// Telefono
|
||
case 11:
|
||
sprintf ( buffer, "%s", SAlum.Telefono1 );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Telefono1, buffer );
|
||
MuestraAlum( 3, linea, NORMAL );
|
||
break;
|
||
// Fax
|
||
case 12:
|
||
sprintf ( buffer, "%s", SAlum.Fax );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
strcpy ( SAlum.Fax, buffer );
|
||
// MuestraAlum( 3, linea, NORMAL );
|
||
break;
|
||
|
||
// Codgio Cuenta
|
||
// Oficina
|
||
case 13:
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
|
||
sprintf ( buffer, "%d", SAlum.CC.Oficina );
|
||
if ( !( InputCadenaG( buffer, 0, 4, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CC.Oficina = atoi ( buffer );
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// Sucursal
|
||
case 14:
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
|
||
sprintf ( buffer, "%d", SAlum.CC.Sucursal );
|
||
if ( !( InputCadenaG( buffer, 0, 4, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CC.Sucursal = atoi ( buffer );
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// Dig.Control
|
||
case 15:
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
|
||
sprintf ( buffer, "%d", (int)SAlum.CC.DigControl );
|
||
if ( !( InputCadenaG( buffer, 0, 2, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CC.DigControl = (char)atoi ( buffer );
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
// C¢digo Cuenta Cliente
|
||
case 16:
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
|
||
sprintf ( buffer, "%Ld", SAlum.CC.NumCuenta );
|
||
if ( !( InputCadenaG( buffer, 0, 10, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
SAlum.CC.NumCuenta = atof ( buffer );
|
||
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
|
||
// Comentario
|
||
case 17:
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
|
||
EditComentario( (char *)(&SAlum.Notas[0][0]), 3, 37, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1, 14 );
|
||
settextstyle( SMALL_FONT, HORIZ_DIR, 5 );
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ObtenCoordenadasAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Obtiene las coordenadas de acotacion para el campo pedido *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* columna campo del que obtener las coordenadas *|
|
||
|* linea linea en la que nos encontramos *|
|
||
|* X0 Y0 X1 Y1 Punteros para devolver las coordenadas *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void ObtenCoordenadasAlum( char columna, char linea, int *X0, int *Y0, int *X1, int *Y1 )
|
||
{
|
||
|
||
// Calculamos la Y0, Y1 para la linea dada ( SOLO columna < 6 )
|
||
*Y0 = 264 + 19*linea;
|
||
*Y1 = *Y0 + 17;
|
||
|
||
switch( columna )
|
||
{
|
||
case 0:
|
||
*X0 = 7; *X1 = 108;
|
||
break;
|
||
case 1:
|
||
*X0 = 107; *X1 = 298;
|
||
break;
|
||
case 2:
|
||
*X0 = 307; *X1 = 495;
|
||
break;
|
||
case 3:
|
||
*X0 = 505; *X1 = 633;
|
||
break;
|
||
|
||
case 4:
|
||
*X0 = 67; *Y0 = 7;
|
||
*X1 = 148; *Y1 = 28;
|
||
break;
|
||
case 5:
|
||
*X0 = 152; *Y0 = 42;
|
||
*X1 = 390; *Y1 = 63;
|
||
break;
|
||
case 6:
|
||
*X0 = 152; *Y0 = 67;
|
||
*X1 = 390; *Y1 = 88;
|
||
break;
|
||
case 7:
|
||
*X0 = 152; *Y0 = 112;
|
||
*X1 = 390; *Y1 = 133;
|
||
/*
|
||
*X0 = 92; *Y0 = 112;
|
||
*X1 = 388; *Y1 = 133;
|
||
*/
|
||
break;
|
||
case 8:
|
||
*X0 = 92; *Y0 = 137;
|
||
*X1 = 223; *Y1 = 158;
|
||
break;
|
||
case 9:
|
||
*X0 = 312; *Y0 = 137;
|
||
*X1 = 438; *Y1 = 158;
|
||
break;
|
||
case 10:
|
||
*X0 = 522; *Y0 = 137;
|
||
*X1 = 598; *Y1 = 158;
|
||
break;
|
||
case 11:
|
||
*X0 = 92; *Y0 = 162;
|
||
*X1 = 245; *Y1 = 183;
|
||
break;
|
||
case 12:
|
||
*X0 = 255; *Y0 = 162;
|
||
*X1 = 388; *Y1 = 183;
|
||
break;
|
||
|
||
case 13:
|
||
*X0 = 10; *Y0 = 209;
|
||
*X1 = 60; *Y1 = 220;
|
||
break;
|
||
case 14:
|
||
*X0 = 65; *Y0 = 209;
|
||
*X1 =115; *Y1 = 220;
|
||
break;
|
||
case 15:
|
||
*X0 =120; *Y0 = 209;
|
||
*X1 =145; *Y1 = 220;
|
||
break;
|
||
case 16:
|
||
*X0 =150; *Y0 = 209;
|
||
*X1 =250; *Y1 = 220;
|
||
break;
|
||
|
||
case 17:
|
||
*X0 = 402; *Y0 = 165;
|
||
*X1 = 633; *Y1 = 221;
|
||
break;
|
||
}
|
||
|
||
*X0 += 2;
|
||
*X1 -= 2;
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* AlumNuevoRegistro *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Limpia el buffer, para un nuevo registro. *|
|
||
|* *|
|
||
|* Entradas: (ninguna) *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void AlumNuevoRegistro( AntiguosAlumnos *NSAlum )
|
||
{
|
||
int i, j;
|
||
|
||
NSAlum -> CodigoR = 0; // Codigos asignados a los Alumnos
|
||
strcpy( NSAlum -> Nombre , "" ); // Nombre del Nombre
|
||
// Nombre del Nombre
|
||
strcpy( NSAlum -> Apellidos, "" );
|
||
|
||
strcpy( NSAlum -> Telefono1, "" ); // Tel‚fono y fax del Nombre
|
||
strcpy( NSAlum -> Fax, "" ); //
|
||
|
||
strcpy( NSAlum -> Direccion, "" ); // Direccion
|
||
|
||
strcpy( NSAlum -> Localidad, "" ); // Localidad
|
||
strcpy( NSAlum -> Provincia, "" ); // Alumincia
|
||
NSAlum -> CodPostal = 0; // C¢digo Postal
|
||
|
||
|
||
NSAlum -> CC.Oficina = 0; // Oficina
|
||
NSAlum -> CC.Sucursal = 0; // Sucursal
|
||
NSAlum -> CC.DigControl = 0; // DC
|
||
NSAlum -> CC.NumCuenta = 0; // NumCuenta
|
||
|
||
// NSAlum -> Estrellas = 0; // Estrellas ( lo que imagina el cliente )
|
||
for ( i = 0; i < 1024; i++ )
|
||
NSAlum -> FuturaAmpliacion[i] = '\0';
|
||
|
||
for ( i = 0; i < 4; i++ )
|
||
for ( j = 0; j < 37; j++ )
|
||
SAlum.Notas[i][j] = '\0';
|
||
|
||
|
||
}
|
||
|
||
/*
|
||
int CompruebaPulsosEstrellas(void)
|
||
{
|
||
char enc, i;
|
||
|
||
enc = 0;
|
||
|
||
for ( i=0; i < 8; i++ )
|
||
{
|
||
if ( y_raton > 190 && y_raton < 215 &&
|
||
x_raton > ( 90 + 30 * i ) && x_raton < ( 90 + 30 * i + 25 ) )
|
||
{
|
||
if ( SAlum.Estrellas & ( 0x01 << i ) )
|
||
SAlum.Estrellas -= ( 0x01 << i );
|
||
else
|
||
SAlum.Estrellas += ( 0x01 << i );
|
||
|
||
enc = 15 + i;
|
||
break;
|
||
}
|
||
}
|
||
|
||
Anclar_Raton();
|
||
|
||
return enc;
|
||
}
|
||
*/
|
||
|
||
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
// Û Parte secundaria del m¢dulo Û
|
||
// Û Û
|
||
// Û Secci¢n de Busqueda de refecencias Û
|
||
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* BuscaAlum *|
|
||
|* *|
|
||
|* 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 BuscaAlum( char TipoBusqueda, char *CurrRow, long *CurrAlum )
|
||
{
|
||
static AntiguosAlumnos MAlum;
|
||
char enc; long i;
|
||
|
||
|
||
switch ( TipoBusqueda )
|
||
{
|
||
case NUEVA_BUSQUEDA:
|
||
if ( ObtenMatchAlum( &MAlum ) != OK )
|
||
return;
|
||
i = 0;
|
||
break;
|
||
case ATRAS:
|
||
case ADELANTE:
|
||
i = ( *CurrRow + *CurrAlum ) + TipoBusqueda;
|
||
break;
|
||
}
|
||
|
||
Optar( ENCUADRE, "Comando: Buscar", "Ahora se inica", "la busqueda elegida", NULL );
|
||
enc = 0;
|
||
while ( i < BAlum.Registros() && !enc )
|
||
{
|
||
if ( BAlum.LeeReg( (void *)&SAlum, i ) == ERROR )
|
||
Error( 0x01, BAlum.cError);
|
||
if ( Match_Alum( &SAlum, &MAlum ) )
|
||
enc = 1;
|
||
else
|
||
i++;
|
||
}
|
||
|
||
Optar( ENCUADRE, NULL );
|
||
|
||
if ( enc )
|
||
{
|
||
*CurrRow = 0; *CurrAlum = i;
|
||
// Mostramos datos hasta que se nos acabe la pantalla
|
||
MuestraDatosAlum( *CurrRow + *CurrAlum );
|
||
if ( BAlum.LeeReg( (void *)&SAlum, *CurrAlum ) == ERROR )
|
||
Error(0x01, BAlum.cError);
|
||
MuestraDatosVAlum( *CurrRow );
|
||
} else
|
||
switch( TipoBusqueda )
|
||
{
|
||
case NUEVA_BUSQUEDA:
|
||
Optar( 0, "Comando: Buscar", "No se encontr¢", "ninguna coincidencia", NULL );
|
||
break;
|
||
case ATRAS:
|
||
case ADELANTE:
|
||
Optar( 0, "Comando: Buscar", "No se encontr¢", "ninguna coincidencia", NULL );
|
||
break;
|
||
}
|
||
|
||
if ( BAlum.LeeReg( (void *)&SAlum, (*CurrRow + *CurrAlum) ) == ERROR )
|
||
Error( 0x01, BAlum.cError);
|
||
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* Match_Alum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Compara dos registros y devuelve la posible coincidencia *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Registros a comparar *|
|
||
|* *|
|
||
|* Salidas: *|
|
||
|* Resultado de la comparaci¢n *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
int Match_Alum( AntiguosAlumnos *A, AntiguosAlumnos *B )
|
||
{
|
||
if ( B -> Nombre[0] != '\0' )
|
||
return ( strncmpi( A -> Nombre, B -> Nombre, strlen( B -> Nombre ) ) == 0 );
|
||
if ( B -> Apellidos[0] != '\0' )
|
||
return ( strncmpi( A -> Apellidos, B -> Apellidos, strlen( B -> Apellidos ) ) == 0 );
|
||
if ( B -> Direccion[0] != '\0' )
|
||
return ( strncmpi( A -> Direccion, B -> Direccion, strlen( B -> Direccion ) ) == 0 );
|
||
if ( B -> Telefono1[0] != '\0' )
|
||
return ( strncmpi( A -> Telefono1, B -> Telefono1, strlen( B -> Telefono1 ) ) == 0 );
|
||
|
||
return 0;
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ObtenMatchAlum *|
|
||
|* *|
|
||
|* 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 ObtenMatchAlum( AntiguosAlumnos *MAlum )
|
||
{
|
||
char Row, ok, i;
|
||
int BPush, key, DEV;
|
||
struct textsettingstype texttypeinfo;
|
||
|
||
gettextsettings( &texttypeinfo );
|
||
|
||
Optar( ENCUADRE, "Comando: Buscar", NULL );
|
||
Imprime_Estaticos( 31, "systm\\alum.img" );
|
||
|
||
ok = 0; Row = 0;
|
||
|
||
AlumNuevoRegistro( MAlum );
|
||
|
||
do
|
||
{
|
||
MatchDrawAlum(Row, *MAlum, INTENSO);
|
||
BPush = Comprueba_Secuencia( SEC_OPTAR, NULL );
|
||
MatchDrawAlum(Row, *MAlum, 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 );
|
||
EditMatchAlum( Row, MAlum );
|
||
for ( i=0; i < 4; i++ )
|
||
MatchDrawAlum(i, *MAlum, NORMAL);
|
||
break;
|
||
case -1:
|
||
switch ( getch() )
|
||
{
|
||
// Flecha Izquierda
|
||
case 75:
|
||
case 15:
|
||
// Flecha Arriba
|
||
case 72:
|
||
Row--; if ( Row < 0 ) Row = 3;
|
||
break;
|
||
// Flecha Derecha
|
||
case 77:
|
||
case 9:
|
||
// Flecha Abajo
|
||
case 80:
|
||
Row++; if ( Row > 3 ) 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;
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* EditMatchAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Edita el patron de busqueda *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Campo a editar, y lugar donde almacenarlo *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void EditMatchAlum( char Row, AntiguosAlumnos * MAlum )
|
||
{
|
||
int X0, Y0, X1, Y1;
|
||
char buffer[80];
|
||
|
||
ObtenCoordenadasMatchAlum( Row, &X0, &Y0, &X1, &Y1 );
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
sprintf( buffer, "%s", MAlum -> Nombre );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
AlumNuevoRegistro( MAlum );
|
||
strcpy( MAlum -> Nombre, buffer );
|
||
}
|
||
break;
|
||
case 1:
|
||
sprintf( buffer, "%s", MAlum -> Apellidos );
|
||
if ( !( InputCadenaG( buffer, 0, 25, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
AlumNuevoRegistro( MAlum );
|
||
strcpy ( MAlum -> Apellidos, buffer );
|
||
}
|
||
break;
|
||
case 2:
|
||
sprintf( buffer, "%s", MAlum -> Direccion );
|
||
if ( !( InputCadenaG( buffer, 0, 25, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
AlumNuevoRegistro( MAlum );
|
||
strcpy ( MAlum -> Direccion, buffer );
|
||
}
|
||
break;
|
||
case 3:
|
||
sprintf( buffer, "%s", MAlum -> Telefono1 );
|
||
if ( !( InputCadenaG( buffer, 0, 15, Config.TxtBgN, Config.TxtFgN, X0, Y0, X1, Y1) >> 8 ) )
|
||
{
|
||
AlumNuevoRegistro( MAlum );
|
||
strcpy ( MAlum -> Telefono1, buffer );
|
||
}
|
||
break;
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MatchDrawAlum *|
|
||
|* *|
|
||
|* 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 MatchDrawAlum( char Row, AntiguosAlumnos MAlum, char como )
|
||
{
|
||
int X0, Y0, X1, Y1;
|
||
char buffer[80];
|
||
|
||
ObtenCoordenadasMatchAlum( Row, &X0, &Y0, &X1, &Y1 );
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
sprintf( buffer, "%15s", MAlum.Nombre );
|
||
break;
|
||
case 1:
|
||
strncpy( buffer, MAlum.Apellidos, 25 );
|
||
buffer[26] = '\0';
|
||
break;
|
||
case 2:
|
||
strncpy( buffer, MAlum.Direccion, 25 );
|
||
buffer[26] = '\0';
|
||
break;
|
||
case 3:
|
||
strncpy( buffer, MAlum.Telefono1, 15 );
|
||
buffer[15] = '\0';
|
||
break;
|
||
}
|
||
|
||
setfillstyle( SOLID_FILL, ( como == NORMAL ) ? Config.TxtBgN : Config.TxtBgI );
|
||
bar( X0, Y0, X1, Y1 );
|
||
setcolor ( ( como == NORMAL ) ? Config.TxtFgN : Config.TxtFgI );
|
||
outtextxy( X0+2, Y0, buffer );
|
||
|
||
}
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* MatchDrawAlum *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Obtiene las coordenadas relativas al campo dado. *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Campo a obtener las coordenadas, y coordenadas de salida *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void ObtenCoordenadasMatchAlum( char Row, int *X0, int *Y0, int *X1, int *Y1 )
|
||
{
|
||
|
||
switch( Row )
|
||
{
|
||
case 0:
|
||
*X0 = 265; *X1 = 465;
|
||
*Y0 = 200; *Y1 = 220;
|
||
break;
|
||
case 1:
|
||
*X0 = 265; *X1 = 465;
|
||
*Y0 = 225; *Y1 = 245;
|
||
break;
|
||
case 2:
|
||
*X0 = 265; *X1 = 465;
|
||
*Y0 = 250; *Y1 = 275;
|
||
break;
|
||
case 3:
|
||
*X0 = 265; *X1 = 465;
|
||
*Y0 = 280; *Y1 = 305;
|
||
break;
|
||
case 4:
|
||
*X0 = 385; *X1 = 465;
|
||
*Y0 = 250; *Y1 = 275;
|
||
break;
|
||
case 5:
|
||
*X0 = 330; *X1 = 365;
|
||
*Y0 = 275; *Y1 = 300;
|
||
break;
|
||
}
|
||
|
||
(*X0) ++; (*Y0) ++;
|
||
(*X1) --; (*Y1) --;
|
||
|
||
}
|
||
|
||
|
||
// ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
||
// Û Parte secundaria del m¢dulo Û
|
||
// Û Û
|
||
// Û Secci¢n de Busqueda de refecencias Û
|
||
// ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
||
|
||
/**************************************************************************\
|
||
|* *|
|
||
|* ImprimeNombrees *|
|
||
|* *|
|
||
|* Descripci¢n: *|
|
||
|* Imprime todas las referencias seg£n se le indique *|
|
||
|* *|
|
||
|* Entradas: *|
|
||
|* Como imprimir las referencias *|
|
||
|* *|
|
||
|* Salidas: (ninguna) *|
|
||
|* *|
|
||
\**************************************************************************/
|
||
void ImprimeNombrees( char como )
|
||
{
|
||
long i, old_reg;
|
||
char buffer[80];
|
||
char Pag=0;
|
||
|
||
|
||
FILE *file_out;
|
||
|
||
old_reg = BAlum.RegActual();
|
||
|
||
if ( !Config.Impresora.Printer )
|
||
{
|
||
if ( ( file_out = fopen( Config.Impresora.PrintTo, "w" ) ) == NULL )
|
||
return;
|
||
} else {
|
||
file_out = stdprn;
|
||
while ( !Comprueba_Impresora() )
|
||
{
|
||
if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
|
||
return;
|
||
}
|
||
}
|
||
|
||
|
||
ImprimeCabeceraAlum(como, file_out);
|
||
|
||
for ( i=0; i<BAlum.Registros(); i++ )
|
||
{
|
||
Pag++; if ( Pag > Config.Impresora.Lineas ) { Pag = 1; fputc( 12, file_out ); }
|
||
BAlum.LeeReg( (void *)&SAlum, i );
|
||
switch( como )
|
||
{
|
||
// Listado General
|
||
case 1:
|
||
sprintf( buffer, "%s %s", SAlum.Nombre, SAlum.Apellidos );
|
||
buffer[31] = '\0';
|
||
fprintf( file_out, "%-30s %-28s %-15s\n\r", buffer, SAlum.Direccion, SAlum.Telefono1 );
|
||
break;
|
||
// Listado Etiquetas
|
||
case 2:
|
||
sprintf( buffer, "%s, %s", SAlum.Nombre, SAlum.Apellidos );
|
||
buffer[31] = '\0';
|
||
fprintf( file_out, "%30s\n", buffer );
|
||
fprintf( file_out, "%30s\n", SAlum.Direccion );
|
||
fprintf( file_out, "%15s (%15s)\n", SAlum.Localidad, SAlum.Provincia );
|
||
fprintf( file_out, "C¢d. Postal: %lu\n", SAlum.CodPostal );
|
||
|
||
fprintf( file_out, "\n" );
|
||
|
||
break;
|
||
// Facturas Bancarias ( IMPRESO )
|
||
case 3:
|
||
fprintf( file_out, " %04d %04d %02d %010.0f", SAlum.CC.Sucursal, SAlum.CC.Oficina, SAlum.CC.DigControl, SAlum.CC.NumCuenta );
|
||
fprintf( file_out, " %-15s, %s\n", SAlum.Nombre, SAlum.Apellidos );
|
||
break;
|
||
}
|
||
}
|
||
|
||
if ( !Config.Impresora.Printer )
|
||
fclose( file_out );
|
||
|
||
BAlum.LeeReg( (void *)&SAlum, old_reg );
|
||
|
||
}
|
||
|
||
void ImprimeCabeceraAlum( char como, FILE *file_out )
|
||
{
|
||
|
||
switch( como )
|
||
{
|
||
// Listado R pido
|
||
case 1:
|
||
fprintf( file_out, "Nombre y Apellidos Direcci¢n Tel‚fono\n\r" );
|
||
fprintf( file_out, "------------------------------------------------------------------------\n\r" );
|
||
// 123456789-123456789-123456789 123456789-123456789-123456789- 123456789-12345
|
||
// 123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
|
||
break;
|
||
// Listado Completo
|
||
case 2:
|
||
// C¢digos de banco
|
||
case 3:
|
||
fprintf( file_out, "Sucursal Ofic. DC. Num Cuenta Nombre, Apellidos\n\r" );
|
||
fprintf( file_out, "------------------------------------------------------------------------\n\r" );
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
void ImprimeFichaAAlum(void)
|
||
{
|
||
int i;
|
||
FILE *file_out;
|
||
|
||
if ( !Config.Impresora.Printer )
|
||
{
|
||
if ( ( file_out = fopen( Config.Impresora.PrintTo, "w" ) ) == NULL )
|
||
return;
|
||
} else
|
||
file_out = stdprn;
|
||
|
||
if ( Config.Impresora.Printer && !Optar( 1, " Prepare la impresora !", "Prepare y encienda la", "impresora, y pulse ACEPTAR", "cuando este lista...", NULL ) )
|
||
return;
|
||
|
||
|
||
fprintf( file_out, "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" );
|
||
fprintf( file_out, "³ Ficha: %05ld ³\n", BAlum.RegActual() );
|
||
fprintf( file_out, "³----------------ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n" );
|
||
fprintf( file_out, "³ ³\n" );
|
||
fprintf( file_out, "³ Nombre: %-30s, %-15s ³\n", SAlum.Apellidos, SAlum.Nombre );
|
||
fprintf( file_out, "³ ³\n" );
|
||
fprintf( file_out, "³ Direcci¢n: %-30s ³\n", SAlum.Direccion );
|
||
fprintf( file_out, "³ Localidad: %-15s Provincia: %-15s Cod.Post: %05lu ³\n", SAlum.Localidad, SAlum.Provincia, SAlum.CodPostal );
|
||
fprintf( file_out, "³ ³\n" );
|
||
fprintf( file_out, "³ Telefono: %-15s %-15s ³\n", SAlum.Telefono1, SAlum.Fax );
|
||
fprintf( file_out, "³ ³\n" );
|
||
fprintf( file_out, "³ CC: Sucursal Oficina D.C. Num Cuenta ³\n" );
|
||
fprintf( file_out, "³ %04d %04d %02d %010.0f ³\n", SAlum.CC.Sucursal, SAlum.CC.Oficina, SAlum.CC.DigControl, SAlum.CC.NumCuenta );
|
||
fprintf( file_out, "³ ³\n" );
|
||
fprintf( file_out, "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n" );
|
||
fprintf( file_out, "\n" );
|
||
fprintf( file_out, " Notas:\n" );
|
||
|
||
for ( i=0; i < 4; i++ )
|
||
fprintf( file_out, " %s\n", SAlum.Notas[i] );
|
||
|
||
if ( !Config.Impresora.Printer )
|
||
fclose ( file_out );
|
||
|
||
|
||
} |