First commit 09/12/1994

This commit is contained in:
2021-09-03 17:43:05 +02:00
commit 89a9bade50
18 changed files with 6079 additions and 0 deletions

993
CPEDIDOS.CPP Normal file
View File

@ -0,0 +1,993 @@
///////////////////////////////////////////////////////////////////////////
//// Nombre: CPedidos.CPP ///
//// Modulo: Perteneciente a Catalogo.CPP ///
//// Descripci<63>n: M<>dulo para editar o modificar los pedidos ///
//// enlazados a este m<>dulo por CaddView.CPP ///
//// ///
//// Autor: Jos<6F> David Guill<6C>n 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>
///////////////////////////////////////////////////////////////////////////
//<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>//
///////////////////////////////////////////////////////////////////////////
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<63>n 21 digitos + NULL
long telefono; // Tel<65>fono 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<63>n...
struct pedidos_datos JD_dt; // Datos...
FILE *JD_p; // Fichero Pedidos
// Variables de posici<63>n y registro
int CurrRowP, CurrColP;
unsigned int CurrTopLineP;
int CurrRowPD, CurrColPD= 1;
char ArchivoPedidos[]="CPedidos.DAT";
///////////////////////////////////////////////////////////////////////////
//<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>//
///////////////////////////////////////////////////////////////////////////
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");
*/
//<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>//
//<2F><> Comprueba apertura correcta de Pedidos o creaci<63>n... <20><>//
//<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>//
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<63>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<63>n y estados del bot<6F>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() ) {
////////////////////////////////////////////////////////////////////////
///////////////////////////////////////// <20> 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<65>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<76>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
/////////////////////////////////////////////////////////////////////////////
//<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>//
////////////////////////// Comprueba con rat<61>n ( SI ) ///////////////////////
//<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>//
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////// ... 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<65>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<76>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 <20> 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<63>n vertical y reajuste final
// desviaci<63>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, "<EFBFBD>");
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<63>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<63>n vertical y reajuste final
// desviaci<63>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, "<EFBFBD>");
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<63>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<63>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<63>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<EFBFBD>n:" );
outtextxy( 42 * 8 - 7, 7 * 16 - 16, "Tel<EFBFBD>fono:" );
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<EFBFBD>n:" );
outtextxy( 328, 95 , "Tel<EFBFBD>fono:" );
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<63>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<61>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<EFBFBD>n: %s. \n\r", JD_dp. direcc );
fprintf(stdprn, "Tel<EFBFBD>fono: %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 <20> ", (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
}