First commit 11/11/1991
This commit is contained in:
		
							
								
								
									
										361
									
								
								AGENDA.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										361
									
								
								AGENDA.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,361 @@
 | 
			
		||||
** Codigo fuente para MAKE_BOTON
 | 
			
		||||
**
 | 
			
		||||
** Make BOTON es un programa realizado por Jos<6F> David Guill<6C>n
 | 
			
		||||
**
 | 
			
		||||
** Enlazar al programa principal con MB2CPP,  y compilar a OBJ para Linkar
 | 
			
		||||
**
 | 
			
		||||
**
 | 
			
		||||
** MAKE_BOTON es un producto de JD. -->>> 5.000 Libreria exelente para
 | 
			
		||||
**                                              tratamiento de botones y grf.
 | 
			
		||||
** ONDA_GRN  es un producto de JD. --->>> 5.000 Le gustaria representar ondas
 | 
			
		||||
**                                              sonoras con facilidad: ONDA_GRN        
 | 
			
		||||
**                                              UTILIZADO EN <20><><EFBFBD> FREC_OSC !!!      
 | 
			
		||||
**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*  ATENCION !!! 
 | 
			
		||||
*               ALTERAR ESTE FICHERO, CAUSARA EL MALFUNCIONAMIENTO DEL
 | 
			
		||||
*               PROGRAMA DE APOYO... ( ERRORES NO DOCUMENTADOS )
 | 
			
		||||
*
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
 | 
			
		||||
#4
 | 
			
		||||
 | 
			
		||||
!1,37
 | 
			
		||||
 | 
			
		||||
<EFBFBD>1
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro General de Hermanos,
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$ 605,  5, 635,  25,           7, 63, 56,  0,  2, 000, 079
 | 
			
		||||
*| 609,       7,       2,  5,  0, 1,  >,
 | 
			
		||||
$ 570,  5, 600,  25,           7, 63, 56,  0,  2, 000, 081
 | 
			
		||||
*| 574,       7,       2,  5,  0, 1,  >>,
 | 
			
		||||
$ 535,  5, 565,  25,           7, 63, 56,  0,  2, 000, 073
 | 
			
		||||
*| 539,       7,       2,  5,  0, 1,  <<,
 | 
			
		||||
$ 500,  5, 530,  25,           7, 63, 56,  0,  2, 000, 071
 | 
			
		||||
*| 504,       7,       2,  5,  0, 1,  <,
 | 
			
		||||
 | 
			
		||||
$ 500, 30, 565,  50,           7, 63, 56,  0,  2, 000, 000
 | 
			
		||||
$ 570, 30, 635,  50,           7, 63, 56,  0,  2, 000, 000
 | 
			
		||||
 | 
			
		||||
| 10,       55,       2,  5,  0, 1, N<>mero de Hermano,
 | 
			
		||||
$ 150, 53, 300,  72,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,       80,       2,  5,  0, 1, Nombre,
 | 
			
		||||
$ 150, 78, 300,  97,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,      105,       2,  5,  0, 1, Primer Apellido,
 | 
			
		||||
$ 150, 103, 300, 122,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 320,     105,       2,  5,  0, 1, Segundo Apellido,
 | 
			
		||||
$ 480, 103, 630, 122,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,      130,       2,  5,  0, 1, Direcci<63>n,
 | 
			
		||||
$ 150, 128, 390, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 390,      130,       2,  5,  0, 1,  N<>,
 | 
			
		||||
$ 425, 128, 460, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 460,      130,       2,  5,  0, 1,    Piso,
 | 
			
		||||
$ 530, 128, 630, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
| 10,      155,       2,  5,  0, 1, C.P.,
 | 
			
		||||
$  60, 153, 140, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 150,     155,       2,  5,  0, 1, Poblaci<63>n,  
 | 
			
		||||
$ 230, 153, 390, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,     155,       2,  5,  0, 1, Provincia,  
 | 
			
		||||
$ 480, 153, 630, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para enmarcar FN, Ant, R, UP, P
 | 
			
		||||
& 10, 180, 300, 305,           7, 56, 63, 1, 1
 | 
			
		||||
 | 
			
		||||
| 10,      185,       2,  5,  0, 1,  Fecha de Nacimiento,
 | 
			
		||||
$ 170, 183, 290, 202,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      210,       2,  5,  0, 1,  Antig<69>edad,
 | 
			
		||||
$ 170, 208, 290, 227,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      235,       2,  5,  0, 1,  Reserva,  
 | 
			
		||||
$ 271, 233, 290, 252,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      260,       2,  5,  0, 1,  Posici<63>n,
 | 
			
		||||
$ 150, 258, 290, 277,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      285,       2,  5,  0, 1,  Insignia,
 | 
			
		||||
$ 150, 283, 290, 302,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 400,      185,       2,  5,  0, 1, Tel<65>fono 1,
 | 
			
		||||
$ 480, 183, 630, 202,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      210,       2,  5,  0, 1, Tel<65>fono 2,
 | 
			
		||||
$ 480, 208, 630, 227,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para englobar todo lo de abajo
 | 
			
		||||
& 360, 230, 630, 305,           7, 56, 63, 1, 1
 | 
			
		||||
 | 
			
		||||
| 400,      230,       2,  5,  0, 1, <20>Realiza la est. de penitencia?,
 | 
			
		||||
$ 380, 232, 390, 242,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      241,       2,  5,  0, 1, <20>Acogido a cuota familiar?,
 | 
			
		||||
$ 380, 243, 390, 253,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      252,       2,  5,  0, 1, <20>Tiene posibilidad de votar?,
 | 
			
		||||
$ 380, 254, 390, 264,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      263,       2,  5,  0, 1, <20>Recibe notificaciones?,
 | 
			
		||||
$ 380, 265, 390, 275,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      274,       2,  5,  0, 1, <20>Posee tunica Hdad? -->,
 | 
			
		||||
$ 380, 276, 390, 286,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
*Numero de tunica
 | 
			
		||||
$ 580, 268, 625, 288,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
| 400,      285,       2,  5,  0, 1, <20> Cristo ?        <20> Virgen ?,
 | 
			
		||||
$ 380, 287, 390, 297,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
$ 520, 287, 530, 297,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para un comentario
 | 
			
		||||
&  200, 310, 635, 325,           7, 56, 63, 1, 1
 | 
			
		||||
| 10,      310,       2,  5,  0, 1,                           Comentario,
 | 
			
		||||
$  200, 325, 635, 450,          63, 56,  0, 1, 1, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro de Foto
 | 
			
		||||
& 320,   5, 400,  100,           0, 63, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
* Botones Busqueda hacia atras BUSCAR delante
 | 
			
		||||
$ 500, 55, 540,  75,           7, 63, 56,  0,  2, 000, 082
 | 
			
		||||
$ 545, 55, 590,  75,           7, 63, 56,  0,  2, 000, 048
 | 
			
		||||
$ 595, 55, 635,  75,           7, 63, 56,  0,  2, 000, 083
 | 
			
		||||
 | 
			
		||||
* Lo de Registro general de hermanos sive para Imprimi la ficha tambien
 | 
			
		||||
$ 5, 5, 300,  25,           7, 63, 56, 0, 2, 000, 000
 | 
			
		||||
* Papeletas de sitio
 | 
			
		||||
$ 475, 5, 495,  75,           7, 63, 56, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
<EFBFBD>2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro General de Hermanos,
 | 
			
		||||
* Titulos de los botones
 | 
			
		||||
| 477,       5,       2,  5,  1, 1, Papeleta,
 | 
			
		||||
| 609,       7,       2,  5,  0, 1,  >,
 | 
			
		||||
| 574,       7,       2,  5,  0, 1,  >>,
 | 
			
		||||
| 539,       7,       2,  5,  0, 1,  <<,
 | 
			
		||||
| 504,       7,       2,  5,  0, 1,  <,
 | 
			
		||||
| 572,      32,       2,  5,  0, 1, F2 Menu,
 | 
			
		||||
| 504,      57,       2,  5,  0, 1,  <-,
 | 
			
		||||
| 547,      57,       2,  4,  0, 1, BUSCAR,
 | 
			
		||||
| 547,      58,       2,  4,  0, 1, _,
 | 
			
		||||
| 597,      57,       2,  5,  0, 1,   ->,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Menu Principal
 | 
			
		||||
<EFBFBD>10
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 635,  30,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,      120,       0,  1,  0,  0,          Fervorosa e Ilustre Hermandad y Cofradia de Nazarenos de,
 | 
			
		||||
| 5,      160,       0,  1,  0,  0,          Ntro. Padre Jesus de la Oracion en el Huerto de Getsemani,
 | 
			
		||||
| 5,      200,       0,  1,  0,  0,   Maria Santisima del Rosario en sus Misterios Dolorosos y San Juan Bosco,
 | 
			
		||||
 | 
			
		||||
| 6,      121,       0,  1,  0, 63,          Fervorosa e Ilustre Hermandad y Cofradia de Nazarenos de,
 | 
			
		||||
| 6,      161,       0,  1,  0, 63,          Ntro. Padre Jesus de la Oracion en el Huerto de Getsemani,
 | 
			
		||||
| 6,      201,       0,  1,  0, 63,   Maria Santisima del Rosario en sus Misterios Dolorosos y San Juan Bosco,
 | 
			
		||||
 | 
			
		||||
| 5,        7,       2,  6,  0, 1,  Archivo   Hermanos   Hermanas   Listados                Ayuda,
 | 
			
		||||
 | 
			
		||||
<EFBFBD>20
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
<EFBFBD>21
 | 
			
		||||
&  170, 165, 470, 270,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>         Casilla de pregunta ( OPTAR por....  ACEPTAR CANCELAR        <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
<EFBFBD>100
 | 
			
		||||
&  200, 212, 440, 267,       7,  56,  63,  2,  1
 | 
			
		||||
&  205, 217, 435, 262,       7,  63,  56, -2,  1
 | 
			
		||||
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
&  200, 270, 280, 295,       7,  63,  56,  2,  1
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
&  360, 270, 440, 295,       7,  63,  56,  2,  1
 | 
			
		||||
 | 
			
		||||
<EFBFBD>101
 | 
			
		||||
|       200,      274,       2,  5, 0,   63,   Aceptar,
 | 
			
		||||
|       201,      275,       2,  5, 0,    0,   Aceptar,
 | 
			
		||||
 |       200,      274,       2,  5, 0,   14,   A,
 | 
			
		||||
 |       201,      275,       2,  5, 0,    0,   A,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
|       340,      274,       2,  5, 0,   63,     Cancelar,
 | 
			
		||||
|       341,      275,       2,  5, 0,    0,     Cancelar,
 | 
			
		||||
 |       340,      274,       2,  5, 0,   14,     C,
 | 
			
		||||
 |       341,      275,       2,  5, 0,    0,     C,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!2, 2
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
$  204, 274, 276, 291,       7,  56,  63,  -2,  1, 00, 30
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
$  364, 274, 436, 291,       7,  56,  63,  -2,  1, 00, 46
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
** Esto es para cuando se va a ordenar
 | 
			
		||||
 | 
			
		||||
<EFBFBD>3
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
!3, 10
 | 
			
		||||
$  172, 200, 316, 220,       7, 56, 63, 0, 2, 000, 049
 | 
			
		||||
$  172, 222, 316, 242,       7, 56, 63, 0, 2, 000, 024
 | 
			
		||||
$  172, 244, 316, 264,       7, 56, 63, 0, 2, 000, 025
 | 
			
		||||
$  172, 266, 316, 286,       7, 56, 63, 0, 2, 000, 032
 | 
			
		||||
$  172, 288, 316, 308,       7, 56, 63, 0, 2, 000, 048
 | 
			
		||||
 | 
			
		||||
$  324, 200, 468, 220,       7, 56, 63, 0, 2, 000, 047
 | 
			
		||||
$  324, 222, 468, 242,       7, 56, 63, 0, 2, 000, 033
 | 
			
		||||
$  324, 244, 468, 264,       7, 56, 63, 0, 2, 000, 030
 | 
			
		||||
$  324, 266, 468, 286,       7, 56, 63, 0, 2, 000, 023
 | 
			
		||||
$  324, 288, 468, 308,       7, 56, 63, 0, 2, 000, 046
 | 
			
		||||
 | 
			
		||||
<EFBFBD>4
 | 
			
		||||
|  172, 167,       2,  6, 0,   63,  Elija como ordenar:,
 | 
			
		||||
                        
 | 
			
		||||
|  172, 200,       2,  5, 0,   63,  Numero de Hno,
 | 
			
		||||
 |  172, 202,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 222,       2,  5, 0,   63,  Nombre,
 | 
			
		||||
 |  172, 224,       2,  5, 0,    0,   _,
 | 
			
		||||
|  172, 244,       2,  5, 0,   63,  Primer Apellido,
 | 
			
		||||
 |  172, 246,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 266,       2,  5, 0,   63,  Direccion,
 | 
			
		||||
 |  172, 268,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 288,       2,  5, 0,   63,  Poblacion,
 | 
			
		||||
 |  172, 290,       2,  5, 0,    0,    _,
 | 
			
		||||
 | 
			
		||||
|  324, 200,       2,  5, 0,   63,  Provincia,
 | 
			
		||||
 |  324, 202,       2,  5, 0,    0,     _,
 | 
			
		||||
|  324, 222,       2,  5, 0,   63,  Fecha Nacimiento,
 | 
			
		||||
 |  324, 224,       2,  5, 0,    0,  _,
 | 
			
		||||
|  324, 244,       2,  5, 0,   63,  Antiguedad,
 | 
			
		||||
 |  324, 246,       2,  5, 0,    0,  _,
 | 
			
		||||
|  324, 266,       2,  5, 0,   63,  Insignia,
 | 
			
		||||
 |  324, 268,       2,  5, 0,    0,  _,
 | 
			
		||||
|  320, 288,       2,  5, 0,   63,  CANCELAR OPERACION,
 | 
			
		||||
 |  320, 290,       2,  5, 0,    0,  _,
 | 
			
		||||
 | 
			
		||||
<EFBFBD>5
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
|  172, 167,       2,  6, 0,   63,  Reordenando Base...,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>50
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro de Insignias,
 | 
			
		||||
 | 
			
		||||
&  10, 45, 315,  63,        7, 63, 56, 0, 2
 | 
			
		||||
| 15,  45,       2,  6,  0, 1,  Insignias Cristo    Suplemento,
 | 
			
		||||
& 325, 45, 630,  63,        7, 63, 56, 0, 2
 | 
			
		||||
| 340,  45,       2,  6,  0, 1, Insignias Virgen    Suplemento,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
&  10, 65, 315, 450,        63,  0, 56, 0, 2
 | 
			
		||||
& 325, 65, 630, 450,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
*| 15,  70,       2,  6,  0, 1,  MMMMMMMMMMMMMMM,
 | 
			
		||||
*| 15,  90,       2,  6,  0, 1,  MMMMMMMMMMMMMMM,
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>60
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Listado de Hnos:,
 | 
			
		||||
 | 
			
		||||
&  10, 65, 635, 450,        63,  0, 56, 0, 2
 | 
			
		||||
&  10, 45, 635,  63,        7, 63, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
& 500,  5, 540,  25,           7, 63, 56,  0,  2, 000, 082
 | 
			
		||||
& 545,  5, 590,  25,           7, 63, 56,  0,  2, 000, 048
 | 
			
		||||
& 595,  5, 635,  25,           7, 63, 56,  0,  2, 000, 083
 | 
			
		||||
| 504,       7,       2,  5,  0, 1,  <-,
 | 
			
		||||
| 547,       7,       2,  4,  0, 1, Imprimir,
 | 
			
		||||
| 547,       8,       2,  4,  0, 1, _,
 | 
			
		||||
| 597,       7,       2,  5,  0, 1,   ->,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!4, 3
 | 
			
		||||
* Botones Busqueda hacia atras BUSCAR delante
 | 
			
		||||
$ 500,  5, 540,  25,           7, 63, 56,  0,  2, 000, 082
 | 
			
		||||
$ 545,  5, 590,  25,           7, 63, 56,  0,  2, 000, 048
 | 
			
		||||
$ 595,  5, 635,  25,           7, 63, 56,  0,  2, 000, 083
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>70
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Configuraci<63>n Global,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
& 270, 60, 350,  78,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,       60,       2,  6,  0, 1,  Ultimo n<>mero de Hermano:,
 | 
			
		||||
& 270, 80, 350,  98,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,       80,       2,  6,  0, 1,  Ultimo n<>mero de Hermana:,
 | 
			
		||||
& 270, 100, 350, 118,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      100,       2,  6,  0, 1,  Meses a guardar n<> hno/a:,
 | 
			
		||||
 | 
			
		||||
& 380,  95, 630, 125,            7,  63, 56, 0, 2
 | 
			
		||||
| 390,      100,       2,  6,  0, 1, Purgar hno/as eliminados,
 | 
			
		||||
 | 
			
		||||
& 270, 150, 400, 168,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      150,       2,  6,  0, 1,  Imprimir normal (HEX):   ,
 | 
			
		||||
& 270, 170, 400, 188,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      170,       2,  6,  0, 1,  Imprimir comprimido (HEX):,
 | 
			
		||||
& 270, 190, 350, 208,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      190,       2,  6,  0, 1,  Numero de lineas:,
 | 
			
		||||
& 270, 220, 350, 238,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      220,       2,  6,  0, 1,  Cuota base:                          Cuota familiar:,
 | 
			
		||||
& 550, 220, 630, 238,           63,  7, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
& 15, 315, 345, 350,            7, 63, 56, 0, 2
 | 
			
		||||
|  5,      320,       2,  6,  0, 1,   Reinicializar papeletas de sitio,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>11
 | 
			
		||||
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
|  175,      220,       2,  6,  0, 1,   Ficha inicial:,
 | 
			
		||||
&  320, 220, 460, 240,      63, 56,  7, 0, 2
 | 
			
		||||
|  175,      260,       2,  6,  0, 1,   Ficha final:,
 | 
			
		||||
&  320, 260, 460, 280,      63, 56,  7, 0, 2
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								DATOS/BDATOS.OBJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/BDATOS.OBJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANAS.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANAS.BAK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANAS.DBF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANAS.DBF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANAS.DFB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANAS.DFB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										8862
									
								
								DATOS/HERMANAS.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8862
									
								
								DATOS/HERMANAS.TXT
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANOS.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANOS.BAK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANOS.DBF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANOS.DBF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HERMANOS.DFB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HERMANOS.DFB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										13363
									
								
								DATOS/HERMANOS.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13363
									
								
								DATOS/HERMANOS.TXT
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HNAS_BRR.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HNAS_BRR.BAK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HNAS_BRR.DBF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HNAS_BRR.DBF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HNOS_BRR.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HNOS_BRR.BAK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/HNOS_BRR.DBF
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/HNOS_BRR.DBF
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										269
									
								
								DATOS/MBD2DBF.BAK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								DATOS/MBD2DBF.BAK
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,269 @@
 | 
			
		||||
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include "..\herm.h"
 | 
			
		||||
#include "..\..\libs\bdatos\bdatos.hh"
 | 
			
		||||
 | 
			
		||||
HermStruct Hermanos;
 | 
			
		||||
BDatos Dbf;
 | 
			
		||||
void RellenaStructura(FILE *file);
 | 
			
		||||
void obten_linea(FILE *file, char *buf);
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void);
 | 
			
		||||
 | 
			
		||||
void main( void )
 | 
			
		||||
{
 | 
			
		||||
 long registro = 0;
 | 
			
		||||
 FILE *origen;
 | 
			
		||||
 | 
			
		||||
 printf( "\nConvertidor de fichero: PROCESANDO..." );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( (origen = fopen( "hermanas.txt", "r" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  Dbf.AbrirReg( "hermanas.dbf", sizeof( HermStruct ) );
 | 
			
		||||
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
   RellenaStructura(origen);
 | 
			
		||||
   // La estructura ya esta cargada, asi que....
 | 
			
		||||
   Dbf.InsReg( (void *)&Hermanos, Dbf.Registros(), ARRIBA );
 | 
			
		||||
   registro++;
 | 
			
		||||
   gotoxy( 1,1 ); printf( "%ld", registro );
 | 
			
		||||
  }while( !feof(origen) );
 | 
			
		||||
 | 
			
		||||
  Dbf.CerrarReg();
 | 
			
		||||
  fclose( origen );
 | 
			
		||||
 } else
 | 
			
		||||
        printf( "\nError abriendo el origen" );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RellenaStructura(FILE *file)
 | 
			
		||||
{
 | 
			
		||||
 char buffer[250];
 | 
			
		||||
  // este es el orden del archivo:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  PreparaNuevoRegistro();
 | 
			
		||||
 | 
			
		||||
//         Numero
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.NHno = atol( buffer );
 | 
			
		||||
//  printf("\nNumero: %s", buffer );
 | 
			
		||||
 | 
			
		||||
//         Nombre
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Nombre, buffer, 15 );
 | 
			
		||||
  Hermanos.Nombre[16] = '\0';
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Apellido1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido1, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Apellido2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido2, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Direcci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy ( Hermanos.Direccion, buffer, 30 );
 | 
			
		||||
  Hermanos.Direccion[30] = '\0';
 | 
			
		||||
  sprintf( Hermanos.Num, "" );
 | 
			
		||||
  sprintf( Hermanos.Piso,   "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         CP
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.CodP = atol ( buffer );
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Poblaci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Poblacion, buffer, 15 );
 | 
			
		||||
  Hermanos.Poblacion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Provincia
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Provincia, buffer, 15 );
 | 
			
		||||
  Hermanos.Provincia[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono1, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono2, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Antig<69>edad
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.Antig.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.Antig.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.Antig.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
// a<>o-mes-dia
 | 
			
		||||
// sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Fecha de nacimiento
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 // sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.FechaN.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Reserva
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Reserva = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Reserva = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Ultima posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  strncpy( Hermanos.Posicion, buffer, 15 );
 | 
			
		||||
  Hermanos.Posicion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
// printf("\n%s", buffer );
 | 
			
		||||
//         Posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.Insignia = 0;
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Cuota familiar
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Bolet<65>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Notific = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Notific = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Vota
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Sexo
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
// Salto de Linea
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void obten_linea(FILE *file, char *buf)
 | 
			
		||||
{
 | 
			
		||||
 int c;
 | 
			
		||||
 | 
			
		||||
 char *buffer;
 | 
			
		||||
 | 
			
		||||
 buffer = buf;
 | 
			
		||||
 | 
			
		||||
 *buffer = '\0';
 | 
			
		||||
 | 
			
		||||
 // mientras no sea un salto de linea
 | 
			
		||||
 while ( ( c = fgetc(file) ) != '\n' && c != EOF )
 | 
			
		||||
                                     *(buffer++) = (char)c;
 | 
			
		||||
 | 
			
		||||
 *(buffer++) = '\0';
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void)
 | 
			
		||||
{
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Hermanos.NHno             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Nombre,    "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido1, "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido2, "" );
 | 
			
		||||
       strcpy( Hermanos.Direccion, "" );
 | 
			
		||||
       strcpy( Hermanos.Num,       "" );
 | 
			
		||||
       strcpy( Hermanos.Piso,      "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.CodP             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Poblacion, "" );
 | 
			
		||||
       strcpy( Hermanos.Provincia, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.FechaN.da_day    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_mon    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_year   = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Antig.da_day     = 0;
 | 
			
		||||
        Hermanos.Antig.da_mon     = 0;
 | 
			
		||||
        Hermanos.Antig.da_year    = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.Reserva   = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Posicion,  "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Insignia         =  0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Telefono1, "" );
 | 
			
		||||
       strcpy( Hermanos.Telefono2, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.CuotaFam  = 0;
 | 
			
		||||
        Hermanos.Varios.Notific   = 0;
 | 
			
		||||
        Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
        Hermanos.Varios.RealPenit = 0;
 | 
			
		||||
        Hermanos.Varios.TunicaHd  = 0;
 | 
			
		||||
        Hermanos.Varios.CtoVirgen = 0;
 | 
			
		||||
 | 
			
		||||
        // Aqui vaciamos el comentario
 | 
			
		||||
        for ( i=0; i<6; i++ )
 | 
			
		||||
         strcpy( Hermanos.Comentario[i], "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										269
									
								
								DATOS/MBD2DBF.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								DATOS/MBD2DBF.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,269 @@
 | 
			
		||||
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include "..\herm.h"
 | 
			
		||||
#include "..\..\libs\bdatos\bdatos.hh"
 | 
			
		||||
 | 
			
		||||
HermStruct Hermanos;
 | 
			
		||||
BDatos Dbf;
 | 
			
		||||
void RellenaStructura(FILE *file);
 | 
			
		||||
void obten_linea(FILE *file, char *buf);
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void);
 | 
			
		||||
 | 
			
		||||
void main( void )
 | 
			
		||||
{
 | 
			
		||||
 long registro = 0;
 | 
			
		||||
 FILE *origen;
 | 
			
		||||
 | 
			
		||||
 printf( "\nConvertidor de fichero: PROCESANDO..." );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( (origen = fopen( "hermanos.txt", "r" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  Dbf.AbrirReg( "hermanos.dbf", sizeof( HermStruct ) );
 | 
			
		||||
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
   RellenaStructura(origen);
 | 
			
		||||
   // La estructura ya esta cargada, asi que....
 | 
			
		||||
   Dbf.InsReg( (void *)&Hermanos, Dbf.Registros(), ARRIBA );
 | 
			
		||||
   registro++;
 | 
			
		||||
   gotoxy( 1,1 ); printf( "%ld", registro );
 | 
			
		||||
  }while( !feof(origen) );
 | 
			
		||||
 | 
			
		||||
  Dbf.CerrarReg();
 | 
			
		||||
  fclose( origen );
 | 
			
		||||
 } else
 | 
			
		||||
        printf( "\nError abriendo el origen" );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RellenaStructura(FILE *file)
 | 
			
		||||
{
 | 
			
		||||
 char buffer[250];
 | 
			
		||||
  // este es el orden del archivo:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  PreparaNuevoRegistro();
 | 
			
		||||
 | 
			
		||||
//         Numero
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.NHno = atol( buffer );
 | 
			
		||||
//  printf("\nNumero: %s", buffer );
 | 
			
		||||
 | 
			
		||||
//         Nombre
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Nombre, buffer, 15 );
 | 
			
		||||
  Hermanos.Nombre[16] = '\0';
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Apellido1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido1, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Apellido2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido2, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Direcci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy ( Hermanos.Direccion, buffer, 30 );
 | 
			
		||||
  Hermanos.Direccion[30] = '\0';
 | 
			
		||||
  sprintf( Hermanos.Num, "" );
 | 
			
		||||
  sprintf( Hermanos.Piso,   "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         CP
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.CodP = atol ( buffer );
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Poblaci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Poblacion, buffer, 15 );
 | 
			
		||||
  Hermanos.Poblacion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Provincia
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Provincia, buffer, 15 );
 | 
			
		||||
  Hermanos.Provincia[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono1, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono2, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Antig<69>edad
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.Antig.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.Antig.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.Antig.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
// a<>o-mes-dia
 | 
			
		||||
// sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Fecha de nacimiento
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 // sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.FechaN.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Reserva
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Reserva = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Reserva = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Ultima posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  strncpy( Hermanos.Posicion, buffer, 15 );
 | 
			
		||||
  Hermanos.Posicion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
// printf("\n%s", buffer );
 | 
			
		||||
//         Posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.Insignia = 0;
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Cuota familiar
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Bolet<65>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Notific = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Notific = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Vota
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Sexo
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
// Salto de Linea
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void obten_linea(FILE *file, char *buf)
 | 
			
		||||
{
 | 
			
		||||
 int c;
 | 
			
		||||
 | 
			
		||||
 char *buffer;
 | 
			
		||||
 | 
			
		||||
 buffer = buf;
 | 
			
		||||
 | 
			
		||||
 *buffer = '\0';
 | 
			
		||||
 | 
			
		||||
 // mientras no sea un salto de linea
 | 
			
		||||
 while ( ( c = fgetc(file) ) != '\n' && c != EOF )
 | 
			
		||||
                                     *(buffer++) = (char)c;
 | 
			
		||||
 | 
			
		||||
 *(buffer++) = '\0';
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void)
 | 
			
		||||
{
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Hermanos.NHno             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Nombre,    "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido1, "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido2, "" );
 | 
			
		||||
       strcpy( Hermanos.Direccion, "" );
 | 
			
		||||
       strcpy( Hermanos.Num,       "" );
 | 
			
		||||
       strcpy( Hermanos.Piso,      "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.CodP             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Poblacion, "" );
 | 
			
		||||
       strcpy( Hermanos.Provincia, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.FechaN.da_day    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_mon    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_year   = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Antig.da_day     = 0;
 | 
			
		||||
        Hermanos.Antig.da_mon     = 0;
 | 
			
		||||
        Hermanos.Antig.da_year    = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.Reserva   = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Posicion,  "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Insignia         =  0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Telefono1, "" );
 | 
			
		||||
       strcpy( Hermanos.Telefono2, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.CuotaFam  = 0;
 | 
			
		||||
        Hermanos.Varios.Notific   = 0;
 | 
			
		||||
        Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
        Hermanos.Varios.RealPenit = 0;
 | 
			
		||||
        Hermanos.Varios.TunicaHd  = 0;
 | 
			
		||||
        Hermanos.Varios.CtoVirgen = 0;
 | 
			
		||||
 | 
			
		||||
        // Aqui vaciamos el comentario
 | 
			
		||||
        for ( i=0; i<6; i++ )
 | 
			
		||||
         strcpy( Hermanos.Comentario[i], "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										269
									
								
								DATOS/MBD2DBF.DFB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										269
									
								
								DATOS/MBD2DBF.DFB
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,269 @@
 | 
			
		||||
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include "..\herm.h"
 | 
			
		||||
#include "..\..\libs\bdatos\bdatos.hh"
 | 
			
		||||
 | 
			
		||||
HermStruct Hermanos;
 | 
			
		||||
BDatos Dbf;
 | 
			
		||||
void RellenaStructura(FILE *file);
 | 
			
		||||
void obten_linea(FILE *file, char *buf);
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void);
 | 
			
		||||
 | 
			
		||||
void main( void )
 | 
			
		||||
{
 | 
			
		||||
 long registro = 0;
 | 
			
		||||
 FILE *origen;
 | 
			
		||||
 | 
			
		||||
 printf( "\nConvertidor de fichero: PROCESANDO..." );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( (origen = fopen( "hermanas.txt", "r" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  Dbf.AbrirReg( "hermanas.dbf", sizeof( HermStruct ) );
 | 
			
		||||
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
   RellenaStructura(origen);
 | 
			
		||||
   // La estructura ya esta cargada, asi que....
 | 
			
		||||
   Dbf.InsReg( (void *)&Hermanos, Dbf.Registros(), ARRIBA );
 | 
			
		||||
   registro++;
 | 
			
		||||
   gotoxy( 1,1 ); printf( "%ld", registro );
 | 
			
		||||
  }while( !feof(origen) );
 | 
			
		||||
 | 
			
		||||
  Dbf.CerrarReg();
 | 
			
		||||
  fclose( origen );
 | 
			
		||||
 } else
 | 
			
		||||
        printf( "\nError abriendo el origen" );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void RellenaStructura(FILE *file)
 | 
			
		||||
{
 | 
			
		||||
 char buffer[250];
 | 
			
		||||
  // este es el orden del archivo:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  PreparaNuevoRegistro();
 | 
			
		||||
 | 
			
		||||
//         Numero
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.NHno = atol( buffer );
 | 
			
		||||
//  printf("\nNumero: %s", buffer );
 | 
			
		||||
 | 
			
		||||
//         Nombre
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Nombre, buffer, 15 );
 | 
			
		||||
  Hermanos.Nombre[16] = '\0';
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Apellido1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido1, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Apellido2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Apellido2, buffer, 15 );
 | 
			
		||||
  Hermanos.Apellido2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Direcci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy ( Hermanos.Direccion, buffer, 30 );
 | 
			
		||||
  Hermanos.Direccion[30] = '\0';
 | 
			
		||||
  sprintf( Hermanos.Num, "" );
 | 
			
		||||
  sprintf( Hermanos.Piso,   "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         CP
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.CodP = atol ( buffer );
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Poblaci<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Poblacion, buffer, 15 );
 | 
			
		||||
  Hermanos.Poblacion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Provincia
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Provincia, buffer, 15 );
 | 
			
		||||
  Hermanos.Provincia[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono1
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono1, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono1[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Telefono2
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  buffer[0] = toupper(buffer[0]);
 | 
			
		||||
  strncpy( Hermanos.Telefono2, buffer, 15 );
 | 
			
		||||
  Hermanos.Telefono2[16] = '\0';
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Antig<69>edad
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.Antig.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.Antig.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.Antig.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
// a<>o-mes-dia
 | 
			
		||||
// sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Fecha de nacimiento
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 // sprintf( Hermanos.Nombre, "%15s", buffer );
 | 
			
		||||
  if ( buffer[0] != '0' )
 | 
			
		||||
  {
 | 
			
		||||
   Hermanos.FechaN.da_year = (buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_mon  = (buffer[5]-'0')*10 + (buffer[6]-'0');
 | 
			
		||||
   Hermanos.FechaN.da_day  = (buffer[8]-'0')*10 + (buffer[9]-'0');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//         Reserva
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Reserva = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Reserva = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Ultima posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  strncpy( Hermanos.Posicion, buffer, 15 );
 | 
			
		||||
  Hermanos.Posicion[16] = '\0';
 | 
			
		||||
 | 
			
		||||
// printf("\n%s", buffer );
 | 
			
		||||
//         Posici<63>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  Hermanos.Insignia = 0;
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Cuota familiar
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.CuotaFam = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Bolet<65>n
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.Notific = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.Notific = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Vota
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
  if ( buffer[0] == '1' )
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 1;
 | 
			
		||||
  else
 | 
			
		||||
    Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  printf("\n%s", buffer );
 | 
			
		||||
//         Sexo
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
// Salto de Linea
 | 
			
		||||
  obten_linea( file, buffer );
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void obten_linea(FILE *file, char *buf)
 | 
			
		||||
{
 | 
			
		||||
 int c;
 | 
			
		||||
 | 
			
		||||
 char *buffer;
 | 
			
		||||
 | 
			
		||||
 buffer = buf;
 | 
			
		||||
 | 
			
		||||
 *buffer = '\0';
 | 
			
		||||
 | 
			
		||||
 // mientras no sea un salto de linea
 | 
			
		||||
 while ( ( c = fgetc(file) ) != '\n' && c != EOF )
 | 
			
		||||
                                     *(buffer++) = (char)c;
 | 
			
		||||
 | 
			
		||||
 *(buffer++) = '\0';
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void PreparaNuevoRegistro(void)
 | 
			
		||||
{
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        Hermanos.NHno             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Nombre,    "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido1, "" );
 | 
			
		||||
       strcpy( Hermanos.Apellido2, "" );
 | 
			
		||||
       strcpy( Hermanos.Direccion, "" );
 | 
			
		||||
       strcpy( Hermanos.Num,       "" );
 | 
			
		||||
       strcpy( Hermanos.Piso,      "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.CodP             = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Poblacion, "" );
 | 
			
		||||
       strcpy( Hermanos.Provincia, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.FechaN.da_day    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_mon    = 0;
 | 
			
		||||
        Hermanos.FechaN.da_year   = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Antig.da_day     = 0;
 | 
			
		||||
        Hermanos.Antig.da_mon     = 0;
 | 
			
		||||
        Hermanos.Antig.da_year    = 0;
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.Reserva   = 0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Posicion,  "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Insignia         =  0;
 | 
			
		||||
 | 
			
		||||
       strcpy( Hermanos.Telefono1, "" );
 | 
			
		||||
       strcpy( Hermanos.Telefono2, "" );
 | 
			
		||||
 | 
			
		||||
        Hermanos.Varios.CuotaFam  = 0;
 | 
			
		||||
        Hermanos.Varios.Notific   = 0;
 | 
			
		||||
        Hermanos.Varios.PuedVotar = 0;
 | 
			
		||||
        Hermanos.Varios.RealPenit = 0;
 | 
			
		||||
        Hermanos.Varios.TunicaHd  = 0;
 | 
			
		||||
        Hermanos.Varios.CtoVirgen = 0;
 | 
			
		||||
 | 
			
		||||
        // Aqui vaciamos el comentario
 | 
			
		||||
        for ( i=0; i<6; i++ )
 | 
			
		||||
         strcpy( Hermanos.Comentario[i], "" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								DATOS/MBD2DBF.OBJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/MBD2DBF.OBJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.DSK
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.DSK
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.EXE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.EXE
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.PRJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/MDB2DBF.PRJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE1.MDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE1.MDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE2.MDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE2.MDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE3.MDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/BASE3.MDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										19
									
								
								DATOS/TODOS/CAMPOS.TIA
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								DATOS/TODOS/CAMPOS.TIA
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
Numero
 | 
			
		||||
Nombre
 | 
			
		||||
Apellido1
 | 
			
		||||
Apellido2
 | 
			
		||||
Direcci<EFBFBD>n
 | 
			
		||||
CP
 | 
			
		||||
Poblaci<EFBFBD>n
 | 
			
		||||
Provincia
 | 
			
		||||
Telefono1
 | 
			
		||||
Telefono2
 | 
			
		||||
Antig<EFBFBD>edad
 | 
			
		||||
Fecha de nacimiento
 | 
			
		||||
Reserva
 | 
			
		||||
Ultima posici<63>n
 | 
			
		||||
Posici<EFBFBD>n
 | 
			
		||||
Cuota familiar
 | 
			
		||||
Bolet<EFBFBD>n
 | 
			
		||||
Vota
 | 
			
		||||
Sexo
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/CSLTA1.QRY
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/CSLTA1.QRY
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.DOC
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.DOC
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.JD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.JD
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.LDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.LDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.MDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANAS.MDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										8862
									
								
								DATOS/TODOS/HERMANAS.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8862
									
								
								DATOS/TODOS/HERMANAS.TXT
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.DOC
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.DOC
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.LDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.LDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.MDB
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								DATOS/TODOS/HERMANOS.MDB
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										13363
									
								
								DATOS/TODOS/HERMANOS.TXT
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13363
									
								
								DATOS/TODOS/HERMANOS.TXT
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								FOTOS/HO-00001.PCX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								FOTOS/HO-00001.PCX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										133
									
								
								HERM.H
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								HERM.H
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,133 @@
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
 | 
			
		||||
#define BLANCO EGA_WHITE
 | 
			
		||||
#define ENCUADRE       3
 | 
			
		||||
#define SEC_OPTAR      5
 | 
			
		||||
 | 
			
		||||
#define VOTANTES             1
 | 
			
		||||
#define ACOGIDOS_CUOT        2
 | 
			
		||||
#define RECIBE_NOTIFIC       3
 | 
			
		||||
#define PAPELETAS_SITIO      4
 | 
			
		||||
#define GRAL_HERM_RAP        5
 | 
			
		||||
#define GRAL_HERMANOS        6
 | 
			
		||||
#define TUNICA_HDAD          7
 | 
			
		||||
#define FACTURAS             8
 | 
			
		||||
#define ETIQUETAS            9
 | 
			
		||||
 | 
			
		||||
#define ALTAS     1
 | 
			
		||||
#define BAJAS     2
 | 
			
		||||
#define CONSULTAS 3
 | 
			
		||||
#define REORDENAR 4
 | 
			
		||||
 | 
			
		||||
#define HERMANOS         0
 | 
			
		||||
#define HERMANAS         1
 | 
			
		||||
 | 
			
		||||
#define NORMAL           1
 | 
			
		||||
#define INTENSO          0
 | 
			
		||||
 | 
			
		||||
#define BLANCO     EGA_WHITE
 | 
			
		||||
#define NEGRO                  0
 | 
			
		||||
#define ROJO       EGA_RED
 | 
			
		||||
#define AZUL       EGA_BLUE
 | 
			
		||||
#define GRIS_CLARO EGA_LIGHTGRAY
 | 
			
		||||
 | 
			
		||||
        // Acceso a las funciones internas de MAKE_BOTON
 | 
			
		||||
	struct Make_Boton {
 | 
			
		||||
	       /*	unsigned */         int Up,  Left, Down, Right;
 | 
			
		||||
		unsigned char Cdf, Cb1,  Cb2;
 | 
			
		||||
		unsigned char Ab,  Pb;
 | 
			
		||||
		unsigned char Isc, Sc;
 | 
			
		||||
	};
 | 
			
		||||
extern	struct Make_Boton far *Botones;			 // Puntero a estructura
 | 
			
		||||
 | 
			
		||||
extern	int Secuencias,  *n_Botones_Secuencia;
 | 
			
		||||
extern	void Imprime_Boton(int D_Bord, struct Make_Boton Bot_Imp);
 | 
			
		||||
 | 
			
		||||
void Error(char *cError);
 | 
			
		||||
 | 
			
		||||
struct VARIOS
 | 
			
		||||
{
 | 
			
		||||
  unsigned int CuotaFam : 1;             // Acogido a cuota familiar
 | 
			
		||||
  unsigned int Notific  : 1;             // Recibe notificaciones
 | 
			
		||||
  unsigned int PuedVotar: 1;             // Puede Votar
 | 
			
		||||
  unsigned int TunicaHd : 1;             // Posse Tunica de Hermandad
 | 
			
		||||
  unsigned int RealPenit: 1;             // Realizo est. de penitencia
 | 
			
		||||
  unsigned int CtoVirgen: 1;             // Cristo o Virgen
 | 
			
		||||
  unsigned int Reserva  : 1;             // Futura ampliacion
 | 
			
		||||
  unsigned int FA2      : 1;             // Futura ampliaci<63>n
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 long NHno;             // N<> de hermano
 | 
			
		||||
 char Nombre[15+1];             // Nombre               15 dig.
 | 
			
		||||
 char Apellido1[15+1];          // 1er Apellido         15 dig.
 | 
			
		||||
 char Apellido2[15+1];          // 2er Apellido         15 dig.
 | 
			
		||||
 char Direccion[29+1];          // Direccion            20 dig.
 | 
			
		||||
 char Num[3+1];                 // N<>                    3 dig.
 | 
			
		||||
 char Piso[5+1];                // Piso/Letra            5 dig.
 | 
			
		||||
 long CodP;                     // C.P.
 | 
			
		||||
 char Poblacion[15+1];          // Poblacion            15 dig.
 | 
			
		||||
 char Provincia[15+1];          // Provincia            15 dig.
 | 
			
		||||
 char Telefono1[15+1];          // Telefono 1           15 dig.
 | 
			
		||||
 char Telefono2[15+1];          // Telefono 2           15 dig.
 | 
			
		||||
 | 
			
		||||
 struct date FechaN;            // Fecha de Nacimiento
 | 
			
		||||
 struct date Antig;             // Antig<69>edad
 | 
			
		||||
 | 
			
		||||
 char Posicion[15+1];           // Posici<63>n
 | 
			
		||||
 char Insignia;                 // Insignia
 | 
			
		||||
 | 
			
		||||
 long NTunica;                  // n<> tunica de hermandad
 | 
			
		||||
 | 
			
		||||
 char Comentario[6][50];
 | 
			
		||||
 | 
			
		||||
 struct VARIOS Varios;          // Campos varios
 | 
			
		||||
 | 
			
		||||
} HermStruct;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Estructura donde estan contenidas las insignias
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 char NInsignia[29+1];
 | 
			
		||||
 long Suplemento;
 | 
			
		||||
} INSIGNIAS;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Esta es la structura donde se guarda la configuraci<63>n del programa
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
 char config_color;             // Configura que paleta usa
 | 
			
		||||
 | 
			
		||||
 char item_ordenado[2];         // item por el que esta ordenado
 | 
			
		||||
 | 
			
		||||
 int TiempoBorrados;            // Tiempo que hay que mantener los items, borrados
 | 
			
		||||
 long NHnoHna[2];                // Numero de Hermanos, Hermanas
 | 
			
		||||
 int LineasImpresion;
 | 
			
		||||
 | 
			
		||||
 INSIGNIAS Insignia[40];        // 20 Para Virgen y 20 Cristo
 | 
			
		||||
 | 
			
		||||
 char ImpNormal[20];
 | 
			
		||||
 char ImpCompr[20];
 | 
			
		||||
 | 
			
		||||
 long CuotaBaseFam[2];
 | 
			
		||||
 int MesVotacion;
 | 
			
		||||
 | 
			
		||||
 char HoraSalida[10];
 | 
			
		||||
 | 
			
		||||
 char FA[100];
 | 
			
		||||
} CONFIG;
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  long NHerm;
 | 
			
		||||
  struct date FechaBorrado;
 | 
			
		||||
} HERMBORRADOS;
 | 
			
		||||
 | 
			
		||||
int Optar( int optar, ... );
 | 
			
		||||
int InputCadenaG_T5(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1);
 | 
			
		||||
 | 
			
		||||
int Comprueba_Impresora(void);
 | 
			
		||||
int file_exists(char *filename);
 | 
			
		||||
							
								
								
									
										408
									
								
								HERM.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										408
									
								
								HERM.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,408 @@
 | 
			
		||||
** Codigo fuente para MAKE_BOTON
 | 
			
		||||
**
 | 
			
		||||
** Make BOTON es un programa realizado por Jos<6F> David Guill<6C>n
 | 
			
		||||
**
 | 
			
		||||
** Enlazar al programa principal con MB2CPP,  y compilar a OBJ para Linkar
 | 
			
		||||
**
 | 
			
		||||
**
 | 
			
		||||
** MAKE_BOTON es un producto de JD. -->>> 5.000 Libreria exelente para
 | 
			
		||||
**                                              tratamiento de botones y grf.
 | 
			
		||||
** ONDA_GRN  es un producto de JD. --->>> 5.000 Le gustaria representar ondas
 | 
			
		||||
**                                              sonoras con facilidad: ONDA_GRN        
 | 
			
		||||
**                                              UTILIZADO EN <20><><EFBFBD> FREC_OSC !!!      
 | 
			
		||||
**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*  ATENCION !!! 
 | 
			
		||||
*               ALTERAR ESTE FICHERO, CAUSARA EL MALFUNCIONAMIENTO DEL
 | 
			
		||||
*               PROGRAMA DE APOYO... ( ERRORES NO DOCUMENTADOS )
 | 
			
		||||
*
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
 | 
			
		||||
#5
 | 
			
		||||
 | 
			
		||||
!1, 37
 | 
			
		||||
 | 
			
		||||
<EFBFBD>1
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro General de Hermanos,
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$ 605,  5, 635,  25,           7, 63, 56,  0,  2, 000, 079 *  >
 | 
			
		||||
$ 570,  5, 600,  25,           7, 63, 56,  0,  2, 000, 081 * >>
 | 
			
		||||
$ 535,  5, 565,  25,           7, 63, 56,  0,  2, 000, 073 * <<
 | 
			
		||||
$ 500,  5, 530,  25,           7, 63, 56,  0,  2, 000, 071 * <
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$ 500, 30, 565,  50,           7, 63, 56,  0,  2, 000, 000
 | 
			
		||||
$ 570, 30, 635,  50,           7, 63, 56,  0,  2, 000, 060
 | 
			
		||||
 | 
			
		||||
| 10,       55,       2,  5,  0, 1, N<>mero de Hermano,
 | 
			
		||||
$ 150, 53, 300,  72,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,       80,       2,  5,  0, 1, Nombre,
 | 
			
		||||
$ 150, 78, 300,  97,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,      105,       2,  5,  0, 1, Primer Apellido,
 | 
			
		||||
$ 150, 103, 300, 122,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 320,     105,       2,  5,  0, 1, Segundo Apellido,
 | 
			
		||||
$ 480, 103, 630, 122,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 10,      130,       2,  5,  0, 1, Direcci<63>n,
 | 
			
		||||
$ 150, 128, 390, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 390,      130,       2,  5,  0, 1,  N<>,
 | 
			
		||||
$ 425, 128, 460, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 460,      130,       2,  5,  0, 1,    Piso,
 | 
			
		||||
$ 530, 128, 630, 147,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
| 10,      155,       2,  5,  0, 1, C.P.,
 | 
			
		||||
$  60, 153, 140, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 150,     155,       2,  5,  0, 1, Poblaci<63>n,  
 | 
			
		||||
$ 230, 153, 390, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,     155,       2,  5,  0, 1, Provincia,  
 | 
			
		||||
$ 480, 153, 630, 172,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para enmarcar FN, Ant, R, UP, P
 | 
			
		||||
& 10, 180, 300, 305,           7, 56, 63, 1, 1
 | 
			
		||||
 | 
			
		||||
| 10,      185,       2,  5,  0, 1,  Fecha de Nacimiento,
 | 
			
		||||
$ 170, 183, 290, 202,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      210,       2,  5,  0, 1,  Antig<69>edad,
 | 
			
		||||
$ 170, 208, 290, 227,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      235,       2,  5,  0, 1,  Reserva,  
 | 
			
		||||
$ 271, 233, 290, 252,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      260,       2,  5,  0, 1,  Posici<63>n,
 | 
			
		||||
$ 150, 258, 290, 277,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
| 10,      285,       2,  5,  0, 1,  Insignia,
 | 
			
		||||
$ 150, 283, 290, 302,          63, 56,  0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 400,      185,       2,  5,  0, 1, Tel<65>fono 1,
 | 
			
		||||
$ 480, 183, 630, 202,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      210,       2,  5,  0, 1, Tel<65>fono 2,
 | 
			
		||||
$ 480, 208, 630, 227,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para englobar todo lo de abajo
 | 
			
		||||
& 360, 230, 630, 305,           7, 56, 63, 1, 1
 | 
			
		||||
 | 
			
		||||
| 400,      230,       2,  5,  0, 1, <20>Realiza la est. de penitencia?,
 | 
			
		||||
$ 380, 232, 390, 242,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      241,       2,  5,  0, 1, <20>Acogido a cuota familiar?,
 | 
			
		||||
$ 380, 243, 390, 253,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      252,       2,  5,  0, 1, <20>Tiene posibilidad de votar?,
 | 
			
		||||
$ 380, 254, 390, 264,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      263,       2,  5,  0, 1, <20>Recibe notificaciones?,
 | 
			
		||||
$ 380, 265, 390, 275,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
| 400,      274,       2,  5,  0, 1, <20>Posee tunica Hdad? -->,
 | 
			
		||||
$ 380, 276, 390, 286,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
*Numero de tunica
 | 
			
		||||
$ 580, 268, 625, 288,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
| 400,      285,       2,  5,  0, 1, <20> Cristo ?        <20> Virgen ?,
 | 
			
		||||
$ 380, 287, 390, 297,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
$ 520, 287, 530, 297,          63,  56, 0, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro para un comentario
 | 
			
		||||
&  200, 310, 635, 325,           7, 56, 63, 1, 1
 | 
			
		||||
| 10,      310,       2,  5,  0, 1,                           Comentario,
 | 
			
		||||
$  200, 325, 635, 450,          63, 56,  0, 1, 1, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cuadro de Foto
 | 
			
		||||
& 320,   5, 400,  100,           0, 63, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
* Botones Busqueda hacia atras BUSCAR delante
 | 
			
		||||
$ 500, 55, 540,  75,           7, 63, 56,  0,  2, 000,  82
 | 
			
		||||
$ 545, 55, 590,  75,           7, 63, 56,  0,  2, 000,  48
 | 
			
		||||
$ 595, 55, 635,  75,           7, 63, 56,  0,  2, 000,  83
 | 
			
		||||
 | 
			
		||||
* Lo de Registro general de hermanos sive para Imprimi la ficha tambien
 | 
			
		||||
$ 5, 5, 300,  25,           7, 63, 56, 0, 2, 000, 000
 | 
			
		||||
* Papeletas de sitio
 | 
			
		||||
$ 475, 5, 495,  75,           7, 63, 56, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
<EFBFBD>2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro General de Hermanos,
 | 
			
		||||
* Titulos de los botones
 | 
			
		||||
| 477,       5,       2,  5,  1, 1, Papeleta,
 | 
			
		||||
| 609,       7,       2,  5,  0, 1,  >,
 | 
			
		||||
| 574,       7,       2,  5,  0, 1,  >>,
 | 
			
		||||
| 539,       7,       2,  5,  0, 1,  <<,
 | 
			
		||||
| 504,       7,       2,  5,  0, 1,  <,
 | 
			
		||||
| 572,      32,       2,  5,  0, 1, F2 Menu,
 | 
			
		||||
| 504,      57,       2,  5,  0, 1,  <-,
 | 
			
		||||
| 547,      57,       2,  4,  0, 1, BUSCAR,
 | 
			
		||||
| 547,      58,       2,  4,  0, 1, _,
 | 
			
		||||
| 597,      57,       2,  5,  0, 1,   ->,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Menu Principal
 | 
			
		||||
<EFBFBD>10
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 635,  30,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,      120,       0,  1,  0,  0,          Fervorosa e Ilustre Hermandad y Cofradia de Nazarenos de,
 | 
			
		||||
| 5,      160,       0,  1,  0,  0,          Ntro. Padre Jesus de la Oracion en el Huerto de Getsemani,
 | 
			
		||||
| 5,      200,       0,  1,  0,  0,   Maria Santisima del Rosario en sus Misterios Dolorosos y San Juan Bosco,
 | 
			
		||||
 | 
			
		||||
| 6,      121,       0,  1,  0, 63,          Fervorosa e Ilustre Hermandad y Cofradia de Nazarenos de,
 | 
			
		||||
| 6,      161,       0,  1,  0, 63,          Ntro. Padre Jesus de la Oracion en el Huerto de Getsemani,
 | 
			
		||||
| 6,      201,       0,  1,  0, 63,   Maria Santisima del Rosario en sus Misterios Dolorosos y San Juan Bosco,
 | 
			
		||||
 | 
			
		||||
| 5,        7,       2,  6,  0, 1,  Archivo   Hermanos   Hermanas   Listados                Ayuda,
 | 
			
		||||
 | 
			
		||||
<EFBFBD>20
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
<EFBFBD>21
 | 
			
		||||
&  170, 165, 470, 270,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>         Casilla de pregunta ( OPTAR por....  ACEPTAR CANCELAR        <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
<EFBFBD>100
 | 
			
		||||
&  200, 212, 440, 267,       7,  56,  63,  2,  1
 | 
			
		||||
&  205, 217, 435, 262,       7,  63,  56, -2,  1
 | 
			
		||||
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
&  200, 270, 280, 295,       7,  63,  56,  2,  1
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
&  360, 270, 440, 295,       7,  63,  56,  2,  1
 | 
			
		||||
 | 
			
		||||
<EFBFBD>101
 | 
			
		||||
|       200,      274,       2,  5, 0,   63,   Aceptar,
 | 
			
		||||
|       201,      275,       2,  5, 0,    0,   Aceptar,
 | 
			
		||||
 |       200,      274,       2,  5, 0,   14,   A,
 | 
			
		||||
 |       201,      275,       2,  5, 0,    0,   A,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
|       340,      274,       2,  5, 0,   63,     Cancelar,
 | 
			
		||||
|       341,      275,       2,  5, 0,    0,     Cancelar,
 | 
			
		||||
 |       340,      274,       2,  5, 0,   14,     C,
 | 
			
		||||
 |       341,      275,       2,  5, 0,    0,     C,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!2, 2
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
$  204, 274, 276, 291,       7,  56,  63,  2,  1, 00, 30
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
$  364, 274, 436, 291,       7,  56,  63,  2,  1, 00, 46
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
** Esto es para cuando se va a ordenar
 | 
			
		||||
 | 
			
		||||
<EFBFBD>3
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
!3, 10
 | 
			
		||||
$  172, 200, 316, 220,       7, 56, 63, 0, 2, 000,  49
 | 
			
		||||
$  172, 222, 316, 242,       7, 56, 63, 0, 2, 000,  24
 | 
			
		||||
$  172, 244, 316, 264,       7, 56, 63, 0, 2, 000,  25
 | 
			
		||||
$  172, 266, 316, 286,       7, 56, 63, 0, 2, 000,  32
 | 
			
		||||
$  172, 288, 316, 308,       7, 56, 63, 0, 2, 000,  48
 | 
			
		||||
 | 
			
		||||
$  324, 200, 468, 220,       7, 56, 63, 0, 2, 000,  47
 | 
			
		||||
$  324, 222, 468, 242,       7, 56, 63, 0, 2, 000,  33
 | 
			
		||||
$  324, 244, 468, 264,       7, 56, 63, 0, 2, 000,  30
 | 
			
		||||
$  324, 266, 468, 286,       7, 56, 63, 0, 2, 000,  23
 | 
			
		||||
$  324, 288, 468, 308,       7, 56, 63, 0, 2, 000,  46
 | 
			
		||||
 | 
			
		||||
<EFBFBD>4
 | 
			
		||||
|  172, 167,       2,  6, 0,   63,  Elija como ordenar:,
 | 
			
		||||
                        
 | 
			
		||||
|  172, 200,       2,  5, 0,   63,  Numero de Hno,
 | 
			
		||||
 |  172, 202,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 222,       2,  5, 0,   63,  Nombre,
 | 
			
		||||
 |  172, 224,       2,  5, 0,    0,   _,
 | 
			
		||||
|  172, 244,       2,  5, 0,   63,  Primer Apellido,
 | 
			
		||||
 |  172, 246,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 266,       2,  5, 0,   63,  Direccion,
 | 
			
		||||
 |  172, 268,       2,  5, 0,    0,  _,
 | 
			
		||||
|  172, 288,       2,  5, 0,   63,  Poblacion,
 | 
			
		||||
 |  172, 290,       2,  5, 0,    0,    _,
 | 
			
		||||
 | 
			
		||||
|  324, 200,       2,  5, 0,   63,  Provincia,
 | 
			
		||||
 |  324, 202,       2,  5, 0,    0,     _,
 | 
			
		||||
|  324, 222,       2,  5, 0,   63,  Fecha Nacimiento,
 | 
			
		||||
 |  324, 224,       2,  5, 0,    0,  _,
 | 
			
		||||
|  324, 244,       2,  5, 0,   63,  Antiguedad,
 | 
			
		||||
 |  324, 246,       2,  5, 0,    0,  _,
 | 
			
		||||
|  324, 266,       2,  5, 0,   63,  Insignia,
 | 
			
		||||
 |  324, 268,       2,  5, 0,    0,  _,
 | 
			
		||||
|  320, 288,       2,  5, 0,   63,  CANCELAR OPERACION,
 | 
			
		||||
 |  320, 290,       2,  5, 0,    0,  _,
 | 
			
		||||
 | 
			
		||||
<EFBFBD>5
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
|  172, 167,       2,  6, 0,   63,  Reordenando Base...,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>50
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Registro de Insignias,
 | 
			
		||||
 | 
			
		||||
&  10, 45, 315,  63,        7, 63, 56, 0, 2
 | 
			
		||||
| 15,  45,       2,  6,  0, 1,  Insignias Cristo    Suplemento,
 | 
			
		||||
& 325, 45, 630,  63,        7, 63, 56, 0, 2
 | 
			
		||||
| 340,  45,       2,  6,  0, 1, Insignias Virgen    Suplemento,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
&  10, 65, 315, 450,        63,  0, 56, 0, 2
 | 
			
		||||
& 325, 65, 630, 450,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
*| 15,  70,       2,  6,  0, 1,  MMMMMMMMMMMMMMM,
 | 
			
		||||
*| 15,  90,       2,  6,  0, 1,  MMMMMMMMMMMMMMM,
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>60
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Listado de Hnos:,
 | 
			
		||||
 | 
			
		||||
&  10, 65, 635, 450,        63,  0, 56, 0, 2
 | 
			
		||||
&  10, 45, 635,  63,        7, 63, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
& 500,  5, 540,  25,           7, 63, 56,  0,  2
 | 
			
		||||
& 545,  5, 590,  25,           7, 63, 56,  0,  2
 | 
			
		||||
& 595,  5, 635,  25,           7, 63, 56,  0,  2
 | 
			
		||||
| 504,       7,       2,  5,  0, 1,  <-,
 | 
			
		||||
| 547,       7,       2,  4,  0, 1, Imprimir,
 | 
			
		||||
| 547,       8,       2,  4,  0, 1, _,
 | 
			
		||||
| 597,       7,       2,  5,  0, 1,   ->,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!4, 3
 | 
			
		||||
* Botones Busqueda hacia atras BUSCAR delante
 | 
			
		||||
$ 500,  5, 540,  25,           7, 63, 56,  0,  2, 000,  75
 | 
			
		||||
$ 545,  5, 590,  25,           7, 63, 56,  0,  2, 000,  23
 | 
			
		||||
$ 595,  5, 635,  25,           7, 63, 56,  0,  2, 000,  77
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>70
 | 
			
		||||
* Fondo Total
 | 
			
		||||
& 0, 0, 639, 479,           7, 56, 63, 0, 2
 | 
			
		||||
* Cuadro de titulo
 | 
			
		||||
& 5, 5, 300,  25,           7, 63, 56, 0, 2
 | 
			
		||||
| 5,        5,       2,  6,  0, 1,  Configuraci<63>n Global,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
& 270, 60, 350,  78,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,       60,       2,  6,  0, 1,  Ultimo n<>mero de Hermano:,
 | 
			
		||||
& 270, 80, 350,  98,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,       80,       2,  6,  0, 1,  Ultimo n<>mero de Hermana:,
 | 
			
		||||
& 270, 100, 350, 118,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      100,       2,  6,  0, 1,  Meses a guardar n<> hno/a:,
 | 
			
		||||
 | 
			
		||||
& 380,  95, 630, 125,            7,  63, 56, 0, 2
 | 
			
		||||
| 390,      100,       2,  6,  0, 1, Purgar hno/as eliminados,
 | 
			
		||||
 | 
			
		||||
& 270, 150, 400, 168,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      150,       2,  6,  0, 1,  Imprimir normal (HEX):   ,
 | 
			
		||||
& 270, 170, 400, 188,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      170,       2,  6,  0, 1,  Imprimir comprimido (HEX):,
 | 
			
		||||
& 270, 190, 350, 208,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      190,       2,  6,  0, 1,  Numero de lineas:,
 | 
			
		||||
& 270, 220, 350, 238,           63,  7, 56, 0, 2
 | 
			
		||||
| 5,      220,       2,  6,  0, 1,  Cuota base:                          Cuota familiar:,
 | 
			
		||||
& 550, 220, 630, 238,           63,  7, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
| 5,      250,       2,  6,  0, 1,  Mes Votaci<63>n:                        Hora Salida:,
 | 
			
		||||
& 270, 250, 350, 268,           63,  7, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
& 550, 250, 630, 268,           63,  7, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
& 15, 315, 345, 350,            7, 63, 56, 0, 2
 | 
			
		||||
|  5,      320,       2,  6,  0, 1,   Reinicializar papeletas de sitio,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
************************************************  Botones D:   5
 | 
			
		||||
****                                        ****  Botones S:
 | 
			
		||||
**          Parte Utilizada por Optar         **
 | 
			
		||||
****                                        ****
 | 
			
		||||
************************************************
 | 
			
		||||
!5, 2
 | 
			
		||||
 | 
			
		||||
$  170, 320, 270, 350,       7, 63, 56, 2, 2, 000,  30
 | 
			
		||||
$  370, 320, 470, 350,       7, 63, 56, 2, 2, 000,  46
 | 
			
		||||
 | 
			
		||||
<EFBFBD>150
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
&  170, 320, 270, 350,       7, 63, 56, 2, 2
 | 
			
		||||
|  175, 325,                 2,  6,  0, 63,  Aceptar,
 | 
			
		||||
|  176, 326,                 2,  6,  0,  0,  Aceptar,
 | 
			
		||||
|  175, 327,                 2,  6,  0, 63,  _,
 | 
			
		||||
|  176, 328,                 2,  6,  0,  0,  _,
 | 
			
		||||
 | 
			
		||||
&  370, 320, 470, 350,       7, 63, 56, 2, 2
 | 
			
		||||
|  373, 325,                 2,  6,  0, 63,  Cancelar,
 | 
			
		||||
|  374, 326,                 2,  6,  0,  0,  Cancelar,
 | 
			
		||||
|  373, 327,                 2,  6,  0, 63,  _,
 | 
			
		||||
|  374, 328,                 2,  6,  0,  0,  _,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Buscar...
 | 
			
		||||
<EFBFBD>300
 | 
			
		||||
 | 
			
		||||
&  255, 199, 310, 217,      63,  7, 56, 0, 2
 | 
			
		||||
&  365, 199, 465, 217,      63,  7, 56, 0, 2
 | 
			
		||||
|  170, 200,                 2,  5,  0, 63,  N<> Hno:            Tlf.:,
 | 
			
		||||
|  171, 201,                 2,  5,  0,  0,  N<> Hno:            Tlf.:,
 | 
			
		||||
 | 
			
		||||
&  255, 219, 360, 237,      63,  7, 56, 0, 2
 | 
			
		||||
|  170, 220,                 2,  5,  0, 63,  Nombre:,
 | 
			
		||||
|  171, 221,                 2,  5,  0,  0,  Nombre:,
 | 
			
		||||
 | 
			
		||||
&  255, 239, 360, 257,      63,  7, 56, 0, 2
 | 
			
		||||
&  365, 239, 465, 257,      63,  7, 56, 0, 2
 | 
			
		||||
|  170, 240,                 2,  5,  0, 63,  Apellido:,
 | 
			
		||||
|  171, 241,                 2,  5,  0,  0,  Apellido:,
 | 
			
		||||
 | 
			
		||||
&  255, 259, 465, 277,      63,  7, 56, 0, 2
 | 
			
		||||
|  170, 260,                 2,  5,  0, 63,  Direcci<63>n:,
 | 
			
		||||
|  171, 261,                 2,  5,  0,  0,  Direcci<63>n:,
 | 
			
		||||
 | 
			
		||||
&  225, 279, 320, 297,      63,  7, 56, 0, 2
 | 
			
		||||
&  365, 279, 465, 297,      63,  7, 56, 0, 2
 | 
			
		||||
|  170, 280,                 2,  5,  0, 63,  F.Nac:             Antig:,
 | 
			
		||||
|  171, 281,                 2,  5,  0,  0,  F.Nac:             Antig:,
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								HERMANDA.CFG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								HERMANDA.CFG
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										411
									
								
								HERM_CFG.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										411
									
								
								HERM_CFG.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,411 @@
 | 
			
		||||
 /*************************************************************************\
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  HERM_CFG                                                               *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  Descripci<63>n:                                                           *|
 | 
			
		||||
|*               M<>dulo para mantener la configuraci<63>n.                    *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*                                        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"
 | 
			
		||||
 | 
			
		||||
extern int far Espera_TeclaRaton(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CONFIG Config;
 | 
			
		||||
BDatos BConfig;
 | 
			
		||||
 | 
			
		||||
extern int DifDate( struct date FechaF, struct date FechaO, struct date *FechaD );
 | 
			
		||||
extern struct date FechaActual;
 | 
			
		||||
 | 
			
		||||
extern char FICHA_REGISTRO;
 | 
			
		||||
extern int ComparaRegistros( const void *A, const void *B );
 | 
			
		||||
 | 
			
		||||
void CompruebaTiempoBorrados( char *File );
 | 
			
		||||
void MarcaConfig( int item, int como );
 | 
			
		||||
void EditConfig( int item );
 | 
			
		||||
 | 
			
		||||
void LeeConfiguracion(void)
 | 
			
		||||
{
 | 
			
		||||
  long i;
 | 
			
		||||
  BDatos GHtmp;
 | 
			
		||||
 | 
			
		||||
   if ( BConfig.AbrirReg( "hermandad.cfg", sizeof( Config ) ) != OK )
 | 
			
		||||
       Error(BConfig.cError);
 | 
			
		||||
 | 
			
		||||
   if ( BConfig.Registros() == 0 )
 | 
			
		||||
   {
 | 
			
		||||
 | 
			
		||||
    // Ponemos a por defecto la configuraci<63>n
 | 
			
		||||
    Config.config_color    =  0;            // Configura que paleta usa
 | 
			
		||||
    Config.item_ordenado[0]=  0;            // item por el que esta ordenado
 | 
			
		||||
    Config.item_ordenado[1]=  0;            // item por el que esta ordenado
 | 
			
		||||
    Config.TiempoBorrados  =  6;            // Tiempo que hay que mantener los items, borrados
 | 
			
		||||
                                            //  en meses...
 | 
			
		||||
    GHtmp.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) );
 | 
			
		||||
    Config.NHnoHna[0]      =  GHtmp.NRegTotal();            // Numero de Hermanos, Hermanas
 | 
			
		||||
    GHtmp.CerrarReg();
 | 
			
		||||
    GHtmp.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) );
 | 
			
		||||
    Config.NHnoHna[1]      =  GHtmp.NRegTotal();
 | 
			
		||||
    Config.TiempoBorrados  =  6;
 | 
			
		||||
    Config.CuotaBaseFam[0] = 0;
 | 
			
		||||
    Config.CuotaBaseFam[1] = 0;
 | 
			
		||||
    Config.LineasImpresion = 60;
 | 
			
		||||
    Config.ImpNormal[0]='\0';
 | 
			
		||||
    Config.ImpCompr[0]='\0';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    GHtmp.CerrarReg();
 | 
			
		||||
 | 
			
		||||
    Config.LineasImpresion = 60;
 | 
			
		||||
 | 
			
		||||
    for ( i=0; i < 40; i++ )
 | 
			
		||||
    {
 | 
			
		||||
     strcpy( Config.Insignia[i].NInsignia, "ninguna" );
 | 
			
		||||
     Config.Insignia[i].Suplemento = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Inserta un Reg por arriba de pos.
 | 
			
		||||
    if ( BConfig.InsReg( (void *)&Config, BConfig.Registros(), ARRIBA ) != OK )
 | 
			
		||||
       Error(BConfig.cError);
 | 
			
		||||
   } else
 | 
			
		||||
    BConfig.LeeReg( (void *)&Config, 0 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // Chequeamos el tiempo permitido en hermanos borrados
 | 
			
		||||
    CompruebaTiempoBorrados( "datos\\hnos_brr.dbf" );
 | 
			
		||||
    CompruebaTiempoBorrados( "datos\\hnas_brr.dbf" );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CompruebaTiempoBorrados( char *File )
 | 
			
		||||
{
 | 
			
		||||
 BDatos Borr;
 | 
			
		||||
 HERMBORRADOS HB;
 | 
			
		||||
 long i;
 | 
			
		||||
 int enc;
 | 
			
		||||
 struct date d;
 | 
			
		||||
 | 
			
		||||
 getdate(&d);
 | 
			
		||||
 | 
			
		||||
 if ( Borr.AbrirReg( File, sizeof( HERMBORRADOS ) ) == OK )
 | 
			
		||||
 {
 | 
			
		||||
  for ( i = 0; i < Borr.Registros() && enc == OK; )
 | 
			
		||||
  {
 | 
			
		||||
   enc = Borr.LeeReg( (void *)&HB, i );
 | 
			
		||||
   // Si se cumple...
 | 
			
		||||
   if ( ( ( ( HB.FechaBorrado.da_year - d.da_year - 1 ) * 12 ) < 0 ? 0 : ( ( HB.FechaBorrado.da_year - d.da_year - 1 ) * 12 ) ) + abs(d.da_mon - HB.FechaBorrado.da_mon) >= Config.TiempoBorrados )
 | 
			
		||||
   {
 | 
			
		||||
    Borr.DelReg( Borr.RegActual() );
 | 
			
		||||
   } else i++;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 Borr.CerrarReg();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ConfiguracionGlobal(void)
 | 
			
		||||
{
 | 
			
		||||
 int ok, item = 0, dev, key;
 | 
			
		||||
 long i;
 | 
			
		||||
 struct date d;
 | 
			
		||||
 | 
			
		||||
 getdate(&d);
 | 
			
		||||
 | 
			
		||||
 BDatos Herm;
 | 
			
		||||
 HermStruct HermS;
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos( 70, "herm.img" );
 | 
			
		||||
 for ( ok = 0; ok < 10; ok++ )
 | 
			
		||||
          MarcaConfig( ok, NORMAL  );
 | 
			
		||||
 | 
			
		||||
 ok = 0;
 | 
			
		||||
 do{
 | 
			
		||||
   MarcaConfig( item, INTENSO );
 | 
			
		||||
   dev = Espera_TeclaRaton();
 | 
			
		||||
   MarcaConfig( item, NORMAL  );
 | 
			
		||||
   if ( dev == 0 )
 | 
			
		||||
   {
 | 
			
		||||
     if ( kbhit() )
 | 
			
		||||
      switch( key = getch() )
 | 
			
		||||
      {
 | 
			
		||||
       case 27:
 | 
			
		||||
              ok = 1;
 | 
			
		||||
              break;
 | 
			
		||||
       case 0:
 | 
			
		||||
             switch( getch() )
 | 
			
		||||
             {
 | 
			
		||||
              //ARRIBA -- IZQUIERDA
 | 
			
		||||
                case  72:
 | 
			
		||||
                case  75:
 | 
			
		||||
                case  15:
 | 
			
		||||
                  item--; if ( item<0 ) item = 9;
 | 
			
		||||
                  break;
 | 
			
		||||
              // ABAJO -- DERECHA
 | 
			
		||||
                case  80:
 | 
			
		||||
                case  77:
 | 
			
		||||
                case   9:
 | 
			
		||||
                  item++; if ( item>9 ) item = 0;
 | 
			
		||||
                  break;
 | 
			
		||||
 | 
			
		||||
             }
 | 
			
		||||
             break;
 | 
			
		||||
       default:
 | 
			
		||||
               ungetch( key );
 | 
			
		||||
       case 13:
 | 
			
		||||
            EditConfig(item);
 | 
			
		||||
              break;
 | 
			
		||||
      }
 | 
			
		||||
   } else {
 | 
			
		||||
    if ( x_raton > 380 && x_raton < 630 && y_raton > 95 && y_raton < 125 )
 | 
			
		||||
    {
 | 
			
		||||
     if ( Optar( 1, "FIN REGISTRO Borrados", "Seguro que desea eliminar", "el registro de n<> eliminados", NULL ) )
 | 
			
		||||
     {
 | 
			
		||||
      remove( "datos\\hnos_brr.dbf" );
 | 
			
		||||
      remove( "datos\\hnas_brr.dbf" );
 | 
			
		||||
     }
 | 
			
		||||
    } else
 | 
			
		||||
    if ( x_raton > 15 && x_raton < 345 && y_raton > 315 && y_raton < 350 )
 | 
			
		||||
    {
 | 
			
		||||
     if ( Optar( 1, "CONFIRME OPERACION", "La reinicializaci<63>n es", "irreversible. <20><> CONFIRME !!", "Se recalcularan las posiciones",  NULL ) )
 | 
			
		||||
     {
 | 
			
		||||
 | 
			
		||||
       unlink( "datos\\hnos_brr.dbf" );
 | 
			
		||||
       unlink( "datos\\hnas_brr.dbf" );
 | 
			
		||||
 | 
			
		||||
      Herm.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) );
 | 
			
		||||
      // Ordenamos por n<> de hermanos
 | 
			
		||||
 | 
			
		||||
   Config.NHnoHna[0]      =  Herm.Registros();            // Numero de Hermanos, Hermanas
 | 
			
		||||
   Config.item_ordenado[0] = 0;
 | 
			
		||||
   Config.item_ordenado[1] = 0;
 | 
			
		||||
 | 
			
		||||
   if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
 | 
			
		||||
                                                    Error(BConfig.cError);
 | 
			
		||||
if ( Herm.SortReg(ComparaRegistros) == OK )
 | 
			
		||||
{
 | 
			
		||||
   Herm.SortReg(ComparaRegistros);
 | 
			
		||||
 | 
			
		||||
      for ( i=0; i < Herm.Registros(); i++ )
 | 
			
		||||
      {
 | 
			
		||||
       Herm.LeeReg( (void *)&HermS, i );
 | 
			
		||||
       HermS.Varios.RealPenit = 0;
 | 
			
		||||
       if ( // Mayor de 18 a<>os
 | 
			
		||||
DifDate( d, HermS.FechaN, NULL ) > 18 &&
 | 
			
		||||
DifDate( d, HermS.Antig, NULL ) > 1  &&
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
            ( d.da_year - HermS.FechaN.da_year ) > 18 &&
 | 
			
		||||
            // Mas de un a<>o de antiguedad
 | 
			
		||||
            ( d.da_year - HermS.Antig.da_year ) > 1   &&
 | 
			
		||||
*/
 | 
			
		||||
            HermS.FechaN.da_year != 0
 | 
			
		||||
          )
 | 
			
		||||
          {
 | 
			
		||||
           HermS.Varios.PuedVotar = 1;
 | 
			
		||||
          } else {
 | 
			
		||||
           HermS.Varios.PuedVotar = 0;
 | 
			
		||||
          }
 | 
			
		||||
       HermS.NHno = i+1;
 | 
			
		||||
       Herm.EscribeReg( (void *)&HermS, i );
 | 
			
		||||
      }
 | 
			
		||||
} else Error( Herm.cError );
 | 
			
		||||
      Herm.CerrarReg();
 | 
			
		||||
      Herm.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) );
 | 
			
		||||
 | 
			
		||||
   Config.NHnoHna[1]      =  Herm.Registros();
 | 
			
		||||
   Config.item_ordenado[0] = 0;
 | 
			
		||||
   Config.item_ordenado[1] = 0;
 | 
			
		||||
   if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
 | 
			
		||||
                                                    Error(BConfig.cError);
 | 
			
		||||
if ( Herm.SortReg(ComparaRegistros) == OK )
 | 
			
		||||
{
 | 
			
		||||
      for ( i=0; i < Herm.Registros(); i++ )
 | 
			
		||||
      {
 | 
			
		||||
       Herm.LeeReg( (void *)&HermS, i );
 | 
			
		||||
       HermS.Varios.RealPenit = 0;
 | 
			
		||||
       if ( // Mayor de 18 a<>os
 | 
			
		||||
DifDate( d, HermS.FechaN, NULL ) > 18 &&
 | 
			
		||||
DifDate( d, HermS.Antig, NULL ) > 1  &&
 | 
			
		||||
/*
 | 
			
		||||
            ( d.da_year - HermS.FechaN.da_year ) > 18 &&
 | 
			
		||||
            // Mas de un a<>o de antiguedad
 | 
			
		||||
            ( d.da_year - HermS.Antig.da_year ) > 1   &&
 | 
			
		||||
*/
 | 
			
		||||
            HermS.FechaN.da_year != 0
 | 
			
		||||
          )
 | 
			
		||||
          {
 | 
			
		||||
           HermS.Varios.PuedVotar = 1;
 | 
			
		||||
          } else {
 | 
			
		||||
           HermS.Varios.PuedVotar = 0;
 | 
			
		||||
          }
 | 
			
		||||
       HermS.NHno = i+1;
 | 
			
		||||
       Herm.EscribeReg( (void *)&HermS, i );
 | 
			
		||||
      }
 | 
			
		||||
} else Error( Herm.cError );
 | 
			
		||||
      Herm.CerrarReg();
 | 
			
		||||
     }
 | 
			
		||||
    }
 | 
			
		||||
   }
 | 
			
		||||
 }while( !ok );
 | 
			
		||||
 | 
			
		||||
  // Guardamos configuraci<63>n
 | 
			
		||||
 BConfig.EscribeReg( (void *)&Config, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void MarcaConfig( int item, int como )
 | 
			
		||||
{
 | 
			
		||||
 char buffer[80];
 | 
			
		||||
 | 
			
		||||
 if ( como == INTENSO )
 | 
			
		||||
    setfillstyle( SOLID_FILL, ROJO );
 | 
			
		||||
 else
 | 
			
		||||
    setfillstyle( SOLID_FILL, BLANCO );
 | 
			
		||||
 | 
			
		||||
 setcolor( NEGRO );
 | 
			
		||||
 switch( item )
 | 
			
		||||
 {
 | 
			
		||||
  // Ultimo hermano
 | 
			
		||||
  case 0:
 | 
			
		||||
       bar ( 270, 60, 350,  78  );
 | 
			
		||||
       sprintf( buffer, "   %04ld", Config.NHnoHna[0] );
 | 
			
		||||
       outtextxy( 270, 60, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Ultima hermana
 | 
			
		||||
  case 1:
 | 
			
		||||
       bar ( 270, 80, 350,  98  );
 | 
			
		||||
       sprintf( buffer, "   %04ld", Config.NHnoHna[1] );
 | 
			
		||||
       outtextxy( 270, 80, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Tiempo ha mantener los hermanos borrados
 | 
			
		||||
  case 2:
 | 
			
		||||
       bar ( 270, 100, 350, 118 );
 | 
			
		||||
       sprintf( buffer, "   %4d", Config.TiempoBorrados );
 | 
			
		||||
       outtextxy( 270, 100, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Cadena imprimir normal
 | 
			
		||||
  case 3:
 | 
			
		||||
       bar ( 270, 150, 460, 168 );
 | 
			
		||||
       outtextxy( 270, 150, Config.ImpNormal );
 | 
			
		||||
       break;
 | 
			
		||||
  // Cadena imprimir comprimido
 | 
			
		||||
  case 4:
 | 
			
		||||
       bar ( 270, 170, 460, 188 );
 | 
			
		||||
       outtextxy( 270, 170, Config.ImpCompr );
 | 
			
		||||
       break;
 | 
			
		||||
  // N<> de lineas
 | 
			
		||||
  case 5:
 | 
			
		||||
       bar ( 270, 190, 350, 208 );
 | 
			
		||||
       sprintf( buffer, "   %4d", Config.LineasImpresion );
 | 
			
		||||
       outtextxy( 270, 190, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Couta Base
 | 
			
		||||
  case 6:
 | 
			
		||||
       bar ( 270, 220, 350, 238 );
 | 
			
		||||
       sprintf( buffer, "   %4ld", Config.CuotaBaseFam[0] );
 | 
			
		||||
       outtextxy( 270, 220, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Couta Familiar
 | 
			
		||||
  case 7:
 | 
			
		||||
       bar ( 550, 220, 630, 238 );
 | 
			
		||||
       sprintf( buffer, "   %4ld", Config.CuotaBaseFam[1] );
 | 
			
		||||
       outtextxy( 550, 220, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Mes de las votaciones
 | 
			
		||||
  case 8:
 | 
			
		||||
       bar ( 270, 250, 350, 268 );
 | 
			
		||||
       sprintf( buffer, "   %4d", Config.MesVotacion );
 | 
			
		||||
       outtextxy( 270, 250, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Hora de Salida
 | 
			
		||||
  case 9:
 | 
			
		||||
       bar ( 550, 250, 630, 268 );
 | 
			
		||||
       sprintf( buffer, "   %5s", Config.HoraSalida );
 | 
			
		||||
       outtextxy( 550, 250, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void EditConfig( int item )
 | 
			
		||||
{
 | 
			
		||||
 char buffer[80];
 | 
			
		||||
 | 
			
		||||
 switch( item )
 | 
			
		||||
 {
 | 
			
		||||
  // Ultimo hermano
 | 
			
		||||
  case 0:
 | 
			
		||||
       sprintf( buffer, "%ld", Config.NHnoHna[0] );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  5, BLANCO, AZUL, 270, 60, 350, 78 ) >> 8 ) )
 | 
			
		||||
              Config.NHnoHna[0] = atol ( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Ultima hermana
 | 
			
		||||
  case 1:
 | 
			
		||||
       sprintf( buffer, "%ld", Config.NHnoHna[1] );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  5, BLANCO, AZUL, 270, 80, 350,  98 ) >> 8 ) )
 | 
			
		||||
              Config.NHnoHna[1] = atol ( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Tiempo ha mantener los hermanos borrados
 | 
			
		||||
  case 2:
 | 
			
		||||
       sprintf( buffer, "%d", Config.TiempoBorrados );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  3, BLANCO, AZUL, 270, 100, 350,  118 ) >> 8 ) )
 | 
			
		||||
                                                              Config.TiempoBorrados = atoi ( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Cadena imprimir normal
 | 
			
		||||
  case 3:
 | 
			
		||||
       sprintf( buffer, "%s", Config.ImpNormal );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 0,  19, BLANCO, AZUL, 270, 150, 460, 168 ) >> 8 ) )
 | 
			
		||||
                 strcpy( Config.ImpNormal, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Cadena imprimir comprimido
 | 
			
		||||
  case 4:
 | 
			
		||||
       sprintf( buffer, "%s", Config.ImpCompr );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 0,  19, BLANCO, AZUL, 270, 170, 460, 188 ) >> 8 ) )
 | 
			
		||||
                 strcpy( Config.ImpCompr, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // N<> de lineas
 | 
			
		||||
  case 5:
 | 
			
		||||
       sprintf( buffer, "%d", Config.LineasImpresion );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  2, BLANCO, AZUL, 270, 190, 350, 208 ) >> 8 ) )
 | 
			
		||||
                 Config.LineasImpresion = atoi( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Couta Base
 | 
			
		||||
  case 6:
 | 
			
		||||
       sprintf( buffer, "%ld", Config.CuotaBaseFam[0] );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  5, BLANCO, AZUL, 270, 220, 350, 238 ) >> 8 ) )
 | 
			
		||||
                 Config.CuotaBaseFam[0] = atol( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Couta Familiar
 | 
			
		||||
  case 7:
 | 
			
		||||
       sprintf( buffer, "%ld", Config.CuotaBaseFam[1] );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  5, BLANCO, AZUL, 550, 220, 630, 238 ) >> 8 ) )
 | 
			
		||||
                 Config.CuotaBaseFam[1] = atol( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // Mes votacion
 | 
			
		||||
  case 8:
 | 
			
		||||
       sprintf( buffer, "%d", Config.MesVotacion );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 1,  2, BLANCO, AZUL, 270, 250, 350, 268 ) >> 8 ) )
 | 
			
		||||
                 Config.MesVotacion = atoi( buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  // HoraSalida
 | 
			
		||||
  case 9:
 | 
			
		||||
       sprintf( buffer, "%s", Config.HoraSalida );
 | 
			
		||||
       if ( !( InputCadenaG_T5( buffer, 0,  5, BLANCO, AZUL, 550, 250, 630, 268 ) >> 8 ) )
 | 
			
		||||
                 strcpy( Config.HoraSalida, buffer );
 | 
			
		||||
       break;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2649
									
								
								HERM_GST.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2649
									
								
								HERM_GST.CPP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										173
									
								
								HERM_IGA.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								HERM_IGA.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,173 @@
 | 
			
		||||
 /*************************************************************************\
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  HERM_IGA                                                               *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  Descripci<63>n:                                                           *|
 | 
			
		||||
|*               Gestion de insginias ( solo ense<73>a desde 1 hata 19 )      *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
 \*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#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"
 | 
			
		||||
 | 
			
		||||
extern CONFIG Config;
 | 
			
		||||
extern BDatos BConfig;
 | 
			
		||||
 | 
			
		||||
extern int far Espera_TeclaRaton(void);
 | 
			
		||||
 | 
			
		||||
void MuestraInsignia( int insignia, char como, int CtoVirgen, int columna );
 | 
			
		||||
 | 
			
		||||
void GestionInsignias(void)
 | 
			
		||||
{
 | 
			
		||||
 int i, key; char buffer[80];
 | 
			
		||||
 int X1, X0;
 | 
			
		||||
 | 
			
		||||
 char insignia, ok, CtoVirgen, columna;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos(50, "Herm.img");
 | 
			
		||||
 settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
 | 
			
		||||
 | 
			
		||||
 for ( insignia = 1; insignia < 20; insignia++ )
 | 
			
		||||
 {
 | 
			
		||||
             MuestraInsignia( insignia, NORMAL, 0, 0 );
 | 
			
		||||
             MuestraInsignia( insignia, NORMAL, 1, 0 );
 | 
			
		||||
 | 
			
		||||
             MuestraInsignia( insignia, NORMAL, 0, 1 );
 | 
			
		||||
             MuestraInsignia( insignia, NORMAL, 1, 1 );
 | 
			
		||||
 }
 | 
			
		||||
 insignia = 1; CtoVirgen = 0;
 | 
			
		||||
 columna = 0;
 | 
			
		||||
 | 
			
		||||
 ok = 0;
 | 
			
		||||
 do{
 | 
			
		||||
  MuestraInsignia( insignia, INTENSO, CtoVirgen, columna );
 | 
			
		||||
  Espera_TeclaRaton();
 | 
			
		||||
  MuestraInsignia( insignia, NORMAL, CtoVirgen, columna );
 | 
			
		||||
  if ( !kbhit() )      // Donde pincho el raton
 | 
			
		||||
  {
 | 
			
		||||
     for ( i = 0; i < 20; i++ )
 | 
			
		||||
     {
 | 
			
		||||
         if ( x_raton > 15 && x_raton < 180 && y_raton > 70+20*i && y_raton < 90+20*i )
 | 
			
		||||
         {
 | 
			
		||||
          CtoVirgen = 0; columna = 0; insignia = i+1;
 | 
			
		||||
          break;
 | 
			
		||||
         }
 | 
			
		||||
         if ( x_raton > 200 && x_raton < 310 && y_raton > 70+20*i && y_raton < 90+20*i )
 | 
			
		||||
         {
 | 
			
		||||
          CtoVirgen = 0; columna = 1; insignia = i+1;
 | 
			
		||||
          break;
 | 
			
		||||
         }
 | 
			
		||||
         if ( x_raton > 330 && x_raton < 495 && y_raton > 70+20*i && y_raton < 90+20*i )
 | 
			
		||||
         {
 | 
			
		||||
          CtoVirgen = 1; columna = 0; insignia = i+1;
 | 
			
		||||
          break;
 | 
			
		||||
         }
 | 
			
		||||
         if ( x_raton > 495 && x_raton < 625 && y_raton > 70+20*i && y_raton < 90+20*i )
 | 
			
		||||
         {
 | 
			
		||||
          CtoVirgen = 1; columna = 1; insignia = i+1;
 | 
			
		||||
          break;
 | 
			
		||||
         }
 | 
			
		||||
     }
 | 
			
		||||
     Anclar_Raton();
 | 
			
		||||
  } else
 | 
			
		||||
  switch( ( key = getch() ) )
 | 
			
		||||
  {
 | 
			
		||||
   case 0:
 | 
			
		||||
   switch( getch() )
 | 
			
		||||
   {
 | 
			
		||||
                // Flecha Izquierda
 | 
			
		||||
                case  75:
 | 
			
		||||
                       columna--;
 | 
			
		||||
                       if ( columna < 0 )
 | 
			
		||||
                       {
 | 
			
		||||
                        if ( CtoVirgen == 1 )
 | 
			
		||||
                        {
 | 
			
		||||
                         CtoVirgen = 0; columna = 1;
 | 
			
		||||
                        }else{
 | 
			
		||||
                         columna = 0;
 | 
			
		||||
                        }
 | 
			
		||||
                       }
 | 
			
		||||
                       break;
 | 
			
		||||
                // Flecha Derecha
 | 
			
		||||
                case  77:
 | 
			
		||||
                       columna ++;
 | 
			
		||||
                       if ( columna > 1 )
 | 
			
		||||
                       {
 | 
			
		||||
                        if ( CtoVirgen == 0 )
 | 
			
		||||
                        {
 | 
			
		||||
                         CtoVirgen=1; columna = 0;
 | 
			
		||||
                        }else{
 | 
			
		||||
                         columna = 1;
 | 
			
		||||
                        }
 | 
			
		||||
                       }
 | 
			
		||||
                       break;
 | 
			
		||||
                // Flecha Arriba
 | 
			
		||||
                case  80:
 | 
			
		||||
                       insignia++; if ( insignia > 19 ) insignia = 19;
 | 
			
		||||
                       break;
 | 
			
		||||
                // Flecha Abajo
 | 
			
		||||
                case  72:
 | 
			
		||||
                       insignia--; if ( insignia <  1 ) insignia =  1;
 | 
			
		||||
                       break;
 | 
			
		||||
   }
 | 
			
		||||
   break;
 | 
			
		||||
   case  15:
 | 
			
		||||
   case   9:
 | 
			
		||||
          CtoVirgen = !CtoVirgen;
 | 
			
		||||
          columna = 0;
 | 
			
		||||
          break;
 | 
			
		||||
   // ESC
 | 
			
		||||
   case 27:
 | 
			
		||||
          ok = 1;
 | 
			
		||||
          break;
 | 
			
		||||
   default:
 | 
			
		||||
        if ( key != 13 && key != 8 ) ungetch(key);
 | 
			
		||||
           if ( columna == 0)
 | 
			
		||||
                      strcpy( buffer, Config.Insignia[insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
           else
 | 
			
		||||
                      sprintf( buffer, "%ld", Config.Insignia[insignia+20*CtoVirgen].Suplemento );
 | 
			
		||||
           if ( !( InputCadenaG_T5( buffer, columna, (columna == 0) ? 29 : 5, BLANCO, AZUL, (  (columna==0) ?  15 + CtoVirgen*315 : 200 + CtoVirgen*315 ), 70+20*(insignia-1), (  (columna==0) ? 200 + CtoVirgen*315 : 300 + CtoVirgen*315 ), 90+20*(insignia-1) - 1 ) >> 8 ) )
 | 
			
		||||
                      if ( columna == 0)
 | 
			
		||||
                                        strcpy( Config.Insignia[insignia+20*CtoVirgen].NInsignia, buffer );
 | 
			
		||||
                      else
 | 
			
		||||
                                        Config.Insignia[insignia+20*CtoVirgen].Suplemento = atol(buffer);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 }while( !ok );
 | 
			
		||||
 | 
			
		||||
 // Salvamos configuracion
 | 
			
		||||
 BConfig.EscribeReg( (void *)&Config, 0 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void MuestraInsignia( int insignia, char como, int CtoVirgen, int columna )
 | 
			
		||||
{
 | 
			
		||||
 int X0, Y0, X1, Y1;
 | 
			
		||||
 char buffer[80];
 | 
			
		||||
 setfillstyle( SOLID_FILL, (como==NORMAL) ? BLANCO : ROJO );
 | 
			
		||||
 setcolor( NEGRO );
 | 
			
		||||
 | 
			
		||||
           if ( columna == 0)
 | 
			
		||||
                      sprintf( buffer, "%29s", Config.Insignia[insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
           else
 | 
			
		||||
                      sprintf( buffer, "  %05ld", Config.Insignia[insignia+20*CtoVirgen].Suplemento );
 | 
			
		||||
 | 
			
		||||
 insignia--;
 | 
			
		||||
 X0 = (  (columna==0) ?  15 + CtoVirgen*315 : 200 + CtoVirgen*315 );
 | 
			
		||||
 Y0 = 70+20*insignia;
 | 
			
		||||
 X1 = (  (columna==0) ? 200 + CtoVirgen*315 : 300 + CtoVirgen*315 );
 | 
			
		||||
 Y1 = 90+20*insignia;
 | 
			
		||||
 | 
			
		||||
 bar( X0, Y0, X1, Y1-1 );
 | 
			
		||||
 | 
			
		||||
 outtextxy( X0, Y0, buffer );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										978
									
								
								HERM_LST.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										978
									
								
								HERM_LST.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,978 @@
 | 
			
		||||
 /*************************************************************************\
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  HERM_LST                                                               *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*  Descripci<63>n:                                                           *|
 | 
			
		||||
|*               Listados por pantalla e impresos (RAPIDOS)                *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
 \*************************************************************************/
 | 
			
		||||
 | 
			
		||||
#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 AVANCES_DE_PAGINA   37
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ImprimeEtiquetas(void);
 | 
			
		||||
void ImprimeFacturas(void);
 | 
			
		||||
 | 
			
		||||
void OptenPaginasIniFin( int *Inicio, int *Fin, int NRegistros );
 | 
			
		||||
 | 
			
		||||
void ImprimeListaSitios(void);
 | 
			
		||||
void MuestraLinea(int Tipo_de_Listado);
 | 
			
		||||
void ImprimeLinea( int Tipo_de_Listado, FILE *file_out );
 | 
			
		||||
void ImprimePaginas( int Tipo_de_Listado );
 | 
			
		||||
void MuestraPagina( int adelante_atras, int Tipo_de_Listado );
 | 
			
		||||
void Escr_Mensaje(char *Encabezado, char lineas, char Mensaje[][50] );
 | 
			
		||||
 | 
			
		||||
extern void ImprimeFicha(void);
 | 
			
		||||
extern void CodigoImpresora( char *codigo );
 | 
			
		||||
extern int  ComparaRegistros( const void *A, const void *B );
 | 
			
		||||
 | 
			
		||||
extern char FICHA_REGISTRO;
 | 
			
		||||
 | 
			
		||||
extern struct date FechaActual;
 | 
			
		||||
 | 
			
		||||
extern CONFIG Config;
 | 
			
		||||
extern BDatos BConfig;
 | 
			
		||||
 | 
			
		||||
extern BDatos BHerm;
 | 
			
		||||
extern HermStruct SHerm, BHtmp;
 | 
			
		||||
 | 
			
		||||
extern BDatos BHBorrados;
 | 
			
		||||
extern HERMBORRADOS HermanosBorrados;
 | 
			
		||||
 | 
			
		||||
void ListadosRapidos( int Tipo_de_Listado )
 | 
			
		||||
{
 | 
			
		||||
 char Mensaje[][50] = { "La base de Datos", "esta vacia." };
 | 
			
		||||
 char File[80];
 | 
			
		||||
 int ok = 0, BPush;
 | 
			
		||||
 True_Push = 0;
 | 
			
		||||
 | 
			
		||||
 int HnoHna;
 | 
			
		||||
 | 
			
		||||
 if ( Optar( 1, "BASE A LISTAR", "Aceptar:  HERMANOS", "Cancelar:  HERMANAS", NULL ) )
 | 
			
		||||
  HnoHna = HERMANOS;
 | 
			
		||||
 else
 | 
			
		||||
  HnoHna = HERMANAS;
 | 
			
		||||
 | 
			
		||||
 getdate( &FechaActual );
 | 
			
		||||
 | 
			
		||||
 strcpy( BHerm.MyHeader.ProgName, "Hermadad" );
 | 
			
		||||
 BHerm.MyHeader.VerHi  = 1;
 | 
			
		||||
 BHerm.MyHeader.VerLow = 0;
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos(60, "Herm.img");
 | 
			
		||||
 | 
			
		||||
 settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
 | 
			
		||||
 | 
			
		||||
  // 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();
 | 
			
		||||
   } else {
 | 
			
		||||
    if ( Tipo_de_Listado == TUNICA_HDAD && Config.item_ordenado[FICHA_REGISTRO] != 9 )
 | 
			
		||||
    {
 | 
			
		||||
      Imprime_Estaticos(20, "Herm.img");
 | 
			
		||||
 | 
			
		||||
      settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      setcolor( 63 );  outtextxy( 172, 165, "   Comando Ordenar" );
 | 
			
		||||
      setcolor( ROJO );
 | 
			
		||||
 | 
			
		||||
      outtextxy( 172, 200+20*1, "  Preparando base de Datos" );
 | 
			
		||||
      outtextxy( 172, 200+20*2, "  Por favor, espere..." );
 | 
			
		||||
 | 
			
		||||
      Config.item_ordenado[FICHA_REGISTRO] = 8;
 | 
			
		||||
      if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
 | 
			
		||||
                                                    Error(BConfig.cError);
 | 
			
		||||
      BHerm.SortReg(ComparaRegistros);
 | 
			
		||||
 | 
			
		||||
      Imprime_Estaticos(60, "Herm.img");
 | 
			
		||||
 | 
			
		||||
      settextstyle( SMALL_FONT, HORIZ_DIR, 4 );
 | 
			
		||||
 | 
			
		||||
    } else
 | 
			
		||||
     if ( Tipo_de_Listado == FACTURAS  )
 | 
			
		||||
     {
 | 
			
		||||
        ImprimeFacturas();
 | 
			
		||||
        BHerm.CerrarReg();
 | 
			
		||||
        return ;
 | 
			
		||||
     } else
 | 
			
		||||
     if ( Tipo_de_Listado == ETIQUETAS )
 | 
			
		||||
     {
 | 
			
		||||
        ImprimeEtiquetas();
 | 
			
		||||
        BHerm.CerrarReg();
 | 
			
		||||
        return ;
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
  BHerm.LeeReg( (void *)&SHerm, 0 );
 | 
			
		||||
  MuestraLinea(Tipo_de_Listado);
 | 
			
		||||
  MuestraPagina( 1, Tipo_de_Listado);
 | 
			
		||||
 | 
			
		||||
  while( !ok )
 | 
			
		||||
  {
 | 
			
		||||
   BPush = Comprueba_Secuencia( 4, NULL );
 | 
			
		||||
   switch ( BPush )
 | 
			
		||||
   {
 | 
			
		||||
       case  0:				  // No se pulso ningun BOTON
 | 
			
		||||
	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
                                          // El raton todav<61>a sigue pulsado
 | 
			
		||||
	       break;
 | 
			
		||||
       case -2:
 | 
			
		||||
               if ( (BPush = getch()) != 27 )
 | 
			
		||||
               {
 | 
			
		||||
  	        while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
               } else {  ok = 1;  }
 | 
			
		||||
               break;
 | 
			
		||||
                                          // Tecla Normal
 | 
			
		||||
       case -1:				  // Hay una tecla especial en BUFFER
 | 
			
		||||
	               			  // La eliminamos
 | 
			
		||||
  	        while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
	       break;
 | 
			
		||||
 | 
			
		||||
       // INICIO DE BOTONES
 | 
			
		||||
       // Retroceso
 | 
			
		||||
       case 1:
 | 
			
		||||
            MuestraPagina( -1, Tipo_de_Listado );
 | 
			
		||||
        break;
 | 
			
		||||
       // Imprimir
 | 
			
		||||
       case 2:
 | 
			
		||||
            if ( Tipo_de_Listado == PAPELETAS_SITIO )
 | 
			
		||||
                  ImprimeListaSitios();
 | 
			
		||||
            else
 | 
			
		||||
                  ImprimePaginas( Tipo_de_Listado );
 | 
			
		||||
        break;
 | 
			
		||||
       // Avance
 | 
			
		||||
       case 3:
 | 
			
		||||
             MuestraPagina( 1, Tipo_de_Listado );
 | 
			
		||||
        break;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  BHerm.CerrarReg();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void MuestraPagina( int adelante_atras, int Tipo_de_Listado )
 | 
			
		||||
{
 | 
			
		||||
 long i, CurrReg;
 | 
			
		||||
 static long antigua_pos = 0;
 | 
			
		||||
 int virtual_pos = 0;
 | 
			
		||||
 char buffer[500];
 | 
			
		||||
 | 
			
		||||
 CurrReg = BHerm.RegActual();
 | 
			
		||||
 | 
			
		||||
 if ( (CurrReg == 0 && adelante_atras == -1) )
 | 
			
		||||
                                           return;
 | 
			
		||||
 setfillstyle(SOLID_FILL, BLANCO);
 | 
			
		||||
 bar( 11, 66, 634, 449 );
 | 
			
		||||
 setcolor( AZUL );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( adelante_atras == -1 )
 | 
			
		||||
 {
 | 
			
		||||
  CurrReg = antigua_pos;
 | 
			
		||||
  virtual_pos = AVANCES_DE_PAGINA-1;
 | 
			
		||||
 } else {
 | 
			
		||||
  virtual_pos = 0;
 | 
			
		||||
  antigua_pos = BHerm.RegActual();
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 for( i=CurrReg; ( virtual_pos >= 0 && virtual_pos < AVANCES_DE_PAGINA && i >= 0 && i < BHerm.Registros() ) ; i+= adelante_atras )
 | 
			
		||||
 {
 | 
			
		||||
  if ( BHerm.LeeReg( (void *)&SHerm, i ) != OK ) return;
 | 
			
		||||
  switch( Tipo_de_Listado )
 | 
			
		||||
  {
 | 
			
		||||
   case VOTANTES:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.PuedVotar )
 | 
			
		||||
     {
 | 
			
		||||
          //                12345  123456789-12345 123456789-12345 123456789-12345  123456789-123456789-  12-12-1234  12-12-1234
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 140, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%02d-%02d-%04d  %02d-%02d-%04d"
 | 
			
		||||
                    ,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
 | 
			
		||||
                    (int)SHerm.FechaN.da_day, (int)SHerm.FechaN.da_mon, SHerm.FechaN.da_year
 | 
			
		||||
          );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
          virtual_pos +=adelante_atras;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case PAPELETAS_SITIO:
 | 
			
		||||
     if ( SHerm.Varios.RealPenit )
 | 
			
		||||
     {
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
          //                12345  123456789-12345 123456789-12345 123456789-12345  123456789-123456789-  12-12-1234  12-12-1234
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 140, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%02d-%02d-%04d  %s"
 | 
			
		||||
                    ,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
 | 
			
		||||
                    SHerm.Telefono1
 | 
			
		||||
          );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
     virtual_pos +=adelante_atras;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERMANOS:
 | 
			
		||||
   case GRAL_HERM_RAP:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
          //                12345  123456789-12345 123456789-12345 123456789-12345  123456789-123456789-  12-12-1234  12-12-1234
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 140, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%02d-%02d-%04d  %s"
 | 
			
		||||
                    ,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, (int)SHerm.Antig.da_year,
 | 
			
		||||
                    SHerm.Telefono1
 | 
			
		||||
          );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
     virtual_pos +=adelante_atras;
 | 
			
		||||
     break;
 | 
			
		||||
   case RECIBE_NOTIFIC:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.Notific )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 140, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%-15s", SHerm.Poblacion );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
     virtual_pos +=adelante_atras;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case ACOGIDOS_CUOT:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.CuotaFam )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 120, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%-15s", SHerm.Poblacion );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
     virtual_pos +=adelante_atras;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case TUNICA_HDAD:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.TunicaHd )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%5ld %-15s", SHerm.NHno, SHerm.Nombre );
 | 
			
		||||
          outtextxy( 10, 75+10*virtual_pos, buffer );
 | 
			
		||||
          // Los apellidos seran unidos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[21] = '\0';
 | 
			
		||||
          outtextxy( 140, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? "," : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          outtextxy( 265, 75+10*virtual_pos, buffer );
 | 
			
		||||
          sprintf( buffer, "%02d-%02d-%04d  %4ld"
 | 
			
		||||
                    ,(int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
 | 
			
		||||
                    (int)SHerm.NTunica
 | 
			
		||||
          );
 | 
			
		||||
          outtextxy( 505, 75+10*virtual_pos, buffer );
 | 
			
		||||
     virtual_pos +=adelante_atras;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( adelante_atras == -1 )
 | 
			
		||||
    antigua_pos = BHerm.RegActual();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MuestraLinea(int Tipo_de_Listado)
 | 
			
		||||
{
 | 
			
		||||
 char buffer[500];
 | 
			
		||||
 | 
			
		||||
  buffer[0] = '\0';
 | 
			
		||||
  switch( Tipo_de_Listado )
 | 
			
		||||
  {
 | 
			
		||||
   case VOTANTES:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Antig<69>edad  F.Nacimiento");
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERMANOS:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Antig<69>edad  Telefono");
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERM_RAP:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Antig<69>edad  Telefono");
 | 
			
		||||
     break;
 | 
			
		||||
   case ACOGIDOS_CUOT:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Poblacion");
 | 
			
		||||
     break;
 | 
			
		||||
   case RECIBE_NOTIFIC:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Poblacion");
 | 
			
		||||
     break;
 | 
			
		||||
   case TUNICA_HDAD:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Antig<69>edad  N<> Tunica");
 | 
			
		||||
     break;
 | 
			
		||||
   case PAPELETAS_SITIO:
 | 
			
		||||
        sprintf( buffer, "N<EFBFBD>Hno  Nombre (completo)                     Direccion                           Antig<69>edad  Telefono");
 | 
			
		||||
     break;
 | 
			
		||||
  }
 | 
			
		||||
  outtextxy( 12, 45, buffer );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ImprimePaginas( int Tipo_de_Listado )
 | 
			
		||||
{
 | 
			
		||||
 long i, CurrReg, lineas_impresas = 0;
 | 
			
		||||
 char buffer[500];
 | 
			
		||||
 FILE *file_out;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 CurrReg = BHerm.RegActual();
 | 
			
		||||
 | 
			
		||||
  while ( !Comprueba_Impresora() )
 | 
			
		||||
  {
 | 
			
		||||
    if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
 | 
			
		||||
                                                                               return;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 switch ( Tipo_de_Listado )
 | 
			
		||||
 {
 | 
			
		||||
  case  ACOGIDOS_CUOT:
 | 
			
		||||
  case  VOTANTES:
 | 
			
		||||
     // Miramos si desea mandar el informe a un archivo
 | 
			
		||||
     if ( Config.ImpCompr[0] == '-' && Config.ImpCompr[1] == '>' )
 | 
			
		||||
     {
 | 
			
		||||
       strcpy( buffer, Config.ImpCompr );
 | 
			
		||||
       strrev( buffer );
 | 
			
		||||
       buffer[ strlen( buffer ) - 2 ] = '\0';
 | 
			
		||||
       strrev( buffer );
 | 
			
		||||
       if ( ( file_out = fopen( buffer, "w" ) ) == NULL )
 | 
			
		||||
                                                   return;
 | 
			
		||||
      } else {
 | 
			
		||||
           // Mandar codigo caracteres grandes
 | 
			
		||||
           CodigoImpresora( Config.ImpCompr );
 | 
			
		||||
           file_out = stdprn;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
  default:
 | 
			
		||||
      file_out = stdprn;
 | 
			
		||||
      break;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 ImprimeLinea( Tipo_de_Listado, file_out );
 | 
			
		||||
 | 
			
		||||
 for( i=0; i < BHerm.Registros() && i >= 0; i++ )
 | 
			
		||||
 {
 | 
			
		||||
  if ( Config.LineasImpresion != 0 && lineas_impresas > Config.LineasImpresion )
 | 
			
		||||
  {
 | 
			
		||||
     fputc( 12, file_out ); lineas_impresas = 0;
 | 
			
		||||
     while ( !Comprueba_Impresora() )
 | 
			
		||||
     {
 | 
			
		||||
      if ( !Optar( 1, "ERROR IMPRESORA", "Coloque la siguiente p<>gina", "y pulse ACEPTAR para continuar", NULL ) )
 | 
			
		||||
                                                                                    i = -1;
 | 
			
		||||
     };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  if ( BHerm.LeeReg( (void *)&SHerm, i ) != OK ) break;
 | 
			
		||||
  switch( Tipo_de_Listado )
 | 
			
		||||
  {
 | 
			
		||||
   case VOTANTES:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.PuedVotar )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[20] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer);
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
 | 
			
		||||
          buffer[34] = '\0';
 | 
			
		||||
          fprintf( file_out, "%-34s %02d-%02d-%02d  %02d-%02d-%02d\n\r", buffer,
 | 
			
		||||
            (int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100 ) ,
 | 
			
		||||
            (int)SHerm.FechaN.da_day, (int)SHerm.FechaN.da_mon, ( SHerm.FechaN.da_year - (SHerm.FechaN.da_year/100)*100 )
 | 
			
		||||
                 );
 | 
			
		||||
 | 
			
		||||
          lineas_impresas++;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERMANOS:
 | 
			
		||||
     // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
 | 
			
		||||
     // <20>  D i R e C t O   <20> <20><><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     ImprimeFicha();
 | 
			
		||||
     lineas_impresas++;
 | 
			
		||||
     break;
 | 
			
		||||
   case PAPELETAS_SITIO:
 | 
			
		||||
     // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
 | 
			
		||||
     // <20>  D i R e C t O   <20> <20><><EFBFBD><EFBFBD>
 | 
			
		||||
     if ( SHerm.Varios.RealPenit )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[20] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
 | 
			
		||||
 | 
			
		||||
          fprintf( file_out, "%02d-%02d-%04d %s\n\r",
 | 
			
		||||
            (int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, SHerm.Antig.da_year,
 | 
			
		||||
            SHerm.Telefono1
 | 
			
		||||
          );
 | 
			
		||||
     }
 | 
			
		||||
    break;
 | 
			
		||||
   case GRAL_HERM_RAP:
 | 
			
		||||
     // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
 | 
			
		||||
     // <20>  D i R e C t O   <20> <20><><EFBFBD><EFBFBD>
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[20] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
 | 
			
		||||
          buffer[40] = '\0';
 | 
			
		||||
          fprintf( file_out, "%-40s\n\r", buffer );
 | 
			
		||||
 | 
			
		||||
     lineas_impresas++;
 | 
			
		||||
     break;
 | 
			
		||||
   case RECIBE_NOTIFIC:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.Notific )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[20] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? "," : "", SHerm.Piso );
 | 
			
		||||
          buffer[32] = '\0';
 | 
			
		||||
          fprintf( file_out, "%-30s   %02d-%02d-%02d %s\n\r", buffer,
 | 
			
		||||
           (int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100),             SHerm.Telefono1
 | 
			
		||||
           );
 | 
			
		||||
     lineas_impresas++;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case ACOGIDOS_CUOT:
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.CuotaFam )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%s %s", SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[20] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld  %-10s %-20s ", SHerm.NHno, SHerm.Nombre, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
 | 
			
		||||
          buffer[33] = '\0';
 | 
			
		||||
          fprintf( file_out, "%-33s %02d-%02d-%04d %s\n\r", buffer,
 | 
			
		||||
           (int)SHerm.Antig.da_day, (int)SHerm.Antig.da_mon, ( SHerm.Antig.da_year - (SHerm.Antig.da_year/100)*100),             SHerm.Telefono1
 | 
			
		||||
           );
 | 
			
		||||
     lineas_impresas++;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
   case TUNICA_HDAD:
 | 
			
		||||
     // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>
 | 
			
		||||
     // <20>  D i R e C t O   <20> <20><><EFBFBD><EFBFBD>
 | 
			
		||||
     // si cumple los requisitos
 | 
			
		||||
     if ( SHerm.Varios.TunicaHd )
 | 
			
		||||
     {
 | 
			
		||||
          sprintf( buffer, "%s %s %s", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
          buffer[33] = '\0';
 | 
			
		||||
          fprintf( file_out, "%4ld  %-33s ", SHerm.NHno, buffer );
 | 
			
		||||
          sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, ( SHerm.Num[0] != '\0' ) ? ", " : "", SHerm.Num, ( SHerm.Piso[0] != '\0' ) ? ", " : "", SHerm.Piso );
 | 
			
		||||
          buffer[32] = '\0';
 | 
			
		||||
          fprintf( file_out, "%-32s ", buffer );
 | 
			
		||||
 | 
			
		||||
          if ( SHerm.NTunica == 0 )
 | 
			
		||||
                    fprintf( stdprn, " %04ld\n\r", SHerm.NTunica );
 | 
			
		||||
          else
 | 
			
		||||
                    fprintf( stdprn, " HDAD\n\r" );
 | 
			
		||||
     lineas_impresas++;
 | 
			
		||||
     }
 | 
			
		||||
     break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if ( kbhit() && getch() == 27 && Optar( 1, "CANCELAR IMPRESION", "Desea cancelar el trabajo", "de impresion actual?", NULL ) )
 | 
			
		||||
                                                break;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 // Nueva pagina
 | 
			
		||||
 fputc( 12, file_out );
 | 
			
		||||
 if (  Tipo_de_Listado != PAPELETAS_SITIO && Tipo_de_Listado != TUNICA_HDAD && Tipo_de_Listado != GRAL_HERM_RAP)
 | 
			
		||||
 {
 | 
			
		||||
  // Miramos si desea mandar el informe a un archivo
 | 
			
		||||
  if ( Config.ImpCompr[0] == '-' && Config.ImpCompr[1] == '>' )
 | 
			
		||||
  {
 | 
			
		||||
   fclose( file_out );
 | 
			
		||||
  } else
 | 
			
		||||
  // Mandar codigo caracteres peque<75>os
 | 
			
		||||
  CodigoImpresora( Config.ImpNormal );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 // Regresamos a la posicion original
 | 
			
		||||
 if ( BHerm.LeeReg( (void *)&SHerm, CurrReg ) != OK ) return;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ImprimeLinea( int Tipo_de_Listado, FILE *file_out )
 | 
			
		||||
{
 | 
			
		||||
 char buffer[500];
 | 
			
		||||
 | 
			
		||||
  switch( Tipo_de_Listado )
 | 
			
		||||
  {
 | 
			
		||||
   case VOTANTES:
 | 
			
		||||
        fprintf( file_out, "Listado General de Votantes\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hno Nombre (completo)             Direccion                        Antig<69>edad F.Nacimiento\n\r\n\r");
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERMANOS:
 | 
			
		||||
     break;
 | 
			
		||||
   case GRAL_HERM_RAP:
 | 
			
		||||
        fprintf( file_out, "Listado R<>pido de hermanos\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hn Nombre (completo)              Direccion                                 \n\r\n\r");
 | 
			
		||||
                          //123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
 | 
			
		||||
                          //     123456789-123456789-123456789- 123456789-123456789-123456789-123456789-
 | 
			
		||||
     break;
 | 
			
		||||
   case ACOGIDOS_CUOT:
 | 
			
		||||
        fprintf( file_out, "Listado de Hermanos acogidos a cuota\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hno  Nombre (completo)            Direccion                        Antig<69>edad    Tel<65>fono\n\r\n\r");
 | 
			
		||||
     break;
 | 
			
		||||
   case RECIBE_NOTIFIC:
 | 
			
		||||
        fprintf( file_out, "Listado de hermanos que reciben notificaciones\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hno  Nombre (completo)            Direccion                        Antig<69>edad    Tel<65>fono\n\r\n\r");
 | 
			
		||||
     break;
 | 
			
		||||
   case TUNICA_HDAD:
 | 
			
		||||
        fprintf( file_out, "Listado de hermanos que poseen tunica de la hermandad\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hno Nombre (completo)             Direccion                        T<>nica\n\r\n\r");
 | 
			
		||||
                          //123456789-123456789-123456789-123456789-123456789-123456789-123456789-123456789-
 | 
			
		||||
                          //      123456789-123456789-123456789-123 56789-123456789-123456789-123456789-
 | 
			
		||||
     break;
 | 
			
		||||
   case PAPELETAS_SITIO:
 | 
			
		||||
        fprintf( file_out, "Listado de hermanos que Realizan la estacion de Penitencia\n\r\n\r");
 | 
			
		||||
        fprintf( file_out, "N<EFBFBD>Hno  Nombre (completo)                    Antig<69>edad    Telefono\n\r\n\r");
 | 
			
		||||
     break;
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ImprimeListaSitios(void)
 | 
			
		||||
{
 | 
			
		||||
  char buffer[500];
 | 
			
		||||
  BDatos Hnos, Hnas;
 | 
			
		||||
  char CMen;  struct textsettingstype texttypeinfo;
 | 
			
		||||
  void *Imagen;
 | 
			
		||||
  int ok = 0, enc, CtoVirgen, Insignia;
 | 
			
		||||
  long i, j;
 | 
			
		||||
  HermStruct A, B;
 | 
			
		||||
 | 
			
		||||
  FILE *file_out;
 | 
			
		||||
  file_out = stdprn;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  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( "Listado de P. Sitios" ) ) / 2 ), 165, "Listado de P. Sitios" );
 | 
			
		||||
  setcolor( NEGRO );
 | 
			
		||||
 | 
			
		||||
  outtextxy( 172, 200, "Reordenando Hermanos" );
 | 
			
		||||
 | 
			
		||||
  Hnos.AbrirReg( "datos\\hermanos.dbf", sizeof( HermStruct ) );
 | 
			
		||||
  FICHA_REGISTRO = 0;
 | 
			
		||||
  if ( Config.item_ordenado[FICHA_REGISTRO] != 8 )
 | 
			
		||||
  {
 | 
			
		||||
   Config.item_ordenado[FICHA_REGISTRO] = 8;
 | 
			
		||||
   if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
 | 
			
		||||
                                                     Error(BConfig.cError);
 | 
			
		||||
   Hnos.SortReg(ComparaRegistros);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  outtextxy( 172, 225, "Reordenando Hermanas" );
 | 
			
		||||
  Hnas.AbrirReg( "datos\\hermanas.dbf", sizeof( HermStruct ) );
 | 
			
		||||
  FICHA_REGISTRO = 1;
 | 
			
		||||
  if ( Config.item_ordenado[FICHA_REGISTRO] != 8 )
 | 
			
		||||
  {
 | 
			
		||||
   Config.item_ordenado[FICHA_REGISTRO] = 8;
 | 
			
		||||
   if ( BConfig.EscribeReg((void *)&Config, 0) != OK )
 | 
			
		||||
                                                    Error(BConfig.cError);
 | 
			
		||||
   Hnas.SortReg(ComparaRegistros);
 | 
			
		||||
  }
 | 
			
		||||
  outtextxy( 172, 250, "Fusionando Bases    " );
 | 
			
		||||
 | 
			
		||||
  ////////////// Dos Recorridos 1<> Cribar CRISTO
 | 
			
		||||
  //////////////                2<> Cribar VIRGEN
 | 
			
		||||
  for ( CtoVirgen = 0; CtoVirgen < 2; CtoVirgen++ )
 | 
			
		||||
  {
 | 
			
		||||
   fprintf( file_out, "\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r");
 | 
			
		||||
   fprintf( file_out, "> Listado de Hermanos que realizan penitencia" );
 | 
			
		||||
   fprintf( file_out, "\n\r\n\r\n\r%s", (CtoVirgen==0) ? "C R I S T O" : "V I R G E N");
 | 
			
		||||
   fprintf( file_out, "\n\r\n\r\n\r> Ordenado por antiguedad y seg<65>n insignia");
 | 
			
		||||
 | 
			
		||||
   Insignia = -1;
 | 
			
		||||
   i=0; j=0; ok = 0;
 | 
			
		||||
 | 
			
		||||
   // Empezamos a comparar con los primeros datos validos
 | 
			
		||||
   while( Hnos.LeeReg( (void *)&A, i ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
 | 
			
		||||
   while( Hnas.LeeReg( (void *)&B, j ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
 | 
			
		||||
 | 
			
		||||
   // Solo si es cierto que los datos de ambos son validos
 | 
			
		||||
   if ( Hnos.LeeReg( (void *)&A, i ) == OK && Hnas.LeeReg( (void *)&B, j ) == OK )
 | 
			
		||||
     while( !ok )
 | 
			
		||||
     {
 | 
			
		||||
       // Mientras A < B
 | 
			
		||||
       if ( ComparaRegistros( (void *)&A, (void *)&B ) < 0 )
 | 
			
		||||
       {
 | 
			
		||||
         // Si es una nueva insignia. Digo cual...
 | 
			
		||||
         if ( Insignia != A.Insignia )
 | 
			
		||||
         {
 | 
			
		||||
            Insignia = A.Insignia;
 | 
			
		||||
            fputc( 12, file_out );
 | 
			
		||||
            fprintf( file_out, "\n\r>Hermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         // Imprimo y avanzo hermanos
 | 
			
		||||
         sprintf( buffer, "%s %s", A.Apellido1, A.Apellido2 );
 | 
			
		||||
         buffer[22] = '\0';
 | 
			
		||||
         fprintf( file_out, "%4ld  %-15s  %-22s  %02d-%02d-%04d  %-15s\n\r",
 | 
			
		||||
            A.NHno, A.Nombre, buffer, (int)A.Antig.da_day, (int)A.Antig.da_mon, (int)A.Antig.da_year, A.Telefono1 );
 | 
			
		||||
 | 
			
		||||
         i++;
 | 
			
		||||
         // Me coloco en el siguiente registro valido de HERMANOS
 | 
			
		||||
         while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
 | 
			
		||||
 | 
			
		||||
         // que no hay, po fale, me salgo
 | 
			
		||||
         if ( enc != OK ) ok = 1;
 | 
			
		||||
 | 
			
		||||
       } else {
 | 
			
		||||
 | 
			
		||||
         // Si es una nueva insignia. Digo cual...
 | 
			
		||||
         if ( Insignia != B.Insignia )
 | 
			
		||||
         {
 | 
			
		||||
           Insignia = B.Insignia;
 | 
			
		||||
           fputc( 12, file_out );
 | 
			
		||||
           fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         // Imprimo y avanzo hermanas
 | 
			
		||||
         sprintf( buffer, "%s %s", B.Apellido1, B.Apellido2 );
 | 
			
		||||
         buffer[22] = '\0';
 | 
			
		||||
         fprintf( file_out, "%4ld  %-15s  %-22s  %02d-%02d-%04d  %-15s\n\r",
 | 
			
		||||
             B.NHno, B.Nombre, buffer, (int)B.Antig.da_day, (int)B.Antig.da_mon, (int)B.Antig.da_year, B.Telefono1 );
 | 
			
		||||
 | 
			
		||||
         j++;
 | 
			
		||||
         // Me coloco en el siguiente registro valido de HERMANAS
 | 
			
		||||
         while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
 | 
			
		||||
         // que no hay, po fale, me salgo
 | 
			
		||||
         if ( enc != OK ) ok = 1;
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
     };
 | 
			
		||||
 | 
			
		||||
   // Imprimo la base que quede por imprimir
 | 
			
		||||
   if ( Hnos.LeeReg( (void *)&A, i ) == OK )
 | 
			
		||||
   {
 | 
			
		||||
     // Siguiente dato valido de hermanos
 | 
			
		||||
     while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
 | 
			
		||||
 | 
			
		||||
     while ( enc == OK )
 | 
			
		||||
     {
 | 
			
		||||
       // Falta mostrar la insignia ???
 | 
			
		||||
       if ( Insignia != A.Insignia )
 | 
			
		||||
       {
 | 
			
		||||
        Insignia = A.Insignia;
 | 
			
		||||
        fputc( 12, file_out );
 | 
			
		||||
        fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
       // Imprimo hermanos
 | 
			
		||||
       sprintf( buffer, "%s %s", A.Apellido1, A.Apellido2 );
 | 
			
		||||
       buffer[22] = '\0';
 | 
			
		||||
       fprintf( file_out, "%4ld  %-15s  %-22s  %02d-%02d-%04d  %-15s\n\r",
 | 
			
		||||
           A.NHno, A.Nombre, buffer, (int)A.Antig.da_day, (int)A.Antig.da_mon, (int)A.Antig.da_year, A.Telefono1 );
 | 
			
		||||
 | 
			
		||||
       i++;
 | 
			
		||||
       // Siguiente dato valido
 | 
			
		||||
       while( ( enc = Hnos.LeeReg( (void *)&A, i ) ) == OK && ( A.Varios.RealPenit==0 || (A.Varios.RealPenit && A.Varios.CtoVirgen != CtoVirgen ) ) ) i++;
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
   } else {
 | 
			
		||||
 | 
			
		||||
     // Siguiente dato valido de HERMANAS
 | 
			
		||||
     while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
 | 
			
		||||
 | 
			
		||||
     while ( enc == OK )
 | 
			
		||||
     {
 | 
			
		||||
       // Se conoce la insignia???
 | 
			
		||||
       if ( Insignia != B.Insignia )
 | 
			
		||||
       {
 | 
			
		||||
        Insignia = B.Insignia;
 | 
			
		||||
        fputc( 12, file_out );
 | 
			
		||||
        fprintf( file_out, "\n\rHermanos con insignia: %s\n\r\n\r", Config.Insignia[Insignia+20*CtoVirgen].NInsignia );
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
       // Imprimo hermanos
 | 
			
		||||
       sprintf( buffer, "%s %s", B.Apellido1, B.Apellido2 );
 | 
			
		||||
       buffer[22] = '\0';
 | 
			
		||||
       fprintf( file_out, "%4ld  %-15s  %-22s  %02d-%02d-%04d  %-15s\n\r",
 | 
			
		||||
           B.NHno, B.Nombre, buffer, (int)B.Antig.da_day, (int)B.Antig.da_mon, (int)B.Antig.da_year, B.Telefono1 );
 | 
			
		||||
 | 
			
		||||
       j++;
 | 
			
		||||
       while( ( enc = Hnas.LeeReg( (void *)&B, j ) ) == OK && ( B.Varios.RealPenit==0 || (B.Varios.RealPenit && B.Varios.CtoVirgen != CtoVirgen ) ) ) j++;
 | 
			
		||||
     };
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
   Hnos.CerrarReg();
 | 
			
		||||
   Hnas.CerrarReg();
 | 
			
		||||
 | 
			
		||||
  settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
 | 
			
		||||
  putimage( 170, 165, Imagen, COPY_PUT );
 | 
			
		||||
  free( Imagen );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ImprimeFacturas(void)
 | 
			
		||||
{
 | 
			
		||||
 long i;
 | 
			
		||||
 char pag;
 | 
			
		||||
 | 
			
		||||
 int Center, lineas = 2, CMen, PagInicio, PagFin;
 | 
			
		||||
 | 
			
		||||
 char Mensaje[][50] = { "Para interrumpir", "pulse una tecla" };
 | 
			
		||||
 | 
			
		||||
 OptenPaginasIniFin( &PagInicio, &PagFin, BHerm.Registros() );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos(20, "Herm.img");
 | 
			
		||||
 | 
			
		||||
  settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
  setcolor( 63 );  outtextxy( 172, 165, "Imprimiendo Facturas" );
 | 
			
		||||
  setcolor( ROJO );
 | 
			
		||||
 | 
			
		||||
  for ( CMen = 0; CMen < lineas; CMen++ )
 | 
			
		||||
  {
 | 
			
		||||
   Center= (296 - textwidth( Mensaje[CMen] ) ) / 2;
 | 
			
		||||
   outtextxy( 172+Center, 200+20*CMen, Mensaje[CMen] );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
   while ( !Comprueba_Impresora() )
 | 
			
		||||
   {
 | 
			
		||||
    if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
 | 
			
		||||
                                                                               return;
 | 
			
		||||
   }
 | 
			
		||||
  pag = 0;
 | 
			
		||||
  PagInicio--;
 | 
			
		||||
  for ( i=PagInicio; i < BHerm.Registros() && i < PagFin; i++, pag++ )
 | 
			
		||||
  {
 | 
			
		||||
   if ( pag == 3 ) { pag = 0; fputc( 12, stdprn ); }
 | 
			
		||||
   BHerm.LeeReg( (void *)&SHerm, i );   //123456789-123456789-1234567
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
 | 
			
		||||
   fprintf( stdprn, "                   %4ld  Alcal<61> de Guadaira              #%ld#", SHerm.NHno, Config.CuotaBaseFam[ SHerm.Varios.CuotaFam == 0 ? 0 : 1 ] );
 | 
			
		||||
   fprintf( stdprn, "\n\r\n\r" );
 | 
			
		||||
   fprintf( stdprn, "                   %02d-%02d-%04d              %d / %d", (int)FechaActual.da_day, (int)FechaActual.da_mon, (int)FechaActual.da_year,  FechaActual.da_year + 1, FechaActual.da_year);
 | 
			
		||||
   fprintf( stdprn, "\n\r\n\r\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", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "            %s%s%s%s%s", SHerm.Direccion, (SHerm.Num[0]=='\0')?"":",", SHerm.Num,
 | 
			
		||||
            (SHerm.Piso[0]=='\0')?"":",", SHerm.Piso );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "            %s (%s)", SHerm.Poblacion, SHerm.Provincia );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "            C.P. %ld", SHerm.CodP );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   if ( kbhit() )
 | 
			
		||||
   {
 | 
			
		||||
    getch();
 | 
			
		||||
    if ( Optar( 1, "CANCELAR TRABAJO?", "Desea Cancelar la impresion", "el trabajo aun no ha concluido", NULL ) )
 | 
			
		||||
                                                                                         break;
 | 
			
		||||
   }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void ImprimeEtiquetas(void)
 | 
			
		||||
{
 | 
			
		||||
 long i; char pag, buffer[80];
 | 
			
		||||
 int Center, lineas = 2, CMen;
 | 
			
		||||
 int PagInicio, PagFin;
 | 
			
		||||
 | 
			
		||||
 char Mensaje[][50] = { "Para interrumpir", "pulse una tecla" };
 | 
			
		||||
 | 
			
		||||
 OptenPaginasIniFin( &PagInicio, &PagFin, BHerm.Registros() );
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos(20, "Herm.img");
 | 
			
		||||
 | 
			
		||||
  settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
  setcolor( 63 );  outtextxy( 172, 165, "Imprimiendo Etiquetas" );
 | 
			
		||||
  setcolor( ROJO );
 | 
			
		||||
 | 
			
		||||
  for ( CMen = 0; CMen < lineas; CMen++ )
 | 
			
		||||
  {
 | 
			
		||||
   Center= (296 - textwidth( Mensaje[CMen] ) ) / 2;
 | 
			
		||||
   outtextxy( 172+Center, 200+20*CMen, Mensaje[CMen] );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   while ( !Comprueba_Impresora() )
 | 
			
		||||
  {
 | 
			
		||||
    if ( !Optar( 1, "ERROR IMPRESORA", "Encienda la impresora", "y pulse ACEPTAR para continuar", NULL ) )
 | 
			
		||||
                                                                               return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  pag = 0;
 | 
			
		||||
  PagInicio--;
 | 
			
		||||
  for ( i=PagInicio; i < BHerm.Registros() && i < PagFin; /*i+=2, */pag++ )
 | 
			
		||||
  {
 | 
			
		||||
   if ( pag >= 3*12*2 )
 | 
			
		||||
   {
 | 
			
		||||
    if ( !Optar( 1, "NUEVA PAGINA", "Por favor, realinee la pagina", "y pulse una tecla", NULL ) )
 | 
			
		||||
                 return;
 | 
			
		||||
    pag = 0;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   do { BHerm.LeeReg( (void *)&SHerm, i ); i++; } while( !SHerm.Varios.Notific && i < BHerm.Registros() );
 | 
			
		||||
   do { BHerm.LeeReg( (void *)&BHtmp,     i ); i++; } while( !SHerm.Varios.Notific && i < BHerm.Registros() );
 | 
			
		||||
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "N<EFBFBD> Hermano: %4ld                        N<> de Hermano: %4ld", SHerm.NHno, BHtmp.NHno );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   sprintf( buffer, "%s %s %s", SHerm.Nombre, SHerm.Apellido1, SHerm.Apellido2 );
 | 
			
		||||
   fprintf( stdprn, "%-37s   ", buffer );
 | 
			
		||||
   sprintf( buffer, "%s %s %s", BHtmp.Nombre, BHtmp.Apellido1, BHtmp.Apellido2 );
 | 
			
		||||
   fprintf( stdprn, "%-37s", buffer );
 | 
			
		||||
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
 | 
			
		||||
   sprintf( buffer, "%s%s%s%s%s", SHerm.Direccion, (SHerm.Num[0]=='\0')?"":",", SHerm.Num, (SHerm.Piso[0]=='\0')?"":",", SHerm.Piso );
 | 
			
		||||
   fprintf( stdprn, "%-37s   ", buffer );
 | 
			
		||||
   sprintf( buffer, "%s%s%s%s%s", BHtmp.Direccion, (BHtmp.Num[0]=='\0')?"":",", BHtmp.Num, (BHtmp.Piso[0]=='\0')?"":",", BHtmp.Piso );
 | 
			
		||||
   fprintf( stdprn, "%-37s", buffer );
 | 
			
		||||
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
 | 
			
		||||
   sprintf( buffer, "%s (%s)", SHerm.Poblacion, SHerm.Provincia );
 | 
			
		||||
   fprintf( stdprn, "%-37s   ", buffer );
 | 
			
		||||
   sprintf( buffer, "%s (%s)", BHtmp.Poblacion, BHtmp.Provincia );
 | 
			
		||||
   fprintf( stdprn, "%-37s", buffer );
 | 
			
		||||
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
   fprintf( stdprn, "C.P. %5ld                              C.P. %5ld", SHerm.CodP, BHtmp.CodP );
 | 
			
		||||
   fprintf( stdprn, "\n\r" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if ( kbhit() )
 | 
			
		||||
   {
 | 
			
		||||
    getch();
 | 
			
		||||
    if ( Optar( 1, "CANCELAR IMPRESION ?", "Desea Cancelar la impresion", "el trabajo aun no ha concluido ?", NULL ) )
 | 
			
		||||
                                                                                  break ;
 | 
			
		||||
   }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void OptenPaginasIniFin( int *Inicio, int *Fin, int NRegistros )
 | 
			
		||||
{
 | 
			
		||||
 void far *Imagen;
 | 
			
		||||
 char buffer[80];
 | 
			
		||||
 struct textsettingstype texttypeinfo;
 | 
			
		||||
 | 
			
		||||
 *Inicio = 1;
 | 
			
		||||
 *Fin    = NRegistros;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( (Imagen = malloc( JD_imagesize(170, 165, 470, 315) ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  getimage( 170, 165, 470, 315, Imagen );
 | 
			
		||||
  gettextsettings( &texttypeinfo );
 | 
			
		||||
  Imprime_Estaticos(20, "Herm.img");
 | 
			
		||||
  settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
  outtextxy( 175, 220,   "Ficha inicial:");
 | 
			
		||||
  outtextxy( 175, 260,   "Ficha final:");
 | 
			
		||||
 | 
			
		||||
  sprintf( buffer, "%d", (*Inicio) );
 | 
			
		||||
  InputCadenaG_T5(buffer, 0, 5, BLANCO, AZUL, 320, 220, 460, 240 );
 | 
			
		||||
  (*Inicio) = atoi(buffer);
 | 
			
		||||
  if ( *Inicio < 0 ) *Inicio = 0;
 | 
			
		||||
  sprintf( buffer, "%d", (*Fin) );
 | 
			
		||||
  InputCadenaG_T5(buffer, 0, 5, BLANCO, AZUL, 320, 260, 460, 280 );
 | 
			
		||||
  (*Fin   ) = atoi(buffer);
 | 
			
		||||
  if ( *Fin > NRegistros ) *Fin = NRegistros;
 | 
			
		||||
 | 
			
		||||
  putimage( 170, 165, Imagen, COPY_PUT );
 | 
			
		||||
  settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
 | 
			
		||||
 | 
			
		||||
  farfree( Imagen );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										496
									
								
								HERM_MM.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										496
									
								
								HERM_MM.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,496 @@
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Menus                                                                   *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*                M<>dulo encargado de generar menus, una vez se le pasa     *|
 | 
			
		||||
|*                el puntero a la estructura definida.                      *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                                         Fecha:  21-07-96  14.34 / 18.00  *|
 | 
			
		||||
|*                                                           23.13 / 00.30  *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <graphics.h>
 | 
			
		||||
#include "..\libs\make_bot\make_bot.h"
 | 
			
		||||
 | 
			
		||||
#undef MB_TeclaPulsada()
 | 
			
		||||
#define MB_TeclaPulsada() kbhit()
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
#include "herm.h"
 | 
			
		||||
#include "..\libs\bdatos\bdatos.hh"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define CONTRAIDO 0
 | 
			
		||||
#define EXPANDIDO 1
 | 
			
		||||
 | 
			
		||||
extern unsigned _stklen = 18432U;
 | 
			
		||||
 | 
			
		||||
extern BDatos BConfig;
 | 
			
		||||
 | 
			
		||||
extern int far Espera_TeclaRaton(void);
 | 
			
		||||
void ErrorOccurred(int errorcode);
 | 
			
		||||
 | 
			
		||||
int Topicos = 5;
 | 
			
		||||
int SubTopicos[] = { 3, 4, 4, 9, 3 };
 | 
			
		||||
void far *Fondo_Menu; int xST, yST;
 | 
			
		||||
char *email="Jose-David.Guillen@cs.us.es";
 | 
			
		||||
 | 
			
		||||
int MenuPrincipal(void);
 | 
			
		||||
 | 
			
		||||
void ContraeMenu(void);
 | 
			
		||||
void ExpandeMenu( int Menu );
 | 
			
		||||
void SeleccionaTopico(int Topico, char color);
 | 
			
		||||
void SeleccionaSubTopico( int Topico, int SubTopico, int color );
 | 
			
		||||
void CheckRaton_Topic(int *Topico, int *SubTopico, int *Menu);
 | 
			
		||||
int  GestionHermanos( char HnoHna, int Accion );
 | 
			
		||||
void LeeConfiguracion(void);
 | 
			
		||||
void OrdenaBase( char HnoHna );
 | 
			
		||||
void GestionInsignias(void);
 | 
			
		||||
void ListadosRapidos( int Tipo_de_Listado );
 | 
			
		||||
void ConfiguracionGlobal(void);
 | 
			
		||||
void Imprime_Dibujo(void);
 | 
			
		||||
 | 
			
		||||
 int handler(int errval,int ax,int bp,int si);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void main(void)
 | 
			
		||||
{
 | 
			
		||||
 int Item;
 | 
			
		||||
 struct date FechaActual;
 | 
			
		||||
 getdate( &FechaActual );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( carga_botones( "Herm.img" ) != OK )
 | 
			
		||||
                                        return;
 | 
			
		||||
 LeeConfiguracion();
 | 
			
		||||
 | 
			
		||||
 Initialize( 9, 2 ); // Inicializa el Modo Gr<47>fico
 | 
			
		||||
 | 
			
		||||
 harderr(handler);
 | 
			
		||||
 | 
			
		||||
 True_Push = ON;                        PunteroRaton = 1;
 | 
			
		||||
 inicializa_raton_grafico( 0, 0, 639, 479 );
 | 
			
		||||
 | 
			
		||||
 while(1){
 | 
			
		||||
  Item = MenuPrincipal();
 | 
			
		||||
  switch ( Item>>8 )
 | 
			
		||||
  {
 | 
			
		||||
   // Archivo
 | 
			
		||||
   case 1:
 | 
			
		||||
        switch( Item & 0x00FF )
 | 
			
		||||
        {
 | 
			
		||||
         // Configuracion
 | 
			
		||||
         case 1:
 | 
			
		||||
              ConfiguracionGlobal();
 | 
			
		||||
              break;
 | 
			
		||||
         // Mantenimiento
 | 
			
		||||
         case 2:
 | 
			
		||||
              GestionInsignias();
 | 
			
		||||
              break;
 | 
			
		||||
         case 3:
 | 
			
		||||
              BConfig.CerrarReg();
 | 
			
		||||
              closegraph();
 | 
			
		||||
              printf("\nJos<EFBFBD> David Guill<6C>n      ||  _-<2D>FuTuRe ViSiOn<4F>-_ ");
 | 
			
		||||
              printf("\n\ne-mail: %s\n", email);
 | 
			
		||||
              return;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
   // Hermanos / Hermanas
 | 
			
		||||
   case 2:
 | 
			
		||||
   case 3:
 | 
			
		||||
        switch( Item & 0x00FF )
 | 
			
		||||
        {
 | 
			
		||||
         // Altas
 | 
			
		||||
         case ALTAS:
 | 
			
		||||
               if ( ( Item >> 8 ) == 2 )
 | 
			
		||||
                            GestionHermanos( HERMANOS, ALTAS );
 | 
			
		||||
              else
 | 
			
		||||
                            GestionHermanos( HERMANAS, ALTAS );
 | 
			
		||||
              break;
 | 
			
		||||
         // Bajas
 | 
			
		||||
         case BAJAS:
 | 
			
		||||
              if ( ( Item >> 8 ) == 2 )
 | 
			
		||||
                            GestionHermanos( HERMANOS, BAJAS );
 | 
			
		||||
              else
 | 
			
		||||
                            GestionHermanos( HERMANAS, BAJAS );
 | 
			
		||||
              break;
 | 
			
		||||
         // Consultas / Modificaciones
 | 
			
		||||
         case CONSULTAS:
 | 
			
		||||
              if ( ( Item >> 8 ) == 2 )
 | 
			
		||||
                            GestionHermanos( HERMANOS, CONSULTAS );
 | 
			
		||||
              else
 | 
			
		||||
                            GestionHermanos( HERMANAS, CONSULTAS );
 | 
			
		||||
              break;
 | 
			
		||||
         case REORDENAR:
 | 
			
		||||
              if ( ( Item >> 8 ) == 2 )
 | 
			
		||||
                            OrdenaBase( HERMANOS );
 | 
			
		||||
              else
 | 
			
		||||
                            OrdenaBase( HERMANAS );
 | 
			
		||||
              break;
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
   // Listados
 | 
			
		||||
   case 4:
 | 
			
		||||
         ListadosRapidos( ( Item & 0x00FF ) );
 | 
			
		||||
        break;
 | 
			
		||||
   // Ayuda
 | 
			
		||||
   case 5:
 | 
			
		||||
        Optar( 0, "Acerca de...", "Programa realizado por:", "Jos<EFBFBD> David Guill<6C>n || 1996", "e-mail:", "Jose-David.Guillen@cs.us.es", NULL );
 | 
			
		||||
        break;
 | 
			
		||||
  }
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
int MenuPrincipal(void)
 | 
			
		||||
{
 | 
			
		||||
  int Menu = CONTRAIDO;
 | 
			
		||||
  int Topico = 0, SubTopico = 0, ok=0;
 | 
			
		||||
 | 
			
		||||
  // Memoria para el cuadro mas grande que coja
 | 
			
		||||
  if ( ( Fondo_Menu = farmalloc( (long)(64000L/*+4*/) ) ) == NULL )
 | 
			
		||||
                                                  Error( "No hay suficiente memoria" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  // Imprime men<65> principal
 | 
			
		||||
  Imprime_Estaticos(10, "herm.img");
 | 
			
		||||
  Imprime_Dibujo();
 | 
			
		||||
 | 
			
		||||
  settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
  SeleccionaTopico( Topico, EGA_RED );
 | 
			
		||||
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
   Espera_TeclaRaton();
 | 
			
		||||
   if ( !kbhit() )
 | 
			
		||||
    CheckRaton_Topic(&Topico, &SubTopico, &Menu);
 | 
			
		||||
   else
 | 
			
		||||
   switch( getch() )
 | 
			
		||||
   {
 | 
			
		||||
    // Intro
 | 
			
		||||
    case 13:
 | 
			
		||||
         if ( Menu == CONTRAIDO )
 | 
			
		||||
         {
 | 
			
		||||
          Menu = EXPANDIDO;           ExpandeMenu( Topico );
 | 
			
		||||
          SubTopico = 0;
 | 
			
		||||
          SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
         } else {
 | 
			
		||||
          ContraeMenu();
 | 
			
		||||
          ok = 1;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    // Esc
 | 
			
		||||
    case 27:
 | 
			
		||||
         if ( Menu == EXPANDIDO )
 | 
			
		||||
         {
 | 
			
		||||
          Menu = CONTRAIDO;           ContraeMenu();
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    case  0:
 | 
			
		||||
      switch( getch() )
 | 
			
		||||
      {
 | 
			
		||||
       // Flecha Izquierda
 | 
			
		||||
       case  75:
 | 
			
		||||
       case  15:
 | 
			
		||||
            if ( Menu != CONTRAIDO )
 | 
			
		||||
                                   ContraeMenu();
 | 
			
		||||
 | 
			
		||||
             SeleccionaTopico( Topico, EGA_LIGHTGRAY );
 | 
			
		||||
             Topico--; if ( Topico<0 ) Topico = Topicos-1;
 | 
			
		||||
             SeleccionaTopico( Topico, EGA_RED       );
 | 
			
		||||
             SubTopico = 0;
 | 
			
		||||
 | 
			
		||||
            if ( Menu != CONTRAIDO )
 | 
			
		||||
            {
 | 
			
		||||
                                   ExpandeMenu( Topico );
 | 
			
		||||
                                   SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
       // Flecha Derecha
 | 
			
		||||
       case  77:
 | 
			
		||||
       case   9:
 | 
			
		||||
            if ( Menu != CONTRAIDO )
 | 
			
		||||
                                   ContraeMenu();
 | 
			
		||||
 | 
			
		||||
             SeleccionaTopico( Topico, EGA_LIGHTGRAY );
 | 
			
		||||
             Topico++; if ( Topico>=Topicos ) Topico = 0;
 | 
			
		||||
             SeleccionaTopico( Topico, EGA_RED       );
 | 
			
		||||
             SubTopico = 0;
 | 
			
		||||
 | 
			
		||||
            if ( Menu != CONTRAIDO )
 | 
			
		||||
            {
 | 
			
		||||
                                   ExpandeMenu( Topico );
 | 
			
		||||
                                   SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
       // Flecha Arriba
 | 
			
		||||
       case  72:
 | 
			
		||||
            if ( Menu == EXPANDIDO )
 | 
			
		||||
            {
 | 
			
		||||
             SeleccionaSubTopico( Topico, SubTopico, EGA_LIGHTGRAY );
 | 
			
		||||
             SubTopico--; if ( SubTopico < 0 ) SubTopico = SubTopicos[Topico]-1;
 | 
			
		||||
             SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
       // Flecha Abajo
 | 
			
		||||
       case  80:
 | 
			
		||||
            if ( Menu == EXPANDIDO )
 | 
			
		||||
            {
 | 
			
		||||
             SeleccionaSubTopico( Topico, SubTopico, EGA_LIGHTGRAY );
 | 
			
		||||
             SubTopico++; if ( SubTopico >= SubTopicos[Topico] ) SubTopico = 0;
 | 
			
		||||
             SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
            } else {
 | 
			
		||||
             Menu = EXPANDIDO;           ExpandeMenu( Topico );
 | 
			
		||||
             SubTopico = 0;
 | 
			
		||||
             SeleccionaSubTopico( Topico, SubTopico,  EGA_RED );
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
      }
 | 
			
		||||
      break;
 | 
			
		||||
   }
 | 
			
		||||
 }while(!ok);
 | 
			
		||||
 | 
			
		||||
 farfree( Fondo_Menu );
 | 
			
		||||
 return ( (Topico+1)<<8 )+(SubTopico+1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CheckRaton_Topic(int *Topico, int *SubTopico, int *Menu)
 | 
			
		||||
{
 | 
			
		||||
  // Men<65> principal
 | 
			
		||||
  if ( y_raton > 9 && y_raton < 27 )
 | 
			
		||||
  {
 | 
			
		||||
    if ( x_raton > 8 && x_raton < 90 && *Topico != 0 )
 | 
			
		||||
    {
 | 
			
		||||
       ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
 | 
			
		||||
       *Topico = 0; *SubTopico = 0;
 | 
			
		||||
       *Menu = EXPANDIDO;           ExpandeMenu( *Topico );
 | 
			
		||||
       SeleccionaTopico( *Topico, EGA_RED );
 | 
			
		||||
       SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
 | 
			
		||||
    } else
 | 
			
		||||
    if ( x_raton > 105 && x_raton < 197 && *Topico != 1 )
 | 
			
		||||
    {
 | 
			
		||||
       ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
 | 
			
		||||
       *Topico = 1; *SubTopico = 0;
 | 
			
		||||
       *Menu = EXPANDIDO;           ExpandeMenu( *Topico );
 | 
			
		||||
       SeleccionaTopico( *Topico, EGA_RED );
 | 
			
		||||
       SeleccionaSubTopico( *Topico,  *SubTopico, EGA_RED );
 | 
			
		||||
    } else
 | 
			
		||||
    if ( x_raton > 215 && x_raton < 307 && *Topico != 2 )
 | 
			
		||||
    {
 | 
			
		||||
       ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
 | 
			
		||||
       *Topico = 2; *SubTopico = 0;
 | 
			
		||||
       *Menu = EXPANDIDO;           ExpandeMenu( *Topico );
 | 
			
		||||
       SeleccionaTopico( *Topico, EGA_RED );
 | 
			
		||||
       SeleccionaSubTopico( *Topico,  *SubTopico, EGA_RED );
 | 
			
		||||
    } else
 | 
			
		||||
    if ( x_raton > 325 && x_raton < 412 && *Topico != 3 )
 | 
			
		||||
    {
 | 
			
		||||
       ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
 | 
			
		||||
       *Topico = 3; *SubTopico = 0;
 | 
			
		||||
       *Menu = EXPANDIDO;           ExpandeMenu( *Topico );
 | 
			
		||||
       SeleccionaTopico( *Topico, EGA_RED );
 | 
			
		||||
       SeleccionaSubTopico( *Topico,  *SubTopico, EGA_RED );
 | 
			
		||||
    } else
 | 
			
		||||
    if ( x_raton > 560 && x_raton < 630 && *Topico != 4 )
 | 
			
		||||
    {
 | 
			
		||||
       ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
 | 
			
		||||
       *Topico = 4; *SubTopico = 0;
 | 
			
		||||
       *Menu = EXPANDIDO;           ExpandeMenu( *Topico );
 | 
			
		||||
       SeleccionaTopico( *Topico, EGA_RED );
 | 
			
		||||
       SeleccionaSubTopico( *Topico,  *SubTopico, EGA_RED );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SeleccionaTopico(int Topico, char color)
 | 
			
		||||
{
 | 
			
		||||
  setcolor( color );
 | 
			
		||||
  switch( Topico )
 | 
			
		||||
  {
 | 
			
		||||
   case 0:
 | 
			
		||||
        rectangle(   8, 9, 90, 27 );
 | 
			
		||||
        break;
 | 
			
		||||
   case 1:
 | 
			
		||||
        rectangle( 105, 9, 197, 27 );
 | 
			
		||||
        break;
 | 
			
		||||
   case 2:
 | 
			
		||||
        rectangle( 215, 9, 307, 27 );
 | 
			
		||||
        break;
 | 
			
		||||
   case 3:
 | 
			
		||||
        rectangle( 325, 9, 412, 27 );
 | 
			
		||||
        break;
 | 
			
		||||
   case 4:
 | 
			
		||||
        rectangle( 560, 9, 630, 27 );
 | 
			
		||||
        break;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SeleccionaSubTopico( int Topico, int SubTopico, int color )
 | 
			
		||||
{
 | 
			
		||||
 setcolor( color );
 | 
			
		||||
 switch( Topico )
 | 
			
		||||
 {
 | 
			
		||||
  case 0:
 | 
			
		||||
       if ( SubTopico == 2 )
 | 
			
		||||
         rectangle( 8, 40+20*3, 157, 40+20*4 );
 | 
			
		||||
       else
 | 
			
		||||
         rectangle( 8, 40+20*SubTopico, 157, 40+20*( SubTopico + 1 ) );
 | 
			
		||||
       break;
 | 
			
		||||
  case 1:
 | 
			
		||||
       if ( SubTopico == 3 )
 | 
			
		||||
         rectangle( 108, 40+20*4, 257, 40+20*5 );
 | 
			
		||||
       else
 | 
			
		||||
         rectangle( 108, 40+20*SubTopico, 257, 40+20*(SubTopico+1) );
 | 
			
		||||
       break;
 | 
			
		||||
  case 2:
 | 
			
		||||
       if ( SubTopico == 3 )
 | 
			
		||||
         rectangle( 218, 40+20*4, 367, 40+20*5 );
 | 
			
		||||
       else
 | 
			
		||||
         rectangle( 218, 40+20*SubTopico, 367, 40+20*( SubTopico + 1 ) );
 | 
			
		||||
       break;
 | 
			
		||||
  case 3:
 | 
			
		||||
         rectangle( 328, 40+20*SubTopico, 482, 40+20*( SubTopico + 1 ) );
 | 
			
		||||
       break;
 | 
			
		||||
  case 4:
 | 
			
		||||
         rectangle( 483, 40+20*SubTopico, 627, 40+20*( SubTopico + 1 ) );
 | 
			
		||||
       break;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
void ExpandeMenu( int Menu )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 switch( Menu )
 | 
			
		||||
 {
 | 
			
		||||
  case 0:
 | 
			
		||||
       xST = 5; yST = 35;
 | 
			
		||||
       getimage( 5, 35, 160, 40+20*4+5, Fondo_Menu );
 | 
			
		||||
       setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 5, 35, 160, 40+20*4+5 );
 | 
			
		||||
       setcolor( EGA_BLACK );                   rectangle( 5, 35, 160, 40+20*4+5 );
 | 
			
		||||
       setcolor( EGA_BLUE );
 | 
			
		||||
       outtextxy(   8, 40+20*0, " Configuracion" );
 | 
			
		||||
       outtextxy(   8, 40+20*1, " Insignias    " );
 | 
			
		||||
       outtextxy(   8, 40+20*2, " -------------" );
 | 
			
		||||
       outtextxy(   8, 40+20*3, "   ( Salir )  " );
 | 
			
		||||
       break;
 | 
			
		||||
  case 1:
 | 
			
		||||
       xST = 105; yST = 35;
 | 
			
		||||
       getimage( 105, 35, 260, 40+20*5+5, Fondo_Menu );
 | 
			
		||||
       setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 105, 35, 260, 40+20*5+5 );
 | 
			
		||||
       setcolor( EGA_BLACK );                   rectangle( 105, 35, 260, 40+20*5+5 );
 | 
			
		||||
       setcolor( EGA_BLUE );
 | 
			
		||||
       outtextxy( 105, 40+20*0, " Altas de Hnos" );
 | 
			
		||||
       outtextxy( 105, 40+20*1, " Bajas de Hnos" );
 | 
			
		||||
       outtextxy( 105, 40+20*2, " Consul/Modif." );
 | 
			
		||||
       outtextxy( 105, 40+20*3, " -------------" );
 | 
			
		||||
       outtextxy( 105, 40+20*4, " Reordenar Hns" );
 | 
			
		||||
       break;
 | 
			
		||||
  case 2:
 | 
			
		||||
       xST = 215; yST = 35;
 | 
			
		||||
       getimage( 215, 35, 370, 40+20*5+5, Fondo_Menu );
 | 
			
		||||
       setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 215, 35, 370, 40+20*5+5 );
 | 
			
		||||
       setcolor( EGA_BLACK );                   rectangle( 215, 35, 370, 40+20*5+5 );
 | 
			
		||||
       setcolor( EGA_BLUE );
 | 
			
		||||
       outtextxy( 215, 40+20*0, " Altas de Hnos" );
 | 
			
		||||
       outtextxy( 215, 40+20*1, " Bajas de Hnos" );
 | 
			
		||||
       outtextxy( 215, 40+20*2, " Consul/Modif." );
 | 
			
		||||
       outtextxy( 215, 40+20*3, " -------------" );
 | 
			
		||||
       outtextxy( 215, 40+20*4, " Reordenar Hns" );
 | 
			
		||||
       break;
 | 
			
		||||
  case 3:
 | 
			
		||||
       xST = 325; yST = 35;
 | 
			
		||||
       getimage( 325, 35, 485, 40+20*9+5, Fondo_Menu );
 | 
			
		||||
       setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 325, 35, 485, 40+20*9+5 );
 | 
			
		||||
       setcolor( EGA_BLACK );                   rectangle( 325, 35, 485, 40+20*9+5 );
 | 
			
		||||
       setcolor( EGA_BLUE );
 | 
			
		||||
       outtextxy( 325, 40+20*0, " Votantes       " );
 | 
			
		||||
       outtextxy( 325, 40+20*1, " Acogido a Cuota" );
 | 
			
		||||
       outtextxy( 325, 40+20*2, " Rec. Notificac." );
 | 
			
		||||
       outtextxy( 325, 40+20*3, " Papeletas de S." );
 | 
			
		||||
       outtextxy( 325, 40+20*4, " Listado Hnos   " );
 | 
			
		||||
       outtextxy( 325, 40+20*5, " Fichas Hnos    " );
 | 
			
		||||
       outtextxy( 325, 40+20*6, " T<>nicas Hdad.  " );
 | 
			
		||||
       outtextxy( 325, 40+20*7, " Facturas       " );
 | 
			
		||||
       outtextxy( 325, 40+20*8, " Etiquetas Dir. " );
 | 
			
		||||
       break;
 | 
			
		||||
  case 4:
 | 
			
		||||
       xST = 480; yST = 35;
 | 
			
		||||
       getimage( 480, 35, 630, 40+20*3+5, Fondo_Menu );
 | 
			
		||||
       setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 480, 35, 630, 40+20*3+5 );
 | 
			
		||||
       setcolor( EGA_BLACK );                   rectangle( 480, 35, 630, 40+20*3+5 );
 | 
			
		||||
       setcolor( EGA_BLUE );
 | 
			
		||||
       outtextxy( 480, 40+20*0, " ------------" );
 | 
			
		||||
       outtextxy( 480, 40+20*1, " Creditos    " );
 | 
			
		||||
       outtextxy( 480, 40+20*2, " Acerca de..." );
 | 
			
		||||
       break;
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ContraeMenu(void)
 | 
			
		||||
{
 | 
			
		||||
 if ( Fondo_Menu != NULL )
 | 
			
		||||
      putimage( xST, yST, Fondo_Menu, COPY_PUT );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Imprime_Dibujo(void)
 | 
			
		||||
{
 | 
			
		||||
 FILE *fp;
 | 
			
		||||
 int alto, ancho; unsigned char byte;
 | 
			
		||||
 int contador;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( ( fp = fopen ( "insignia.pcx", "rb" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
  // Saltamos la cabecera
 | 
			
		||||
  fseek( fp, 128, SEEK_SET );
 | 
			
		||||
 | 
			
		||||
  for(alto=0; alto<128; alto++)
 | 
			
		||||
  {
 | 
			
		||||
    for(ancho=0; ancho<128; )
 | 
			
		||||
    {
 | 
			
		||||
      byte=getc(fp);
 | 
			
		||||
      if(byte<=0xC0)
 | 
			
		||||
      {
 | 
			
		||||
        if  ( byte != 255 )
 | 
			
		||||
                putpixel( ancho+256, alto+270, byte );
 | 
			
		||||
	ancho++;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
	contador=byte&0x3F; byte=getc(fp);
 | 
			
		||||
	for(; contador>0; contador--)
 | 
			
		||||
	{
 | 
			
		||||
          if  ( byte != 255 )
 | 
			
		||||
                putpixel( ancho+256, alto+270, byte );
 | 
			
		||||
          ancho++;
 | 
			
		||||
	}
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  fclose( fp );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										501
									
								
								HERM_UTL.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										501
									
								
								HERM_UTL.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,501 @@
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
 | 
			
		||||
#include <graphics.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <io.h>
 | 
			
		||||
#include <bios.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "..\libs\make_bot\make_bot.h"
 | 
			
		||||
#include "herm.h"
 | 
			
		||||
 | 
			
		||||
extern CONFIG Config;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void BEEP(void);
 | 
			
		||||
void Escr_Mensaje(char *Encabezado, char lineas, char Mensaje[][50] );
 | 
			
		||||
int DifDate( struct date FechaF, struct date FechaO, struct date *FechaD );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int InputCadenaG_T5(char *s, int numalp, int lmax, int cc, int cf, int X0, int Y0, int X1, int Y1)
 | 
			
		||||
{
 | 
			
		||||
  // A todas las y les sumaba antes +RoW*12 parametro que indica la linea
 | 
			
		||||
 | 
			
		||||
  int  ls;                                      // longitud cadena
 | 
			
		||||
  char Status = 0;
 | 
			
		||||
  char *s1;                                     // puntero a cadena inicial
 | 
			
		||||
  int c, ok;
 | 
			
		||||
 | 
			
		||||
  s1 = s;                                       // inicio cadena
 | 
			
		||||
 | 
			
		||||
                setfillstyle(SOLID_FILL, cf);
 | 
			
		||||
                bar(X0, Y0, X1, Y1);
 | 
			
		||||
                setcolor(cc);		outtextxy( X0, Y0, s1 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  ls = strlen ( s );                            // Longitud de actual
 | 
			
		||||
 | 
			
		||||
  if ( ls < lmax ) {
 | 
			
		||||
		setcolor(BLANCO);
 | 
			
		||||
		outtextxy( X0+textwidth( s1 ), Y0, "<EFBFBD>");
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  s += ls;                                      // se coloca en el final
 | 
			
		||||
 | 
			
		||||
  do{
 | 
			
		||||
	c = getch();                            // obtiene tecla
 | 
			
		||||
 | 
			
		||||
        if ( c == 27 ) Status = 1;
 | 
			
		||||
 | 
			
		||||
	ok = ( c == 27 || c == 13 || c == 0);              // 13 = INTRO || Especiales
 | 
			
		||||
 | 
			
		||||
	if ( c == 8  && ls > 0 && !ok ) {       //  8 = Back Space
 | 
			
		||||
		ls--;
 | 
			
		||||
		s--;
 | 
			
		||||
 | 
			
		||||
		*s = '\0';
 | 
			
		||||
 | 
			
		||||
		setfillstyle(SOLID_FILL, cf);
 | 
			
		||||
                bar(X0, Y0, X1, Y1);
 | 
			
		||||
                setcolor(cc);		outtextxy( X0, Y0, s1 );
 | 
			
		||||
		setcolor(BLANCO);
 | 
			
		||||
 | 
			
		||||
		outtextxy( X0+textwidth( s1 ), Y0, "<EFBFBD>");
 | 
			
		||||
		setcolor(cc);
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
		if ( !numalp && c >= 32 && c <= 254  && ls < lmax) {
 | 
			
		||||
 | 
			
		||||
			*s++ = c;
 | 
			
		||||
			ls++;
 | 
			
		||||
 | 
			
		||||
			*s = '\0';
 | 
			
		||||
                        setfillstyle(SOLID_FILL, cf);
 | 
			
		||||
                        bar(X0, Y0, X1, Y1);
 | 
			
		||||
                        setcolor(cc);		outtextxy( X0, Y0, s1 );
 | 
			
		||||
 | 
			
		||||
			if ( ls < lmax ) {
 | 
			
		||||
				setcolor(BLANCO);
 | 
			
		||||
				outtextxy( X0+textwidth( s1 ), Y0, "<EFBFBD>");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		} else {
 | 
			
		||||
			if ( numalp && isdigit(c)  && ls < lmax) {
 | 
			
		||||
				*s++ = c;
 | 
			
		||||
				ls++;
 | 
			
		||||
 | 
			
		||||
				*s = '\0';                              // Cero final
 | 
			
		||||
                                setfillstyle(SOLID_FILL, cf);
 | 
			
		||||
                                bar(X0, Y0, X1, Y1);
 | 
			
		||||
                                setcolor(cc);		outtextxy( X0, Y0, s1 );
 | 
			
		||||
 | 
			
		||||
				if ( ls < lmax ) {
 | 
			
		||||
					setcolor(BLANCO);
 | 
			
		||||
					outtextxy( X0+textwidth( s1 ), Y0, "<EFBFBD>");
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
		/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
		else if( c == 27 ) {*s='\0'; ok = 1; }
 | 
			
		||||
		/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
 | 
			
		||||
		else BEEP();
 | 
			
		||||
	}
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
  }while(!ok);
 | 
			
		||||
 | 
			
		||||
  ok = 1;
 | 
			
		||||
  *s = ' ';
 | 
			
		||||
  while( ok && ls >= 0 ) {
 | 
			
		||||
		if(*s==' ') { *s = '\0'; s--; ls--;
 | 
			
		||||
		} else { s++; ok = 0; }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  *s = '\0';
 | 
			
		||||
 | 
			
		||||
  while(kbhit()) getch();              // Vacia Buffer impidiendo falsas
 | 
			
		||||
					//  pulsaciones...
 | 
			
		||||
 | 
			
		||||
  return ( (Status<<8) + (ls&0x00FF) );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void BEEP(void){
 | 
			
		||||
 | 
			
		||||
	sound(440);
 | 
			
		||||
	delay(50);
 | 
			
		||||
	nosound();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
char Optar( char *texto1, char *texto2, char *texto3 )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 int ok = 0, inst = 0;
 | 
			
		||||
 struct textsettingstype textinfo;
 | 
			
		||||
 | 
			
		||||
       void *C_Texto, *C_Aceptar, *C_Cancelar;
 | 
			
		||||
 | 
			
		||||
C_Texto    = malloc( JD_imagesize(200, 212, 440, 267) );
 | 
			
		||||
C_Aceptar  = malloc( JD_imagesize(200, 270, 280, 295) );
 | 
			
		||||
C_Cancelar = malloc( JD_imagesize(360, 270, 440, 295) );
 | 
			
		||||
 | 
			
		||||
if( C_Texto == NULL || C_Aceptar == NULL || C_Cancelar == NULL)  {
 | 
			
		||||
 closegraph();
 | 
			
		||||
 cprintf("\n\rSALIENDO");
 | 
			
		||||
 cprintf("\n\rImposible encontrar %ldKbytes en el Heap",
 | 
			
		||||
							( JD_imagesize(118, 160, 521, 335) +
 | 
			
		||||
							  JD_imagesize(118, 160, 521, 335) +
 | 
			
		||||
							  JD_imagesize(118, 160, 521, 335)
 | 
			
		||||
							)
 | 
			
		||||
	);
 | 
			
		||||
 exit(SIN_MEMORIA);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
gettextsettings(&textinfo);
 | 
			
		||||
 | 
			
		||||
settextstyle(SMALL_FONT, HORIZ_DIR, 5 );
 | 
			
		||||
// settextjustify(CENTER_TEXT, CENTER_TEXT);
 | 
			
		||||
 | 
			
		||||
getimage(200, 212, 440, 267, C_Texto);
 | 
			
		||||
getimage(200, 270, 280, 295, C_Aceptar);
 | 
			
		||||
getimage(360, 270, 440, 295, C_Cancelar);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  Imprime_Estaticos(100, "herm.img");     // Imprime botones estaticos 'Seccion 20'
 | 
			
		||||
 | 
			
		||||
  Imprime_Secuencia(2);	                  // Imprime secuencia 4.
 | 
			
		||||
  Imprime_Estaticos(101, "herm.img");     // Imprime textos estaticos 'Seccion 5'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
setcolor( AZUL );
 | 
			
		||||
outtextxy( 210+( ( 230 - textwidth(texto1) ) / 2 ), 220, texto1 );
 | 
			
		||||
outtextxy( 210+( ( 230 - textwidth(texto2) ) / 2 ), 235, texto2 );
 | 
			
		||||
outtextxy( 210+( ( 230 - textwidth(texto3) ) / 2 ), 250, texto3 );
 | 
			
		||||
 | 
			
		||||
while(!ok){				  // Bucle infinito
 | 
			
		||||
 | 
			
		||||
 switch( Comprueba_Secuencia( 2, NULL ) ) {     // Iniciamos comprobacion de 2<> sec
 | 
			
		||||
 | 
			
		||||
       case  0:				  // No se pulso ningun BOTON
 | 
			
		||||
					  // Pero el raton fue presionado en
 | 
			
		||||
					  // algun sitio...
 | 
			
		||||
	       break;
 | 
			
		||||
       case -2:				  // Hay una tecla normal en BUFFER
 | 
			
		||||
	       switch( getch() ) {  // La utilizamos
 | 
			
		||||
		// ESC   ( CANCELAR )
 | 
			
		||||
		case 14:
 | 
			
		||||
			inst = 0;
 | 
			
		||||
			ok   = 1;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			break;
 | 
			
		||||
	       }
 | 
			
		||||
	       break;
 | 
			
		||||
       case -1:				  // Hay una tecla especial en BUFFER
 | 
			
		||||
	       getch();			  // La eliminamos
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Aceptar
 | 
			
		||||
       case  1:
 | 
			
		||||
	       inst = 1;
 | 
			
		||||
	       ok   = 1;
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Cancelar
 | 
			
		||||
       case  2:
 | 
			
		||||
	       inst = 0;
 | 
			
		||||
	       ok   = 1;
 | 
			
		||||
	       break;
 | 
			
		||||
       default:
 | 
			
		||||
	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
	       break;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
putimage(200, 212, C_Texto, COPY_PUT);
 | 
			
		||||
putimage(200, 270, C_Aceptar, COPY_PUT);
 | 
			
		||||
putimage(360, 270, C_Cancelar, COPY_PUT);
 | 
			
		||||
 | 
			
		||||
free ( C_Texto    );
 | 
			
		||||
free ( C_Aceptar  );
 | 
			
		||||
free ( C_Cancelar );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
settextstyle(textinfo.font, textinfo.direction, textinfo.charsize );
 | 
			
		||||
settextjustify(textinfo.horiz, textinfo.vert);
 | 
			
		||||
 | 
			
		||||
return inst;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int file_exists(char *filename)
 | 
			
		||||
{
 | 
			
		||||
  return (access(filename, 0) == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int Comprueba_Impresora(void){
 | 
			
		||||
/*
 | 
			
		||||
 unsigned int tmp;
 | 
			
		||||
 union REGS Impresora_in, Impresora_out;
 | 
			
		||||
 struct byte {
 | 
			
		||||
  int a : 1;
 | 
			
		||||
  int b : 1;
 | 
			
		||||
  int c : 1;
 | 
			
		||||
  int d : 1;
 | 
			
		||||
  int e : 1;
 | 
			
		||||
  int f : 1;
 | 
			
		||||
  int g : 1;
 | 
			
		||||
  int h : 1;
 | 
			
		||||
 };
 | 
			
		||||
 union bits {
 | 
			
		||||
  char ch;
 | 
			
		||||
  struct byte bit;
 | 
			
		||||
 } Imp_out;
 | 
			
		||||
 | 
			
		||||
 Impresora_in.h.ah = 0x02;
 | 
			
		||||
 Impresora_in.x.dx = 0x0;
 | 
			
		||||
 | 
			
		||||
 int86(0x17, &Impresora_in, &Impresora_out);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 return ( Impresora_out.h.ah ? 1 : 0 );
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 return ( biosprint(2, 0, 0) & 0x80 );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void CodigoImpresora( char *codigo )
 | 
			
		||||
{
 | 
			
		||||
 int i = 0; char code_hex[3], *endptr;
 | 
			
		||||
 code_hex[2] = '\0';
 | 
			
		||||
 | 
			
		||||
 for( i=0; codigo[i+1] != '\0'; i+=2 )
 | 
			
		||||
 {
 | 
			
		||||
  code_hex[1] = codigo[i];
 | 
			
		||||
  code_hex[2] = codigo[i+1];
 | 
			
		||||
  fputc( (int)strtol(code_hex, &endptr, 16), stdprn );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define IGNORE  0
 | 
			
		||||
#define RETRY   1
 | 
			
		||||
#define ABORT   2
 | 
			
		||||
 | 
			
		||||
 /*
 | 
			
		||||
 pragma warn -par reduces warnings which occur
 | 
			
		||||
 due to the non use of the parameters errval,
 | 
			
		||||
 bp and si to the handler.
 | 
			
		||||
 */
 | 
			
		||||
 #pragma warn -par
 | 
			
		||||
 | 
			
		||||
 int handler(int errval,int ax,int bp,int si)
 | 
			
		||||
 {
 | 
			
		||||
    static char msg[80];
 | 
			
		||||
    unsigned di;
 | 
			
		||||
    int drive;
 | 
			
		||||
    int errorno;
 | 
			
		||||
 | 
			
		||||
    di= _DI;
 | 
			
		||||
 /*
 | 
			
		||||
 if this is not a disk error then it was
 | 
			
		||||
 another device having trouble
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
    if (ax < 0)
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
       while ( !kbhit() )
 | 
			
		||||
       {
 | 
			
		||||
        sound(1000); delay(5000); nosound();
 | 
			
		||||
       }
 | 
			
		||||
       getch();
 | 
			
		||||
       /* and return to the program directly requesting abort */
 | 
			
		||||
       hardresume(RETRY);
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
 /*
 | 
			
		||||
 return to the program via dos interrupt 0x23 with abort, retry,
 | 
			
		||||
 or ignore as input by the user.
 | 
			
		||||
 */
 | 
			
		||||
    hardretn(ABORT);
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   return ABORT;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 #pragma warn +par
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SEC_OPTAR 5
 | 
			
		||||
int Optar( int optar, ... )
 | 
			
		||||
{
 | 
			
		||||
 static void far *fondo, far *fd_aceptar, far *fd_cancelar;
 | 
			
		||||
 static char Memoria = 0;
 | 
			
		||||
 | 
			
		||||
 int DEV = 0, ok = 0, linea = 0;
 | 
			
		||||
 int Center; char *buff;
 | 
			
		||||
 struct textsettingstype texttypeinfo;
 | 
			
		||||
 | 
			
		||||
 va_list ap;
 | 
			
		||||
 va_start( ap, &optar );
 | 
			
		||||
 | 
			
		||||
 if ( Memoria == 1 )
 | 
			
		||||
 {
 | 
			
		||||
  putimage( 170, 165, fondo      , COPY_PUT );
 | 
			
		||||
  putimage( 170, 320, fd_aceptar , COPY_PUT );
 | 
			
		||||
  putimage( 370, 320, fd_cancelar, COPY_PUT );
 | 
			
		||||
 | 
			
		||||
  farfree( fondo       );
 | 
			
		||||
  farfree( fd_aceptar  );
 | 
			
		||||
  farfree( fd_cancelar );
 | 
			
		||||
 | 
			
		||||
  Memoria = 0;
 | 
			
		||||
 | 
			
		||||
  if ( optar == ENCUADRE ) return DEV;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( ( fondo       = farmalloc( JD_imagesize( 170, 165, 470, 315 ) ) ) != NULL &&
 | 
			
		||||
      ( fd_aceptar  = farmalloc( JD_imagesize( 170, 320, 270, 350 ) ) ) != NULL &&
 | 
			
		||||
      ( fd_cancelar = farmalloc( JD_imagesize( 370, 320, 470, 350 ) ) ) != NULL   )
 | 
			
		||||
 {
 | 
			
		||||
   Memoria = 1;
 | 
			
		||||
 | 
			
		||||
   getimage( 170, 165, 470, 315, fondo      );
 | 
			
		||||
   getimage( 170, 320, 270, 350, fd_aceptar );
 | 
			
		||||
   getimage( 370, 320, 470, 350, fd_cancelar);
 | 
			
		||||
 | 
			
		||||
   gettextsettings( &texttypeinfo );
 | 
			
		||||
 | 
			
		||||
   Imprime_Estaticos( 150, "herm.img" );
 | 
			
		||||
 | 
			
		||||
   settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
   setcolor( 63 );
 | 
			
		||||
 | 
			
		||||
   while ( (buff = va_arg(ap, char *)) != NULL )
 | 
			
		||||
   {
 | 
			
		||||
     Center = (296 - textwidth( buff ) ) / 2;
 | 
			
		||||
     outtextxy( 172+Center, ( (linea == 0 ) ? 167 : 200 + 20*linea ), buff );
 | 
			
		||||
     linea++;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   va_end(ap);
 | 
			
		||||
 | 
			
		||||
   settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if ( optar != ENCUADRE )
 | 
			
		||||
   {
 | 
			
		||||
    ok = 0;   	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
    do {
 | 
			
		||||
      switch( Comprueba_Secuencia( SEC_OPTAR, NULL ) )
 | 
			
		||||
      {
 | 
			
		||||
        case  0:				  // No se pulso ningun BOTON
 | 
			
		||||
        case -2:
 | 
			
		||||
        case -1:
 | 
			
		||||
	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
               if ( optar == 0 ) ok = 1;
 | 
			
		||||
	       break;
 | 
			
		||||
        case  1:
 | 
			
		||||
                DEV = 1; ok = 1;
 | 
			
		||||
                break;
 | 
			
		||||
        case  2:
 | 
			
		||||
                DEV = 0; ok = 1;
 | 
			
		||||
                break;
 | 
			
		||||
      }
 | 
			
		||||
    }while( !ok );
 | 
			
		||||
 | 
			
		||||
    putimage( 170, 165, fondo      , COPY_PUT );
 | 
			
		||||
    putimage( 170, 320, fd_aceptar , COPY_PUT );
 | 
			
		||||
    putimage( 370, 320, fd_cancelar, COPY_PUT );
 | 
			
		||||
 | 
			
		||||
   farfree( fondo       );
 | 
			
		||||
   farfree( fd_aceptar  );
 | 
			
		||||
   farfree( fd_cancelar );
 | 
			
		||||
 | 
			
		||||
   Memoria = 0;
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 return DEV;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int DifDate( struct date FechaF, struct date FechaO, struct date *FechaD )
 | 
			
		||||
{
 | 
			
		||||
 struct date FechaTmp;
 | 
			
		||||
 | 
			
		||||
 FechaF.da_mon = Config.MesVotacion;
 | 
			
		||||
 | 
			
		||||
 if ( FechaO.da_year >= FechaF.da_year && FechaO.da_mon >= FechaF.da_mon )
 | 
			
		||||
 {
 | 
			
		||||
   if ( FechaD != NULL )
 | 
			
		||||
   {
 | 
			
		||||
    FechaD -> da_day  = 0;
 | 
			
		||||
    FechaD -> da_mon  = 0;
 | 
			
		||||
    FechaD -> da_year = 0;
 | 
			
		||||
   }
 | 
			
		||||
   return 0;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( FechaO.da_year == FechaF.da_year )
 | 
			
		||||
 {
 | 
			
		||||
   if ( FechaD != NULL )
 | 
			
		||||
   {
 | 
			
		||||
    FechaD -> da_day  = 0;
 | 
			
		||||
    FechaD -> da_mon  = FechaF.da_mon - FechaO.da_mon;
 | 
			
		||||
    FechaD -> da_year = 0;
 | 
			
		||||
   }
 | 
			
		||||
   return 0;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 FechaTmp.da_day   = 0;
 | 
			
		||||
 FechaTmp.da_year  = 0;
 | 
			
		||||
 | 
			
		||||
 FechaTmp.da_mon  = 12 - FechaO.da_mon;
 | 
			
		||||
 FechaTmp.da_mon +=      FechaF.da_mon;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 FechaTmp.da_year = FechaF.da_year - (FechaO.da_year + 1);
 | 
			
		||||
 FechaTmp.da_year+= FechaTmp.da_mon / 12;
 | 
			
		||||
 FechaTmp.da_mon  = FechaTmp.da_mon  % 12;
 | 
			
		||||
 | 
			
		||||
 if ( FechaD != NULL )
 | 
			
		||||
                     *FechaD = FechaTmp;
 | 
			
		||||
 | 
			
		||||
 // Esto es incorecto pero asi funcionar<61> ( Devuelvo los a<>os + 1 si hay
 | 
			
		||||
 //                                         alg<6C>n mes suelto... )
 | 
			
		||||
 return ( (FechaD -> da_mon != 0 ? 1 : 0) + FechaTmp . da_year );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								INSIGNIA.BMP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								INSIGNIA.BMP
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 17 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								INSIGNIA.PCX
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								INSIGNIA.PCX
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										116
									
								
								MENUS.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								MENUS.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,116 @@
 | 
			
		||||
 /**************************************************************************\
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Menus                                                                   *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*  Descripci<63>n:                                                            *|
 | 
			
		||||
|*                M<>dulo encargado de generar menus, una vez se le pasa     *|
 | 
			
		||||
|*                el puntero a la estructura definida.                      *|
 | 
			
		||||
|*                                                                          *|
 | 
			
		||||
|*                                         Fecha:  21-07-96  14.34 / 18.00  *|
 | 
			
		||||
 \**************************************************************************/
 | 
			
		||||
 | 
			
		||||
 #define CONTRAIDO  0
 | 
			
		||||
 #define DESPLEGADO 1
 | 
			
		||||
 | 
			
		||||
typedef struct menu
 | 
			
		||||
{
 | 
			
		||||
  char NombreTopico[80];
 | 
			
		||||
  char TExplicacion[80];
 | 
			
		||||
  char NSubTopicos;
 | 
			
		||||
  char SubTopicos[40][15];
 | 
			
		||||
  char Explicacion[80][15];
 | 
			
		||||
 | 
			
		||||
} GENERAR_MENU;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 // Archivo       Gestion de: Hermanos    Hermanas         Listados
 | 
			
		||||
 // |                         |           |                |
 | 
			
		||||
 // |Configurar               |Altas      |Altas           |Votantes
 | 
			
		||||
 // |Mantenimiento            |Bajas      |Bajas           |Papeletas
 | 
			
		||||
 // |                         |Consultas  |Consultas       |Hermanos
 | 
			
		||||
 // |Salir                    |           |                |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// 1<> byte TOPICO       2<> byte SUBTOPICO
 | 
			
		||||
int GeneraMenu( GENERAR_MENU *mi_menu, char Topicos )
 | 
			
		||||
{
 | 
			
		||||
 int Topico=0, SubTopico=0;
 | 
			
		||||
 char DespCont = CONTRAIDO;
 | 
			
		||||
 char Ok = 0;
 | 
			
		||||
 | 
			
		||||
 ImprimeMenuContraido( mi_menu );
 | 
			
		||||
 do
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
  while( !kbhit() );
 | 
			
		||||
  switch ( getch() )
 | 
			
		||||
  {
 | 
			
		||||
   // Selecciona algo
 | 
			
		||||
   case 27:
 | 
			
		||||
     if ( DespCont == CONTRAIDO )
 | 
			
		||||
       ImprimeMenuDesplegado( mi_menu[Topico] );
 | 
			
		||||
     else
 | 
			
		||||
       return ( ( (Topico+1) <<8)+(SubTopico+1) );
 | 
			
		||||
     break;
 | 
			
		||||
   // Escape
 | 
			
		||||
   case 13:
 | 
			
		||||
     if ( DespCont != CONTRAIDO )
 | 
			
		||||
            ContraeMenuDesplegado();
 | 
			
		||||
     break;
 | 
			
		||||
   case  0:
 | 
			
		||||
           switch( getch() )
 | 
			
		||||
           {
 | 
			
		||||
            // Derecha
 | 
			
		||||
            case
 | 
			
		||||
              if ( DespCont == CONTRAIDO )
 | 
			
		||||
              {
 | 
			
		||||
                              Topico = (Topico++)%Topicos;
 | 
			
		||||
                              SeleccionaMenu( Topico );
 | 
			
		||||
              } else {
 | 
			
		||||
                ContraeMenuDesplegado();
 | 
			
		||||
                Topico = (Topico++)%Topicos;
 | 
			
		||||
                ImprimeMenuDesplegado( mi_menu[Topico] );
 | 
			
		||||
              }
 | 
			
		||||
              break;
 | 
			
		||||
            // Izquierda
 | 
			
		||||
            case
 | 
			
		||||
              if ( DespCont == CONTRAIDO )
 | 
			
		||||
              {
 | 
			
		||||
                              Topico --; if ( Topico < 0 ) Topico = Topicos-1
 | 
			
		||||
                              SeleccionaMenu( mi_menu, Topico );
 | 
			
		||||
              } else {
 | 
			
		||||
                ContraeMenuDesplegado();
 | 
			
		||||
                Topico --; if ( Topico < 0 ) Topico = Topicos-1
 | 
			
		||||
                ImprimeMenuDesplegado( mi_menu[Topico] );
 | 
			
		||||
              }
 | 
			
		||||
              break;
 | 
			
		||||
            // Arriba
 | 
			
		||||
            case
 | 
			
		||||
              if ( DespCont != CONTRAIDO )
 | 
			
		||||
              {
 | 
			
		||||
               SubTopico--; if ( SubTopico < 0 ) SubTopico = NSubTopicos - 1;
 | 
			
		||||
               SeleccionaSubTopico( mi_menu, SubTopico );
 | 
			
		||||
              }
 | 
			
		||||
              break;
 | 
			
		||||
            // Abajo
 | 
			
		||||
            case
 | 
			
		||||
              if ( DespCont == CONTRAIDO )
 | 
			
		||||
                ImprimeMenuDesplegado( mi_menu[Topico] );
 | 
			
		||||
              else
 | 
			
		||||
              {
 | 
			
		||||
               SubTopico = ( SubTopico ++ ) % NSubTopicos;
 | 
			
		||||
               SeleccionaSubTopico( mi_menu, SubTopico );
 | 
			
		||||
              }
 | 
			
		||||
              break;
 | 
			
		||||
           }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 }while( 1 );
 | 
			
		||||
 | 
			
		||||
 return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										379
									
								
								ORDENA.C
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										379
									
								
								ORDENA.C
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,379 @@
 | 
			
		||||
/*
 | 
			
		||||
   Este programa forma parte del Curso de C
 | 
			
		||||
   Copyright (C) 1991 Grupo Editorial Jackson
 | 
			
		||||
   Todos los derechos reservados
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* ORDENA: comparaci<63>n entre varias t<>cnicas de ordenaci<63>n */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Este programa se linka con la librer<65>a de consola de Jackson, utilizando
 | 
			
		||||
   el fichero ORDENA.PRJ para Turbo C 2.0, u ORDENA.MAK para Quick C 2.0.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
#include "Jconio.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* prototipos de funciones: */
 | 
			
		||||
 | 
			
		||||
void ExtraeDatos(double d[], int n);
 | 
			
		||||
void MuestraDatos(double d[], int n);
 | 
			
		||||
void Seleccion(double d[], int n);
 | 
			
		||||
void Insercion(double d[], int n);
 | 
			
		||||
void BubbleSort(double d[], int n);
 | 
			
		||||
void ShellSort(double d[], int n);
 | 
			
		||||
void Quicksort(double d[], int n);
 | 
			
		||||
int  Compara(double *d1, double *d2);
 | 
			
		||||
void PulseReturn(void);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * main
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
main()
 | 
			
		||||
{
 | 
			
		||||
    enum { NDATOS = 200 };                      /*n<>mero datos a reordenar*/
 | 
			
		||||
    enum { F1 = 1059, F2, F3, F4, F5, F6 };     /*c<>digos teclas <1>*/
 | 
			
		||||
 | 
			
		||||
    double  datos[NDATOS];                      /*datos a reordenar <2>*/
 | 
			
		||||
    clock_t inicio,fin;                         /*tiempo inicial, final <3>*/
 | 
			
		||||
    char    buf[80];
 | 
			
		||||
    int     c,ok,terminado;
 | 
			
		||||
 | 
			
		||||
    srand( (unsigned int)time(NULL));               /*inicia random*/
 | 
			
		||||
    Jcursor(0);                                     /*elimina cursor*/
 | 
			
		||||
 | 
			
		||||
    do {
 | 
			
		||||
        Jclrscr();                                  /*borra pantalla*/
 | 
			
		||||
        Jclrkey();                                  /*y buffer teclado*/
 | 
			
		||||
        Jputs("\r\n\n\n\n- Comparaci<63>n entre t<>cnicas de ordenaci<63>n -\r\n\n"
 | 
			
		||||
            "  F1) Ordenaci<63>n por selecci<63>n\r\n"
 | 
			
		||||
            "  F2) Ordenaci<63>n por inserci<63>n\r\n"
 | 
			
		||||
            "  F3) Burbuja\r\n"
 | 
			
		||||
            "  F4) Shell\r\n"
 | 
			
		||||
            "  F5) Quicksort\r\n"
 | 
			
		||||
            "  F6) Salir\r\n\n"
 | 
			
		||||
            "Seleccione F1..F6: ");
 | 
			
		||||
        do {                                        /*lee tecla v<>lida*/
 | 
			
		||||
            c = Jgetkey(1);
 | 
			
		||||
            ok = (c >= F1 && c <= F6);              /*(est<73>n en orden) <4>*/
 | 
			
		||||
            if (! ok)  Jputch('\a');
 | 
			
		||||
        } while (! ok);
 | 
			
		||||
        terminado = (c == F6);
 | 
			
		||||
 | 
			
		||||
        if (! terminado) {
 | 
			
		||||
            ExtraeDatos(datos,NDATOS);              /*datos a reordenar*/
 | 
			
		||||
            Jclrscr();                              /*los imprime*/
 | 
			
		||||
            Jputs("Extracci<EFBFBD>n aleatoria de datos para ordenar:\r\n\n");
 | 
			
		||||
            MuestraDatos(datos,NDATOS);
 | 
			
		||||
 | 
			
		||||
            Jclrscr();
 | 
			
		||||
            inicio = clock();                       /*tiempo inicial*/
 | 
			
		||||
            if (c == F1) {                          /*ejecuta ord. elegida*/
 | 
			
		||||
                Seleccion(datos, NDATOS);
 | 
			
		||||
            } else if (c == F2) {
 | 
			
		||||
                Insercion(datos,NDATOS);
 | 
			
		||||
            } else if (c == F3) {
 | 
			
		||||
                BubbleSort(datos,NDATOS);
 | 
			
		||||
            } else if (c == F4) {
 | 
			
		||||
                ShellSort(datos,NDATOS);
 | 
			
		||||
            } else if (c == F5) {
 | 
			
		||||
                Quicksort(datos,NDATOS);
 | 
			
		||||
            }
 | 
			
		||||
            fin = clock();                          /*tiempo final <5>*/
 | 
			
		||||
            sprintf(buf,"ejecutado en %3.2f segundos.\r\n\n",
 | 
			
		||||
                    ((double)(fin-inicio))/CLK_TCK);
 | 
			
		||||
            Jputs(buf);
 | 
			
		||||
            MuestraDatos(datos,NDATOS);             /*imprime datos en orden*/
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    } while (! terminado);
 | 
			
		||||
 | 
			
		||||
    Jclrscr();                                      /*borra pantalla*/
 | 
			
		||||
    Jcursor(1);                                     /*muestra cursor*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre main:
 | 
			
		||||
    <1> Como los c<>digos de las teclas indicadas son n<>meros progresivos,
 | 
			
		||||
        basta con asignar el primero. enum se ocupa despu<70>s autom<6F>ticamente
 | 
			
		||||
        de asignar valores crecientes (1060,1061,...) a las siguientes
 | 
			
		||||
        constantes.
 | 
			
		||||
    <2> Utilizamos un array de double porque la reordenaci<63>n de un array int
 | 
			
		||||
        es demasiado r<>pida. Las comparaciones y asignaciones de double dan
 | 
			
		||||
        una mejor idea del comportamiento t<>pico en condiciones reales.
 | 
			
		||||
    <3> Utilizamos clock en vez de time para obtener una mayor resoluci<63>n
 | 
			
		||||
        (cerca de 1/18.2 segundos en los PC). La funci<63>n time tiene, sin
 | 
			
		||||
        embargo, y siempre en los IBM PC y compatibles, una resoluci<63>n
 | 
			
		||||
        t<>pica de un segundo.
 | 
			
		||||
    <4> Funciona porque los c<>digos de las teclas F1..F6 son n<>meros enteros
 | 
			
		||||
        progresivos (ver nota 1).
 | 
			
		||||
    <5> Dividiendo el tiempo empleado para la constante CLK_TCK (definida en
 | 
			
		||||
        <time.h>), se obtiene el tiempo en segundos. Recuerde el uso de
 | 
			
		||||
        (double) para asegurar que la divisi<73>n se ejecute en double, evitando
 | 
			
		||||
        el riesgo de una divisi<73>n entera que perder<65>a la parte fraccionaria
 | 
			
		||||
        (dependiendo de como est<73> definido CLK_TCK, es mejor no arriesgarse
 | 
			
		||||
        y utilizar double).
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * ExtraeDatos: extrae n enteros casuales en el array d[].
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void ExtraeDatos(double d[], int n)
 | 
			
		||||
{
 | 
			
		||||
    int i;
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < n; i++) {                       /*en cada elemento*/
 | 
			
		||||
        d[i] = rand()/100.0;                        /*un double casual <1>*/
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre ExtraeDatos:
 | 
			
		||||
    <1> Pone dos cifras decimales s<>lo con fines est<73>ticos: los valores de
 | 
			
		||||
        los datos no interesan, basta que vengan ordenados correctamente.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * MuestraDatos: muestra los n enteros contenidos en el array d[].
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void MuestraDatos(double d[], int n)
 | 
			
		||||
{
 | 
			
		||||
    int  i;
 | 
			
		||||
    char buf[80];
 | 
			
		||||
 | 
			
		||||
    for (i = 0; i < n; i++) {                       /*por cada elemento*/
 | 
			
		||||
        sprintf(buf,"%7.2f",d[i]);                  /*imprime en 7 espacios*/
 | 
			
		||||
        if(Jposx() > 72) {                          /*a sig. l<>n. si no est<73>*/
 | 
			
		||||
            Jputs("\r\n");
 | 
			
		||||
        }
 | 
			
		||||
        Jputs(buf);                                 /*muestra dato*/
 | 
			
		||||
    }
 | 
			
		||||
    Jputs("\r\n");
 | 
			
		||||
    PulseReturn();                                  /*espera un Return*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * Seleccion: reordena por selecci<63>n el array d[] de n elementos.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void Seleccion(double d[], int n)     /*<1>*/
 | 
			
		||||
{
 | 
			
		||||
    int    i,j,imin;
 | 
			
		||||
    double temp;
 | 
			
		||||
 | 
			
		||||
    Jputs("Ordenaci<EFBFBD>n por selecci<63>n en curso...");
 | 
			
		||||
    for (i = 0; i < n; i++) {                      /*para cada n<>mero*/
 | 
			
		||||
        imin = i;                                  /*<2A>ndice m<>nimo de i <2>*/
 | 
			
		||||
        for (j = i+1; j < n; j++) {
 | 
			
		||||
            if (d[j] < d[imin]) {                  /*recuerda <20>ndice m<>nimo*/
 | 
			
		||||
                imin = j;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        temp = d[i];                               /*intercamb. con m<>n. <3>*/
 | 
			
		||||
        d[i] = d[imin];
 | 
			
		||||
        d[imin] = temp;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre Selecci<63>n:
 | 
			
		||||
    <1> A partir del primer elemento del array, se selecciona el elemento de
 | 
			
		||||
        valor m<>s bajo y se coloca en primer lugar, intercambi<62>ndolo con el
 | 
			
		||||
        que estaba en primer lugar; despu<70>s se avanza i al segundo elemento,
 | 
			
		||||
        se busca el nuevo m<>nimo y se intercambia con el segundo, etc<74>tera.
 | 
			
		||||
        En la pr<70>ctica, se seleccionan los elementos uno cada vez en orden
 | 
			
		||||
        creciente, y se colocan a partir del inicio del array.
 | 
			
		||||
    <2> imin es el <20>ndice del elemento de valor m<>s bajo entre los que ya hay
 | 
			
		||||
        para ordenar. Para buscar el elemento de valor m<>s bajo, se supone
 | 
			
		||||
        que es el primero (imin = i). Si despu<70>s encuentra uno m<>s bajo, se
 | 
			
		||||
        cambia imin de forma que contenga el <20>ndice del elemento m<>s bajo.
 | 
			
		||||
    <3> Para el intercambio es necesaria una variable intermedia: el C no
 | 
			
		||||
        tiene instrucciones para intercambiar dos variables, y una funci<63>n
 | 
			
		||||
        ser<65>a demasiado ineficaz.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * Insercion: reordena por inserci<63>n el array d[] de n elementos.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void Insercion(double d[], int n)    /*<1>*/
 | 
			
		||||
{
 | 
			
		||||
    int    i,j;
 | 
			
		||||
    double z;
 | 
			
		||||
 | 
			
		||||
    Jputs("Ordenaci<EFBFBD>n por inserci<63>n en curso...");
 | 
			
		||||
    for (i = 1; i < n; i++) {
 | 
			
		||||
        z = d[i];                                   /*n<>m. a insertar <2>*/
 | 
			
		||||
        j = i;                                      /*busca hacia atr<74>s*/
 | 
			
		||||
        while (j > 0 && d[j-1] > z) {               /*<3>*/
 | 
			
		||||
            d[j] = d[j-1];                          /*hace sitio <4>*/
 | 
			
		||||
            j--;
 | 
			
		||||
        }
 | 
			
		||||
        d[j] = z;                                   /*inserta*/
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre Inserci<63>n:
 | 
			
		||||
    <1> Cada elemento se inserta en el lugar adecuado entre los ya
 | 
			
		||||
        ordenados. Al principio se considera ordenado s<>lo el primer elemento,
 | 
			
		||||
        por lo que se parte del segundo. Cada elemento se inserta como
 | 
			
		||||
        cuando se ordena una mano de cartas de una baraja.
 | 
			
		||||
    <2> z es el valor a insertar en el lugar adecuado entre los anteriores.
 | 
			
		||||
    <3> Vuelve hacia atr<74>s entre los elementos ya ordenados hasta que no
 | 
			
		||||
        encuentra uno menor o igual a z. z puede insertarse por lo tanto
 | 
			
		||||
        justo despu<70>s del elemento encontrado. Recuerde que si la primera
 | 
			
		||||
        condici<63>n (j > 0) no es cierta, la segunda ni siquiera se prueba,
 | 
			
		||||
        evitando as<61> acceder a un elemento inexistente del array d[].
 | 
			
		||||
    <4> Mientras va hacia atr<74>s, coloca delante los elementos aprovechando
 | 
			
		||||
        el lugar en el que estaba z. De este modo, cuando encuentra el lugar
 | 
			
		||||
        adecuado s<>lo debe escribir en <20>l z (el contenido original ya se ha
 | 
			
		||||
        colocado delante).
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * BubbleSort: reordena por intercambios el array d[] de n elementos.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void BubbleSort(double d[], int n)    /*<1>*/
 | 
			
		||||
{
 | 
			
		||||
    int    i,intercambio;
 | 
			
		||||
    double temp;
 | 
			
		||||
 | 
			
		||||
    Jputs("Ordenaci<EFBFBD>n por burbuja en curso...");
 | 
			
		||||
    do {
 | 
			
		||||
        intercambio = 0;
 | 
			
		||||
        for (i = 1; i < n; i++) {                   /*explora por pares*/
 | 
			
		||||
            if (d[i] < d[i-1]) {
 | 
			
		||||
                temp = d[i];
 | 
			
		||||
                d[i] = d[i-1];
 | 
			
		||||
                d[i-1] = temp;
 | 
			
		||||
                intercambio = 1;                    /*e indica <2>*/
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    } while (intercambio);                          /*sale si no intercambia*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre BubbleSort:
 | 
			
		||||
    <1> A partir del primer par de elementos, el array se explora comparando
 | 
			
		||||
        pares de elementos adyacentes. Si no est<73>n bien ordenados, se
 | 
			
		||||
        intercambian entre ellos. Se repite el procedimiento hasta que en
 | 
			
		||||
        una pasada no se realiza ning<6E>n intercambio, porque los elementos
 | 
			
		||||
        est<73>n todos en orden.
 | 
			
		||||
    <2> El flag (variable l<>gica) intercambio sirve para indicar que se ha
 | 
			
		||||
        realizado al menos un intercambio, y por ello se debe dar otra pasada.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * ShellSort: reordena por Shell sort el array d[] de n elementos.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void ShellSort(double d[], int n)    /*<1>*/
 | 
			
		||||
{
 | 
			
		||||
    int    dist;   /*distancia entre los elementos a ordenar en una pasada*/
 | 
			
		||||
    int    i,j;
 | 
			
		||||
    double z;
 | 
			
		||||
 | 
			
		||||
    Jputs("Ordenaci<EFBFBD>n Shell en curso...");
 | 
			
		||||
    for (dist = 1; dist < n; dist = dist*3+1)       /*distancia inicial <2>*/
 | 
			
		||||
        ;
 | 
			
		||||
 | 
			
		||||
    while ( (dist = dist/3) > 0) {                  /*hasta distancia 1*/
 | 
			
		||||
        for (i = dist; i < n; i++) {                /*<3>*/
 | 
			
		||||
            z = d[i];                               /*n<>m. a insertar*/
 | 
			
		||||
            j = i;                                  /*busca hacia atr<74>s*/
 | 
			
		||||
            while (j-dist >= 0 && d[j-dist] > z) {
 | 
			
		||||
                d[j] = d[j-dist];                   /*hace sitio*/
 | 
			
		||||
                j -= dist;
 | 
			
		||||
            }
 | 
			
		||||
            d[j] = z;                               /*inserta*/
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre ShellSort:
 | 
			
		||||
    <1> Se realiza una ordenaci<63>n por inserci<63>n considerando s<>lo un elemento
 | 
			
		||||
        cada dist elementos, partiendo con dist bastante grande. Esto coloca
 | 
			
		||||
        r<>pidamente hacia los extremos los elementos que tienen que moverse
 | 
			
		||||
        mucho para lograr colocarse en su lugar adecuado. dist se reduce
 | 
			
		||||
        despu<70>s gradualmente hasta 1, es decir, a una ordenaci<63>n por
 | 
			
		||||
        inserci<63>n, que sin embargo es rapid<69>sima, porque los elementos est<73>n
 | 
			
		||||
        ya en sus lugares correctos.
 | 
			
		||||
    <2> Una secuencia particularmente eficaz para dist es (al rev<65>s) la
 | 
			
		||||
        serie 1, 4, 13, 40, 121, ... (multiplica por tres y a<>ade uno).
 | 
			
		||||
        Observe que todo el trabajo se hace en la misma for: la instrucci<63>n
 | 
			
		||||
        dependiente de for es una instrucci<63>n vac<61>a.
 | 
			
		||||
    <3> El ciclo interno es una ordenaci<63>n normal por inserci<63>n, s<>lo que se
 | 
			
		||||
        considera <20>nicamente un elemento cada dist.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * Quicksort: reordena con Quicksort el array d[] de n elementos.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void Quicksort(double d[], int n)
 | 
			
		||||
{
 | 
			
		||||
    Jputs("Ordenaci<EFBFBD>n Quicksort en curso...");
 | 
			
		||||
    qsort(d,n,sizeof(d[0]),
 | 
			
		||||
          (int(*)(const void*, const void*)) Compara);    /*<1>*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***** Compara: compara dos elementos, por Quicksort. *****/
 | 
			
		||||
 | 
			
		||||
int Compara(double *d1, double *d2)
 | 
			
		||||
{
 | 
			
		||||
    if (*d1 > *d2)  return 1;                       /*<2>*/
 | 
			
		||||
    else if (*d1 < *d2)  return -1;
 | 
			
		||||
    else return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Notas sobre Quicksort:
 | 
			
		||||
    <1> En este complejo programa se declara que Compara es un puntero a una
 | 
			
		||||
        funci<63>n que recibe dos punteros a void y devuelve un int. Es necesario
 | 
			
		||||
        con los compiladores 100% ANSI porque la funci<63>n de librer<65>a qsort no
 | 
			
		||||
        puede conocer con anticipaci<63>n el tipo exacto de los argumentos que
 | 
			
		||||
        debe pasarle a la funci<63>n de comparaci<63>n, y por ello los declara como
 | 
			
		||||
        punteros a void. El programa finje que los argumentos son del tipo
 | 
			
		||||
        deseado por qsort, aunque en realidad sean de otro tipo (en este caso,
 | 
			
		||||
        se trata de punteros a double).
 | 
			
		||||
        Obviamente, haci<63>ndolo de esta forma se impide al compilador que
 | 
			
		||||
        controle la exactitud de la llamada; por ello es necesario prestar
 | 
			
		||||
        mucha atenci<63>n. Como alternativa, se podr<64>a modificar la declaraci<63>n
 | 
			
		||||
        de Compara utilizando void* y efectuando en su interior los pasos de
 | 
			
		||||
        void* a double*.
 | 
			
		||||
    <2> No se puede hacer simplemente *d1-*d2, porque el valor devuelto por
 | 
			
		||||
        la funci<63>n debe ser un int: se perder<65>a la parte fraccionaria y
 | 
			
		||||
        n<>meros como 12.47 y 12.34 (distintos s<>lo en su parte fraccionaria)
 | 
			
		||||
        ser<65>an considerados iguales. De este modo, entre otras cosas, la
 | 
			
		||||
        ejecuci<63>n es m<>s r<>pida. Se aceptan tres return, ya que dadas las
 | 
			
		||||
        exiguas dimensiones de la funci<63>n, no hay problemas de legibilidad.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/********************************************************************
 | 
			
		||||
 * PulseReturn: espera una tecla Return.
 | 
			
		||||
 ********************************************************************/
 | 
			
		||||
 | 
			
		||||
void PulseReturn(void)
 | 
			
		||||
{
 | 
			
		||||
    Jclrkey();
 | 
			
		||||
    Jputs("\r\nPulse Return para continuar: ");
 | 
			
		||||
    while (Jgetkey(1) != '\r') {
 | 
			
		||||
        Jputch('\a');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#HERM 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*11/11/1991* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								SUPERVGA.OBJ
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								SUPERVGA.OBJ
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user