CATALOGO/CPEDIDOS.CPP
2021-09-03 17:43:05 +02:00

993 lines
28 KiB
C++
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

///////////////////////////////////////////////////////////////////////////
//// Nombre: CPedidos.CPP ///
//// Modulo: Perteneciente a Catalogo.CPP ///
//// Descripci¢n: M¢dulo para editar o modificar los pedidos ///
//// enlazados a este m¢dulo por CaddView.CPP ///
//// ///
//// Autor: Jos David Guilln Dominguez ///
//// Fecha: 22 - 12 - 1994 ///
//// ///
//// Comentario: ///
//// ///
//// ///
//// Compilador Borland C++ 3.0 ///
///////////////////////////////////////////////////////////////////////////
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
///////////////////////////////////////////////////////////////////////////
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ//
///////////////////////////////////////////////////////////////////////////
struct pedidos_descripcion {
unsigned int n_records; // n§ de grabaciones en el fichero
char nombre[24+1]; // Nombre 24 digitos + NULL
char apelli[21+1]; // Apellidos 21 digitos + NULL
char direcc[21+1]; // Direcci¢n 21 digitos + NULL
long telefono; // Telfono 5 digitos permitidos
char cpu[10 + 1]; // C.P.U. 10 digitos + NULL
int ram; // R.A.M 2 digitos permitidos
int hd; // HD. 4 digitos permitidos
};
struct pedidos_datos {
unsigned int record_zone ; int record_name;
char nombre[13+1] ; char zip[3+1] ; int kbytes ;
};
struct pedidos_descripcion JD_dp; // Descripci¢n...
struct pedidos_datos JD_dt; // Datos...
FILE *JD_p; // Fichero Pedidos
// Variables de posici¢n y registro
int CurrRowP, CurrColP;
unsigned int CurrTopLineP;
int CurrRowPD, CurrColPD= 1;
char ArchivoPedidos[]="CPedidos.DAT";
///////////////////////////////////////////////////////////////////////////
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ//
///////////////////////////////////////////////////////////////////////////
extern struct boton { int left; int up; int right; int down; };
extern int boton_izq; extern int boton_der;
extern int x_raton; extern int y_raton;
extern int raton;
extern int bpush;
extern int sb;
extern int InputCadenaG(char *s, int numalp, int lmax, int px, int py, int cc, int cf);
extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py);
extern void ImprimeBoton2 (int fill, int cdf, int cs1, int cs2, struct boton parm);
extern int CheckButon(int nb, struct boton menu[]);
extern void Sound_SN(char *headfile);
extern void BorraViewPort(int view);
extern void desactiva_raton(void);
extern void activa_raton(void);
void EditarModificarPedidos(void);
void EditCursorPD(int ShowHide);
void EditCursorP(int ShowHide);
void PrintLineP(int permiso);
void PrintWholeScreenP(void);
void CreaPresentacion(void);
void DeleteRecordP(void);
void AddRecordP(void);
void EditItemPD(void);
void EditItemP(void);
void MoveDownP(void);
void PutLineP(void);
void GetLineP(void);
void MoveUpP(void);
void Print_in_Printer(void);
void EditarModificarPedidos(void){
union REGS ent, sal;
int finished, key, swap = 1;
CurrRowP = 1; CurrColP = 1; CurrTopLineP = 1;
CurrRowPD= 1;
struct boton menu[11];
menu[0]. left = 217; menu[0]. up = 34; menu[0]. right = 297; menu[0]. down = 65;
menu[1]. left = 217; menu[1]. up = 66; menu[1]. right = 297; menu[1]. down = 97;
menu[2]. left = 217; menu[2]. up = 98; menu[2]. right = 297; menu[2]. down = 129;
menu[3]. left = 217; menu[3]. up = 130; menu[3]. right = 256; menu[3]. down = 149;
menu[4]. left = 258; menu[4]. up = 130; menu[4]. right = 297; menu[4]. down = 149;
menu[5]. left = 217; menu[5]. up = 150; menu[5]. right = 256; menu[5]. down = 171;
menu[6]. left = 258; menu[6]. up = 150; menu[6]. right = 297; menu[6]. down = 171;
menu[7]. left = 217; menu[7]. up = 172; menu[7]. right = 297; menu[7]. down = 204;
menu[8]. left = 325; menu[8]. up = 150; menu[8]. right = 414; menu[8]. down = 204;
menu[9]. left = 415; menu[9]. up = 150; menu[9]. right = 503; menu[9]. down = 204;
menu[10]. left = 504; menu[10]. up = 150; menu[10]. right = 592; menu[10]. down = 204;
CreaPresentacion();
for(auto int i=0; i<11; i++) ImprimeBoton2 (1, 7, 63, 56, menu[i]);
setcolor(15);
outtextxy(222, 50 , "ADD F9 ");
outtextxy(222, 80 , "DEL F10");
outtextxy(223, 107, " SWAP ");
outtextxy(223, 115," F3 ");
outtextxy(222, 136, " UP ");
outtextxy(263, 136, "DOWN");
outtextxy(222, 156, "RePg");
outtextxy(262, 156, "AvPg");
outtextxy(222, 180, "Salir F2");
outtextxy(335, 160, "Imprimir");
outtextxy(335, 170, " F8");
outtextxy(425, 160, "Borrar y");
outtextxy(425, 170, "Salir F7");
/*
outtextxy(506, 130, "Borrar");
outtextxy(506, 140, "");
*/
setcolor(0);
outtextxy(221, 49 , "ADD F9 ");
outtextxy(221, 79 , "DEL F10");
outtextxy(222, 106, " SWAP ");
outtextxy(222, 114," F3 ");
outtextxy(221, 135, " UP ");
outtextxy(262, 135, "DOWN");
outtextxy(221, 155, "RePg");
outtextxy(261, 155, "AvPg");
outtextxy(221, 179, "Salir F2");
outtextxy(334, 159, "Imprimir");
outtextxy(334, 169, " F8");
outtextxy(424, 159, "Borrar y");
outtextxy(424, 169, "Salir F7");
/*
outtextxy(505, 129, "Borrar");
outtextxy(505, 139, "y Salir F6");
*/
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ//
//ÛÛ Comprueba apertura correcta de Pedidos o creaci¢n... ÛÛ//
//ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ//
if ( (JD_p = fopen( ArchivoPedidos, "r+b"))==NULL) {
FILE *fa;
if ( (fa = fopen( ArchivoPedidos, "wb" ) )!=NULL ) {
JD_dp. n_records = 1;
strcpy(JD_dp. nombre, "\0");
strcpy(JD_dp. apelli, "\0");
strcpy(JD_dp. direcc, "\0");
JD_dp. telefono = 0;
strcpy(JD_dp. cpu, "\0"); JD_dp. ram = 0; JD_dp. hd = 0;
rewind(fa);
fwrite(&JD_dp, sizeof(struct pedidos_descripcion), 1, fa);
JD_dt. record_zone = 0;
strcpy(JD_dt. nombre, "\0");
strcpy(JD_dt. zip, "\0");
JD_dt. kbytes = 0;
fwrite(&JD_dt, sizeof(struct pedidos_datos), 1, fa);
if (fclose(fa) == EOF ) exit(1);
}
if ( (JD_p = fopen( ArchivoPedidos, "r+b"))==NULL) {
printf("NO SE PUDO ABRIR EL FICHERO PEDIDOS EN LA 2§ PASADA");
exit(1);
}
}
if ( fread(&JD_dp, sizeof(struct pedidos_descripcion), 1, JD_p) != 1 ) { // Lee n§ de registros
// Mensaje("No se pudo LEER CPedidos.DAT", 0)
printf("NO SE PUDO LEER EL FICHERO PEDIDOS");
return;
}
setcolor(14);
outtextxy( 50 * 8 - 7, 4 * 16 - 16, JD_dp. nombre );
outtextxy( 53 * 8 - 7, 5 * 16 - 16, JD_dp. apelli );
outtextxy( 53 * 8 - 7, 6 * 16 - 16, JD_dp. direcc );
{ // Bloque abierto para la destrucci¢n prematura del string
auto char string[15];
ltoa(JD_dp. telefono, string, 10);
outtextxy( 52 * 8 - 7, 7 * 16 - 16, string );
outtextxy( 47 * 8 - 7, 8 * 16 - 16, JD_dp. cpu );
itoa(JD_dp. ram, string, 10);
outtextxy( 63 * 8 - 7, 8 * 16 - 16, string );
itoa(JD_dp. hd, string, 10);
outtextxy( 70 * 8 - 7, 8 * 16 - 16, string );
}
PrintWholeScreenP();
GetLineP();
if ( CurrRowP >= 11 ) /* N£mero de lineas DISPONIBLES */
PrintLineP(0);
else PrintLineP(1);
finished = 0;
int borrar_todo = 0;
if(raton) inicializa_raton_grafico(0, 0, 624, 464, 320, 240);
do{
if(swap) EditCursorP(0); else EditCursorPD(0);
if(raton) activa_raton();
/////////////////////// Aqui va una pausa de TECLADO y RATON al mismo TIEMPO
do{
if(raton){
ent.x.ax = 3;
int86(0x33, &ent, &sal); // lee posici¢n y estados del bot¢n
boton_izq = sal.x.bx & 1;
boton_der = (sal.x.bx >> 1) & 1;
x_raton = sal.x.cx;
y_raton = sal.x.dx;
} else boton_izq = 1;
}while( !boton_izq && !kbhit() );
if(raton) desactiva_raton();
if( kbhit() ) {
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////// ¨ Hay una tecla en buffer ...
key = getch();
if(swap) EditCursorP(1); else EditCursorPD(1);
if( isprint(key) || isspace(key) ) {
if(key!=13) ungetch(key);
if(swap) EditItemP(); else EditItemPD();
} else {
if( key == 0 ) {
key = getch();
switch ( key ) {
// INICIO
case 71:
if (swap) CurrColP = 1; else CurrRowPD = 1;
break;
// FIN
case 79:
if (swap) CurrColP = 3; else CurrRowPD = 7;
break;
// FLECHA ARRIBA
case 72:
if (swap) MoveUpP(); else {
CurrRowPD--;
if (CurrRowPD == 0) CurrRowPD = 7;
}
break;
// FLECHA ABAJO
case 80:
if (swap) MoveDownP(); else {
CurrRowPD++;
if (CurrRowPD == 8) CurrRowPD = 1;
}
break;
// FLECHA IZQUIERDA
case 75:
case 15:
if (swap) {
CurrColP--;
if (CurrColP == 0) CurrColP = 3;
} else {
CurrRowPD--;
if (CurrRowPD == 0) CurrRowPD = 7;
}
break;
// FLECHA DERECHA
case 77:
case 9:
if (swap) {
CurrColP++;
if (CurrColP == 4) CurrColP = 1;
} else {
CurrRowPD++;
if (CurrRowPD == 8) CurrRowPD = 1;
}
break;
// F3 ---> SWAP
case 61:
if(swap) swap=0; else swap = 1;
break;
// ReP g
case 73:
if(swap){
CurrRowP = 1;
if(CurrTopLineP >= 20 ) { CurrTopLineP -= 19; } else { CurrTopLineP = 1; }
if(CurrTopLineP < JD_dp.n_records ) { CurrTopLineP = 1; }
PrintWholeScreenP();
GetLineP();
}
break;
// AvP g
case 81:
if (swap) {
CurrRowP = 1;
CurrTopLineP = CurrTopLineP + 19;
if (CurrTopLineP >= JD_dp.n_records)
CurrTopLineP = JD_dp.n_records;
PrintWholeScreenP();
GetLineP();
}
break;
// F2 --> PARA SALIR
case 60:
finished = 1;
break;
// F9 --> A¥ADIR
case 67:
if (swap) AddRecordP();
break;
// F10 -> BORRAR
case 68:
if (swap) DeleteRecordP();
break;
// F8 --> Imprimir
case 66:
Print_in_Printer();
GetLineP();
break;
// F7 --> Reinicializar marcas
case 65:
borrar_todo = 1;
finished = 1;
break;
default:
if (sb) Sound_SN("catalog3");
break;
} // Fin de Swicth
} // Fin Key = 0
} // Fin Is Print Key?
} // Fin Tecla en Buffer
/////////////////////////////////////////////////////////////////////////////
//ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ//
////////////////////////// Comprueba con rat¢n ( SI ) ///////////////////////
//ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß//
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////// ... o es el RATON ?
if(raton && boton_izq==1 || boton_der==1) {
if( CheckButon(11, menu) ) {
if(swap) EditCursorP(1); else EditCursorPD(1);
switch ( bpush ) {
// F9 --> A¥ADIR
case 1:
if(swap) AddRecordP();
break;
// F10 -> BORRAR
case 2:
if(swap) DeleteRecordP();
break;
// F3 ---> SWAP
case 3:
if(swap) swap=0; else swap = 1;
break;
// FLECHA ARRIBA
case 4:
if (swap) MoveUpP(); else {
CurrRowPD--;
if (CurrRowPD == 0) CurrRowPD = 7;
}
break;
// FLECHA ABAJO
case 5:
if (swap) MoveDownP(); else {
CurrRowPD++;
if (CurrRowPD == 8) CurrRowPD = 1;
}
break;
// ReP g
case 6:
if(swap){
CurrRowP = 1;
if(CurrTopLineP >= 20 ) { CurrTopLineP -= 19; } else { CurrTopLineP = 1; }
if(CurrTopLineP < JD_dp.n_records ) { CurrTopLineP = 1; }
PrintWholeScreenP();
GetLineP();
}
break;
// AvP g
case 7:
if(swap){
CurrRowP = 1;
CurrTopLineP = CurrTopLineP + 19;
if (CurrTopLineP >= JD_dp.n_records)
CurrTopLineP = JD_dp.n_records;
PrintWholeScreenP();
GetLineP();
}
break;
// F2 --> PARA SALIR
case 8:
finished = 1;
break;
// F8 --> Imprimir
case 9:
Print_in_Printer();
GetLineP();
break;
// F7 --> Reinicializar marcas
case 10:
borrar_todo = 1;
finished = 1;
break;
// BOTON VACIO
case 11:
break;
default:
if (sb) Sound_SN("catalog3");
break;
} // Fin de Swicth
} // fin de check buttons
} // fin ¨ pulsa boton izq. || drch ?
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
}while( !finished );
fclose(JD_p); // Fichero Pedidos
if(borrar_todo) remove(ArchivoPedidos);
BorraViewPort(1);
BorraViewPort(2);
BorraViewPort(3);
} // End Function //
void EditCursorP(int ShowHide) {
int cc, cf, lmax, i, py, pxx, Px;
// registro de color actual y de fondo
// Longitud M xima y contador de bucle
// desviaci¢n vertical y reajuste final
// desviaci¢n horizontal y "" ""
if( CurrRowP >= 11 ){ Px = CurrColP + 3; py = 18 + (CurrRowP) - 10;
} else { Px = CurrColP; py = 18 + (CurrRowP); }
switch (Px) {
case 1: pxx = 28; lmax = 13; break;
case 2: pxx = 42; lmax = 3; break;
case 3: pxx = 46; lmax = 5; break;
case 4: pxx = 52; lmax = 13; break;
case 5: pxx = 66; lmax = 3; break;
case 6: pxx = 70; lmax = 5; break;
default: pxx = 1; lmax = 80; break;
}
if (!ShowHide) { cc = 63; cf = 57; } else { cc = 14; cf = 0; }
setcolor(cf); // pone color de fondo '0' para borrar
for (i=0; i<lmax; i++) // limpia linea -imprimir sobre fondo-
outtextxy( ( pxx + i ) * 8 - 7, py * 16 - 16, "Û");
setcolor(cc); // devuelve el color a su estado
switch (Px) {
case 1:
case 4:
outtextxy( ( pxx ) * 8 - 7, py * 16 - 16, JD_dt.nombre );
break;
case 2:
case 5:
outtextxy( ( pxx ) * 8 - 7, py * 16 - 16, JD_dt.zip );
break;
case 3:
case 6:
char string[6];
sprintf(string, "%5d", JD_dt.kbytes);
// itoa( (JD_dt.kbytes), string, 10 );
outtextxy( ( pxx ) * 8 - 7, py * 16 - 16, string );
break;
default:
outtextxy( ( pxx ) * 8 - 7, py * 16 - 16, "ERROR Modulo SHOW_HIDE-Cursor, secci¢n CADDVIEW, P_CATALOGO");
break;
}
}
void EditCursorPD(int ShowHide) {
int cc, cf, lmax, i, py, pxx, Px;
// registro de color actual y de fondo
// Longitud M xima y contador de bucle
// desviaci¢n vertical y reajuste final
// desviaci¢n horizontal y "" ""
switch (CurrRowPD) {
case 1: pxx = 50; py = 4; lmax = 24; break;
case 2: pxx = 53; py = 5; lmax = 21; break;
case 3: pxx = 53; py = 6; lmax = 21; break;
case 4: pxx = 52; py = 7; lmax = 9; break;
case 5: pxx = 47; py = 8; lmax = 10; break;
case 6: pxx = 63; py = 8; lmax = 2; break;
case 7: pxx = 70; py = 8; lmax = 4; break;
default: pxx = 1; py = 1; lmax = 80; break;
}
if (!ShowHide) { cc = 63; cf = 57; } else { cc = 14; cf = 0; }
setcolor(cf); // pone color de fondo '0' para borrar
for (i=0; i<lmax; i++) // limpia linea -imprimir sobre fondo-
outtextxy( ( pxx + i ) * 8 - 7, py * 16 - 16, "Û");
setcolor(cc); // devuelve el color a su estado
auto char string[15];
switch (CurrRowPD) {
case 1:
outtextxy( 50 * 8 - 7, 4 * 16 - 16, JD_dp. nombre );
break;
case 2:
outtextxy( 53 * 8 - 7, 5 * 16 - 16, JD_dp. apelli );
break;
case 3:
outtextxy( 53 * 8 - 7, 6 * 16 - 16, JD_dp. direcc );
break;
case 4:
ltoa(JD_dp. telefono, string, 10);
outtextxy( 52 * 8 - 7, 7 * 16 - 16, string );
break;
case 5:
outtextxy( 47 * 8 - 7, 8 * 16 - 16, JD_dp. cpu );
break;
case 6:
itoa(JD_dp. ram, string, 10);
outtextxy( 63 * 8 - 7, 8 * 16 - 16, string );
break;
case 7:
itoa(JD_dp. hd, string, 10);
outtextxy( 70 * 8 - 7, 8 * 16 - 16, string );
break;
default:
outtextxy( ( pxx ) * 8 - 7, py * 16 - 16, "ERROR Modulo SHOW_HIDE-Cursor, secci¢n CADDVIEW, P_CATALOGO");
break;
}
}
void EditItemP(void) {
int lmax, pxx, py, Px;
if ( CurrRowP >= 11 ){ Px = CurrColP + 3; py = 18 + (CurrRowP) - 10;
} else { Px = CurrColP; py = 18 + (CurrRowP); }
switch (Px) {
case 1: pxx = 28; lmax = 13; break;
case 2: pxx = 42; lmax = 3; break;
case 3: pxx = 46; lmax = 5; break;
case 4: pxx = 52; lmax = 13; break;
case 5: pxx = 66; lmax = 3; break;
case 6: pxx = 70; lmax = 5; break;
default: pxx = 1; lmax = 80; break;
}
switch (Px) {
case 1:
case 4:
InputCadenaG( JD_dt.nombre, 0, lmax, pxx, py, 63, 57);
break;
case 2:
case 5:
InputCadenaG( JD_dt.zip, 0, lmax, pxx, py, 63, 57);
break;
case 3:
case 6:
char cadena[] = "32766";
itoa( (JD_dt.kbytes), cadena, 10 );
do{
if ( atoi(cadena) < 0 || atoi(cadena) > 32765 ) strcpy(cadena, "0");
InputCadenaG( cadena, 1, lmax, pxx, py, 63, 57);
}while( atoi(cadena) < 0 || atoi(cadena) > 32765);
JD_dt.kbytes = atoi(cadena);
break;
}
PutLineP();
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
void EditItemPD(void) {
int lmax, pxx, py, Px;
int LSCm = sizeof(struct pedidos_descripcion);
char string[15];
switch (CurrRowPD) {
case 1:
InputCadenaG( JD_dp.nombre, 0, 24, 50, 4, 63, 57);
break;
case 2:
InputCadenaG( JD_dp.apelli, 0, 21, 53, 5, 63, 57);
break;
case 3:
InputCadenaG( JD_dp.direcc, 0, 21, 53, 6, 63, 57);
break;
case 4:
ltoa(JD_dp. telefono, string, 10);
InputCadenaG( string, 1, 9, 52, 7, 63, 57);
JD_dp. telefono = atol(string);
break;
case 5:
InputCadenaG( JD_dp.cpu, 0, 10, 47, 8, 63, 57);
break;
case 6:
itoa(JD_dp. ram, string, 10);
InputCadenaG( string, 1, 2, 63, 8, 63, 57);
JD_dp. ram = atoi(string);
break;
case 7:
itoa(JD_dp. hd, string, 10);
InputCadenaG( string, 1, 4, 70, 8, 63, 57);
JD_dp. hd = atoi(string);
break;
default:
outtextxy( ( 1 ) * 8 - 7, 2 * 16 - 16, "ERROR Modulo SHOW_HIDE-Cursor, secci¢n CADDVIEW, P_CATALOGO");
break;
}
rewind(JD_p);
fwrite(&JD_dp, LSCm, 1, JD_p);
}
void MoveUpP(void) {
if(CurrRowP==1) { if(sb) Sound_SN("catalog3"); } else {
CurrRowP--;
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
}
void MoveDownP(void) {
if( (CurrRowP + CurrTopLineP - 1) >= (JD_dp. n_records) || CurrRowP == 20 ) { if (sb) Sound_SN("catalog3"); } else {
CurrRowP++;
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
}
void PrintLineP( int permiso ) {
unsigned int CurrRecord = CurrTopLineP + CurrRowP - 1;
int py, i;
if ( CurrRowP >= 11 ) { py = 18 + (CurrRowP) - 10;
} else { py = 18 + (CurrRowP); }
setcolor(14); // devuelve el color a su estado
if ( CurrRecord <= (JD_dp.n_records) ) {
// | Me preparo para convertir
char kbytes[6]; // | los int a char
// para que puedan ser utilizados
// itoa( JD_dt.kbytes, kbytes, 10); // por outtext y outtextxy...
sprintf(kbytes, "%5d", JD_dt.kbytes);
switch(permiso) {
case 0:
outtextxy( ( 52 ) * 8 - 7, py * 16 - 16, JD_dt.nombre);
outtextxy( ( 66 ) * 8 - 7, py * 16 - 16, JD_dt.zip);
outtextxy( ( 70 ) * 8 - 7, py * 16 - 16, kbytes);
break;
case 1:
outtextxy( ( 28 ) * 8 - 7, py * 16 - 16, JD_dt.nombre);
outtextxy( ( 42 ) * 8 - 7, py * 16 - 16, JD_dt.zip);
outtextxy( ( 46 ) * 8 - 7, py * 16 - 16, kbytes);
break;
default:
outtextxy( ( 1 ) * 8 - 7, py * 16 - 16, "ERROR Modulo PrintLine, secci¢n CADDVIEW, P_CATALOGO _-JD-_");
break;
}
}
}
void DeleteRecordP(void) {
unsigned int CurrRecord;
int LSC = sizeof(struct pedidos_datos);
int LSCm = sizeof(struct pedidos_descripcion);
if (JD_dp. n_records == 1) { if (sb) Sound_SN("catalog5"); } else {
CurrRecord = CurrTopLineP + CurrRowP - 1;
JD_dp. n_records --;
unsigned int p = CurrRecord;
while(p <= JD_dp. n_records) {
fseek(JD_p, (long)LSCm + ( LSC * ( p + 1 ) - LSC ), SEEK_SET); // Se coloca
fread(&JD_dt, LSC, 1, JD_p); // Y lee
fseek(JD_p, (long)LSCm + ( LSC * p - LSC ), SEEK_SET); // Se coloca
fwrite(&JD_dt, LSC, 1, JD_p); // Y escribe
p++;
};
rewind(JD_p);
fwrite(&JD_dp, LSCm, 1, JD_p); // Acualiza n§ de registros
int TmpRow = CurrRowP;
int TmpCol = CurrColP;
PrintWholeScreenP();
CurrRowP = TmpRow; CurrColP = TmpCol;
if ( (CurrRecord = CurrTopLineP + CurrRowP - 1) > JD_dp. n_records ) MoveUpP();
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
}
void AddRecordP(void){
unsigned int CurrRecord= CurrTopLineP + CurrRowP - 1;
if(CurrRecord < 160) {
int LSC = sizeof(struct pedidos_datos);
int LSCm = sizeof(struct pedidos_descripcion);
unsigned int avance = JD_dp. n_records;
while(avance > CurrRecord) {
fseek(JD_p, (long)LSCm + ( LSC * avance - LSC ), SEEK_SET); // Se coloca
fread(&JD_dt, LSC, 1, JD_p); // Y lee
fseek(JD_p, (long)LSCm + ( LSC * (avance + 1) - LSC ), SEEK_SET); // Se coloca
fwrite(&JD_dt, LSC, 1, JD_p); // Y escribe
avance--;
};
JD_dp. n_records ++;
rewind(JD_p);
fwrite(&JD_dp, LSCm, 1, JD_p); // Acualiza n§ de registros
JD_dt.record_zone = 0;
JD_dt.record_name = 0;
strcpy(JD_dt.nombre, "\0");
strcpy(JD_dt.zip, "\0");
JD_dt.kbytes = 0;
fseek(JD_p, (long)LSCm + ( LSC * ( CurrTopLineP + CurrRowP ) - LSC ), SEEK_SET); // Se coloca
fwrite(&JD_dt, LSC, 1, JD_p); // Y escribe
PrintWholeScreenP();
if ( (CurrRecord = CurrTopLineP + CurrRowP - 1) > JD_dp. n_records ) MoveUpP();
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
}
void PrintWholeScreenP(void){
int tmp = CurrRowP;
BorraViewPort(3);
for(CurrRowP = 1; CurrRowP < 21; CurrRowP++) {
if ( ( CurrTopLineP + CurrRowP - 1 ) <= JD_dp. n_records ) {
GetLineP();
if ( CurrRowP >= 11 ) PrintLineP(0); else PrintLineP(1);
}
}
CurrRowP = tmp;
}
void PutLineP(void){
unsigned int CurrRecord = CurrTopLineP + CurrRowP - 1;
int LSC = sizeof(struct pedidos_datos);
int LSCm = sizeof(struct pedidos_descripcion);
fseek(JD_p, (long)LSCm + ( LSC * CurrRecord - LSC ), SEEK_SET); // Se coloca
fwrite(&JD_dt, LSC, 1, JD_p); // Y escribe
}
void GetLineP(void){
unsigned int CurrRecord = CurrTopLineP + CurrRowP - 1;
int LSC = sizeof(struct pedidos_datos);
int LSCm = sizeof(struct pedidos_descripcion);
fseek(JD_p, (long)LSCm + ( LSC * CurrRecord - LSC ), SEEK_SET); // Se coloca
fread(&JD_dt, LSC, 1, JD_p); // Y lee
}
void CreaPresentacion(void){
BorraViewPort(2); // Para los mensajes...
setcolor(12);
outtextxy( 42 * 8 - 7, 4 * 16 - 16, "Nombre:" );
outtextxy( 42 * 8 - 7, 5 * 16 - 16, "Apellidos:" );
outtextxy( 42 * 8 - 7, 6 * 16 - 16, "Direcci¢n:" );
outtextxy( 42 * 8 - 7, 7 * 16 - 16, "Telfono:" );
outtextxy( 42 * 8 - 7, 8 * 16 - 16, "CPU:" );
outtextxy( 58 * 8 - 7, 8 * 16 - 16, "RAM:" );
outtextxy( 66 * 8 - 7, 8 * 16 - 16, "HD:" );
setcolor( 4);
// Sistema utilizado para sombra == -1
outtextxy( 328, 47 , "Nombre:" );
outtextxy( 328, 63 , "Apellidos:" );
outtextxy( 328, 79 , "Direcci¢n:" );
outtextxy( 328, 95 , "Telfono:" );
outtextxy( 328, 111 , "CPU:" );
outtextxy( 456, 111 , "RAM:" );
outtextxy( 520, 111 , "HD:" );
}
void Print_in_Printer(void){
unsigned int cont = 0;
int columna = 1, linea = 9;
int LSC = sizeof(struct pedidos_datos);
int LSCm = sizeof(struct pedidos_descripcion);
// char buffer[28];
//////////////////////////////////////////////////////////////////////////////
// Mensaje es la funci¢n que espero incorporar no muy tarde, para mostrar //
// los mensajes, recibiendo como parametros ( 0 espera una tecla ) //
// ( 1 espera 'S' o 'N' ) //
// //
// En el par metro 0, devolvera 1 si se pulsa ESC //
// En el caso del parametro 1, devolvera 1's , 2'n [...] //
// //
//////////////////////////////////////////////////////////////////////////////
// if( !Mensaje("Prepare la impresora y pulse una tecla", 0) ) { //
//////////////////////////////////////////////////////////////////////////////
fprintf(stdprn, "\n\r" );
if (ferror(stdprn)) { clearerr(stdprn);
// Mensaje("Error en el dispositivo PRN", 0)
return;
}
fprintf(stdprn, "Nombre: %s. \n\r", JD_dp. nombre );
fprintf(stdprn, "Apellidos: %s. \n\r", JD_dp. apelli );
fprintf(stdprn, "Direcci¢n: %s. \n\r", JD_dp. direcc );
fprintf(stdprn, "Telfono: %ld. \n\r", JD_dp. telefono );
fprintf(stdprn, "C.P.U.: %-10s ", JD_dp. cpu );
fprintf(stdprn, "R.A.M.: %2.d ", JD_dp. ram );
fprintf(stdprn, "HD: %4d. \n\r\n\r\n\r", JD_dp. hd );
fseek(JD_p, (long)LSCm, SEEK_SET);
while( cont < JD_dp. n_records ) {
fread(&JD_dt, LSC, 1, JD_p);
fprintf(stdprn, "%-13s %-3s %4d ³ ", (JD_dt. nombre), (JD_dt. zip), (JD_dt. kbytes) );
columna ++; if(columna==4) { fprintf(stdprn, "\n\r");
if (ferror(stdprn)) { clearerr(stdprn);
// Mensaje("Error en el dispositivo PRN", 0)
return;
} columna=1; linea ++;
if(linea==60) { fputc(12, stdprn); // Va al principio de
// la p gina siguiente
if (ferror(stdprn)) { clearerr(stdprn);
// Mensaje("Error en el dispositivo PRN", 0)
return;
}
// Mensaje("Inserte un nuevo folio", 0);
linea = 1;
}
}
cont++;
}
fputc(12, stdprn);
// } // Fin Comprueba Mensaje
}