First commit 25/09/1997
This commit is contained in:
792
ALUM_UTL.CPP
Normal file
792
ALUM_UTL.CPP
Normal file
@ -0,0 +1,792 @@
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <alloc.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <graphics.h>
|
||||
|
||||
#include "c:\program\src_dos\libs\make_bot\make_bot.h"
|
||||
#include "c:\program\src_dos\libs\bdatos\bdatos.hh"
|
||||
#include "alum_def.h"
|
||||
|
||||
#define BLANCO EGA_WHITE
|
||||
#define ENCUADRE 3
|
||||
#define SEC_OPTAR 2
|
||||
|
||||
void BEEP(void);
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* InputCadenaG *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Edita una cadena en formato gr<67>fico *|
|
||||
|* *|
|
||||
|* Entradas: *|
|
||||
|* Puntero a los datos editados *|
|
||||
|* 0 alfanumerico 1 numerico *|
|
||||
|* longitud de la cadena (TEXTO/NUMERO) *|
|
||||
|* color del texto *|
|
||||
|* color de fondo *|
|
||||
|* Limites de acotacion *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
int InputCadenaG(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();
|
||||
|
||||
}
|
||||
|
||||
void formatea_long( long Numero, char *Inter_Chg)
|
||||
{
|
||||
char Buffer1[80];
|
||||
|
||||
int c;
|
||||
char Nmc = 0;
|
||||
|
||||
|
||||
if ( Numero < 0 ) { Numero *= -1; Nmc = 1; }
|
||||
|
||||
sprintf(Buffer1, "%lu", Numero );
|
||||
|
||||
Inter_Chg[0]='\0';
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
c = strlen( Buffer1 );
|
||||
|
||||
while( c >= 3 )
|
||||
{
|
||||
c -= 3;
|
||||
strncat( Inter_Chg, Buffer1, 3);
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
Buffer1[c] = '\0';
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
if(strlen(Buffer1)!=0)
|
||||
strcat( Inter_Chg, "." );
|
||||
}
|
||||
|
||||
strcat( Inter_Chg, Buffer1);
|
||||
if ( Nmc == 1 )
|
||||
strcat( Inter_Chg, "-" );
|
||||
|
||||
strrev(Inter_Chg);
|
||||
|
||||
|
||||
/*// return Buffer2;*/
|
||||
}
|
||||
|
||||
|
||||
void formatea_u_long( unsigned long Numero, char *Inter_Chg)
|
||||
{
|
||||
char Buffer1[80];
|
||||
|
||||
int c;
|
||||
|
||||
sprintf(Buffer1, "%lu", Numero);
|
||||
|
||||
Inter_Chg[0]='\0';
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
c = strlen( Buffer1 );
|
||||
|
||||
while( c >= 3 )
|
||||
{
|
||||
|
||||
c -= 3;
|
||||
strncat( Inter_Chg, Buffer1, 3);
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
Buffer1[c] = '\0';
|
||||
|
||||
strrev(Buffer1);
|
||||
|
||||
if(strlen(Buffer1)!=0)
|
||||
strcat( Inter_Chg, "." );
|
||||
}
|
||||
|
||||
strcat( Inter_Chg, Buffer1);
|
||||
strrev(Inter_Chg);
|
||||
|
||||
|
||||
/*// return Buffer2;*/
|
||||
}
|
||||
|
||||
|
||||
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( 100, "systm\\alum.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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
farfree( fondo );
|
||||
farfree( fd_aceptar );
|
||||
farfree( fd_cancelar );
|
||||
}
|
||||
|
||||
|
||||
return DEV;
|
||||
}
|
||||
|
||||
|
||||
|
||||
char led_off [18] [18] =
|
||||
{
|
||||
{ 3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,0,7,7,7,7,0,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,0,7,4,12,12,4,7,0,3,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,4,12,4,4,4,4,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,4,4,4,4,4,4,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,4,4,4,4,4,12,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,4,4,4,4,12,12,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 3,0,8,4,12,12,12,8,0,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,0,8,8,8,8,0,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 }
|
||||
};
|
||||
|
||||
char led_on [18] [18] =
|
||||
{
|
||||
{ 3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,0,7,7,7,7,0,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,0,7,11,13,13,11,7,0,3,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,11,13,11,11,11,11,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,11,11,11,11,11,11,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,11,11,11,11,11,13,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 0,7,11,11,11,11,13,13,8,0,3,3,3,3,3,3,3,3 },
|
||||
{ 3,0,8,11,13,13,13,8,0,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,0,8,8,8,8,0,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 },
|
||||
{ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 }
|
||||
};
|
||||
|
||||
char flecha [18] [18] =
|
||||
{
|
||||
3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,3,3,0,4,0,3,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,3,0,4,4,4,0,3,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,0,4,4,4,4,4,4,4,0,3,3,3,3,
|
||||
3,3,3,3,0,4,4,4,4,4,4,4,4,4,0,3,3,3,
|
||||
3,3,3,0,4,4,4,4,4,4,4,4,4,4,4,0,3,3,
|
||||
3,3,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,4,4,4,4,4,0,3,3,3,3,3,
|
||||
3,3,3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3
|
||||
};
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* poicono *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Dibuja el bitmap que se encuentra en matriz, en <20>a pos x,y *|
|
||||
|* y segun un angulo de rotacion definido en pos. *|
|
||||
|* *|
|
||||
|* Entradas: Coordenadas x, y *|
|
||||
|* Matriz del bitmap y ( 0: Normal 1: 90<39> ... *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void ponicono(int x,int y,char matriz[18][18], char pos)
|
||||
{
|
||||
int veces1,veces2;
|
||||
|
||||
for (veces1=0;veces1<=17;veces1++)
|
||||
{
|
||||
for (veces2=0;veces2<=17;veces2++)
|
||||
{
|
||||
|
||||
switch( pos )
|
||||
{
|
||||
case 1:
|
||||
if ( matriz[veces1][veces2] != 3 )
|
||||
putpixel(x+veces1,y+veces2,matriz[veces1][veces2]);
|
||||
break;
|
||||
case 2:
|
||||
if ( matriz[17-veces2][veces1] != 3 )
|
||||
putpixel(x+veces1,y+veces2,matriz[17-veces2][veces1]);
|
||||
break;
|
||||
case 3:
|
||||
if ( matriz[17-veces1][veces2] != 3 )
|
||||
putpixel(x+veces1,y+veces2,matriz[17-veces1][veces2]);
|
||||
break;
|
||||
case 4:
|
||||
if ( matriz[veces2][veces1] != 3 )
|
||||
putpixel(x+veces1,y+veces2,matriz[veces2][veces1]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* CalculaAjusteDia *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Calcula el ajuste necesario para el comienzo de los dias *|
|
||||
|* y el n<>mero de dias que tiene el mes en curso. *|
|
||||
|* *|
|
||||
|* Entradas: Retorno del Ajuste, y Dias del Mes *|
|
||||
|* Mes para iniciar c<>lculos *|
|
||||
|* *|
|
||||
|* Salidas: OK Todo ha ido bien *|
|
||||
|* ERROR *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
int CalculaAjusteDias( char *Ajuste, char *DiasMes, char Mes, int Anyo )
|
||||
{
|
||||
int dev, n, b, dsem, dia;
|
||||
|
||||
// Dias de los meses, si el a<>o no es bisiesto
|
||||
char DiasMeses[12] = { 31, 00, 31, 30, 31, 30,
|
||||
31, 31, 30, 31, 30, 31 };
|
||||
|
||||
// Ajusta febrero si es bisiesto el a<>o
|
||||
DiasMeses[1] = (Anyo%4 == 0) ? 29 : 28;
|
||||
|
||||
|
||||
dev = ERROR;
|
||||
// Solo si la entrada es correcta
|
||||
if ( Mes >= 1 && Mes <=12 )
|
||||
{
|
||||
dev = OK;
|
||||
// Obtenemos que dia, ( 0 - 365 ), es el 1<> del mes
|
||||
dia = 0;
|
||||
for ( n = 0; n < 12 && n < (Mes-1); n++ )
|
||||
dia += DiasMeses[n];
|
||||
|
||||
n = Anyo-1988; // a<>os para bisiesto
|
||||
b = (n+3)/4; // a<>os bisies. pasados
|
||||
dsem = 4; // 1o. Ene 1988: Viernes
|
||||
dsem += (n*365+b); // 1o. Ene actual
|
||||
dsem = (dsem+dia)%7; // d<>a seleccionado
|
||||
|
||||
*Ajuste = dsem;
|
||||
*DiasMes = DiasMeses[ Mes - 1 ];
|
||||
}
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* TextoDoble *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Muestra el texto, con doble letra, en las coordenadas dadas *|
|
||||
|* *|
|
||||
|* Entradas: X, Y, texto *|
|
||||
|* *|
|
||||
|* Salidas: (ninguna) *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
void TextoDoble( int x, int y, char *texto )
|
||||
{
|
||||
setcolor( EGA_BLACK );
|
||||
outtextxy( x, y, texto );
|
||||
|
||||
setcolor( EGA_WHITE );
|
||||
outtextxy( x+1, y+1, texto );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/////// EDITAR COMENTARIO....
|
||||
int EditComentario( char *Comentario, int Lineas, int Columnas, int cc, int cf, int X0, int Y0, int X1, int Y1, int Inc )
|
||||
{
|
||||
|
||||
int ls; // longitud cadena
|
||||
char *s1, *s, *s_tmp, *s_tmp1; // puntero a cadena inicial
|
||||
int key, ok, Linea = 0, Columna = 0, lmax;
|
||||
char Buffer[80];
|
||||
|
||||
lmax = Columnas;
|
||||
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
|
||||
for ( ok = 0; ok < Lineas; ok ++ )
|
||||
{
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
outtextxy( X0, Y0+ok*Inc, &Comentario[ (lmax+1)*Linea ] ); // e imprime la cadena.
|
||||
}
|
||||
|
||||
ok = 0;
|
||||
|
||||
s_tmp1 = s_tmp = s = s1 = &Comentario[0 + (lmax+1)*Linea ]; // inicio cadena
|
||||
|
||||
s += lmax ; *s = '\0';
|
||||
s = s_tmp;
|
||||
|
||||
do {
|
||||
|
||||
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
|
||||
outtextxy( X0, Y0+Linea*Inc, s1 ); // e imprime la cadena.
|
||||
// ls = strlen ( s ); // Longitud de la cadena actual
|
||||
|
||||
|
||||
if ( Columna < lmax ) { // Muestra cursor si es posible
|
||||
strncpy( Buffer, s1, Columna );
|
||||
Buffer[Columna] = '\0';
|
||||
setcolor(BLANCO);
|
||||
outtextxy( X0 + textwidth( Buffer ), Y0+Linea*Inc+2, "<EFBFBD>");
|
||||
}
|
||||
|
||||
|
||||
|
||||
switch ( ( key = getch() ) ) { // obtiene tecla
|
||||
// Intro o Return
|
||||
case 13:
|
||||
if( Linea < Lineas ) {
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
outtextxy( X0, Y0+Linea*Inc, s1 ); // e imprime la cadena.
|
||||
|
||||
Linea++;
|
||||
s_tmp1 = s_tmp = s = s1 = &Comentario[/*Linea + */(lmax+1)*Linea ]; // inicio cadena
|
||||
s += lmax; *s = '\0';
|
||||
Columna = 0;
|
||||
s = s_tmp1 = s_tmp = s1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0:
|
||||
|
||||
switch ( key = getch() ) {
|
||||
|
||||
// F. Arriba
|
||||
case 72:
|
||||
if( Linea > 0 ) {
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
outtextxy( X0, Y0+Linea*Inc, s1 ); // e imprime la cadena.
|
||||
|
||||
Linea--;
|
||||
s_tmp1 = s_tmp = s = s1 = &Comentario[/*Linea + */(lmax+1)*Linea ]; // inicio cadena
|
||||
s += lmax; *s = '\0';
|
||||
if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0;
|
||||
s_tmp = s1; }
|
||||
s = s_tmp1 = s_tmp;
|
||||
|
||||
}
|
||||
|
||||
break;
|
||||
// F. Abajo
|
||||
case 80:
|
||||
|
||||
if( Linea < Lineas ) {
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
outtextxy( X0, Y0+Linea*Inc, s1 ); // e imprime la cadena.
|
||||
|
||||
Linea++;
|
||||
s_tmp1 = s_tmp = s = s1 = &Comentario[/*Linea + */(lmax+1)*Linea ]; // inicio cadena
|
||||
s += lmax; *s = '\0';
|
||||
if ( Columna < strlen( s1 ) ) s_tmp += Columna; else { Columna = 0;
|
||||
s_tmp = s1; }
|
||||
s = s_tmp1 = s_tmp;
|
||||
}
|
||||
break;
|
||||
// F. Derecha
|
||||
case 77:
|
||||
case 9:
|
||||
if ( Columna < strlen(s1) ) { Columna++; s++; }
|
||||
break;
|
||||
// F. Izquierda
|
||||
case 75:
|
||||
case 11:
|
||||
if ( Columna > 0) { Columna--; s--; }
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
// Back Space
|
||||
case 8:
|
||||
if ( Columna > 0 ) {
|
||||
Columna--;
|
||||
s--;
|
||||
s_tmp1 = s_tmp = s;
|
||||
while ( *s_tmp1 != NULL ) {
|
||||
s_tmp1++;
|
||||
*s_tmp = *s_tmp1;
|
||||
s_tmp++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 27:
|
||||
ok = 1;
|
||||
break;
|
||||
default:
|
||||
if ( key >= 32 && key <= 254 && Columna < lmax) {
|
||||
*s++ = key;
|
||||
Columna++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}while(!ok);
|
||||
|
||||
while(kbhit()) getch(); // Vacia Buffer impidiendo falsas
|
||||
// pulsaciones...
|
||||
|
||||
|
||||
setfillstyle(SOLID_FILL, cf); // selecciona los atributos de
|
||||
bar( X0, Y0+Linea*Inc, X1, Y0+Linea*Inc + Inc); // relleno, y Borra el campo
|
||||
setcolor(cc); // devuelve el color a su estado
|
||||
|
||||
outtextxy( X0, Y0+Linea*Inc, s1 ); // e imprime la cadena.
|
||||
|
||||
return /* de momento nada */ 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
char *PideClave( char *LineaVentana, char *Comprobante )
|
||||
{
|
||||
static char Clave[15+1];
|
||||
|
||||
Clave[0] = '\0';
|
||||
Optar( ENCUADRE, LineaVentana, "Introduzca clave para:", Comprobante, NULL );
|
||||
|
||||
InputCadenaG( Clave, 0, 15, EGA_WHITE, EGA_WHITE, 190, 280, 450, 305 );
|
||||
|
||||
Optar( ENCUADRE, LineaVentana, "Introduzca clave para:", Comprobante, NULL );
|
||||
|
||||
return Clave;
|
||||
}
|
||||
|
||||
|
||||
void MuestraGraficas( int PosX, int PosY, int xWidth, int yWidth, int NDatos, long *Datos, char Mensajes[][12] )
|
||||
{
|
||||
long DMaximo;
|
||||
int i, AnchoBarra;
|
||||
|
||||
// Limpiamos la zona de visualizaci<63>n
|
||||
setfillstyle( SOLID_FILL, EGA_WHITE );
|
||||
bar( PosX, PosY, PosX + xWidth, PosY + yWidth );
|
||||
|
||||
// Calculamos el maximo valor a mostrar
|
||||
DMaximo = 0;
|
||||
for ( i = 0; i < NDatos; i++ )
|
||||
if ( Datos[i] > DMaximo )
|
||||
DMaximo = Datos[i];
|
||||
|
||||
// Ahora calculamos el ancho de cada barra de porcentaje
|
||||
AnchoBarra = xWidth / NDatos;
|
||||
|
||||
// Empiezo a dibujar las barras
|
||||
PosY += yWidth - 1;
|
||||
yWidth -= (AnchoBarra / 4);
|
||||
setfillstyle( SLASH_FILL, EGA_BLUE );
|
||||
setcolor( EGA_BLACK );
|
||||
for ( i = 0; i < NDatos; i++ )
|
||||
{
|
||||
if ( DMaximo != 0 )
|
||||
bar3d( PosX + AnchoBarra*i, PosY - ( ( Datos[i] * yWidth ) / DMaximo), PosX + AnchoBarra*(i+1), PosY,
|
||||
AnchoBarra / 4, 1 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* PideClaveUsuario *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* Pide la clave de usuario y comprueba si es correcta. *|
|
||||
|* *|
|
||||
|* Entradas: (ninguna) *|
|
||||
|* *|
|
||||
|* Salidas: OK -clave correcta- ERROR -clave incorrecta- *|
|
||||
|* *|
|
||||
|* *|
|
||||
\**************************************************************************/
|
||||
char PideClaveUsuario( void )
|
||||
{
|
||||
return OK;
|
||||
/*
|
||||
char buffer[80], Clave[80];
|
||||
int CodEmpl, dev;
|
||||
|
||||
BDatos BEmpl_p; // Base de datos de Empleados
|
||||
INFO_EMPLEADOS SEmpl_p; // Estructura de Empleados
|
||||
|
||||
dev = ERROR;
|
||||
|
||||
sprintf( buffer, "datos\\%s\\info_emp.dbf", NEmpresa );
|
||||
if ( BEmpl_p.AbrirReg( buffer, sizeof( INFO_EMPLEADOS ) ) == ERROR )
|
||||
{
|
||||
Optar( 0, "<22> ALERTA !", "No existen empleados", "c<>digos de acceso anulados", "PERMISOS ABIERTOS", NULL );
|
||||
return OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Clave[0] = '\0';
|
||||
Optar( ENCUADRE, "<22> Identifiquese !", "", "Login: ", "Password: ", NULL );
|
||||
|
||||
// Obtenemos el c<>digo de usuario:
|
||||
do {
|
||||
if ( InputCadenaG( buffer, 1, 5, EGA_WHITE, EGA_WHITE, 190, 280, 450, 305 ) >> 8 )
|
||||
return ERROR;
|
||||
} while ( !MatchEmpleado( atoi(buffer) ) );
|
||||
|
||||
// InputCadenaG( Clave, 0, 15, EGA_WHITE, EGA_WHITE, 190, 280, 450, 305 );
|
||||
|
||||
if ( ! ( InputCadenaG( buffer, 1, 5, EGA_WHITE, EGA_WHITE, 190, 280, 450, 305 ) >> 8 ) )
|
||||
{
|
||||
if ( SEmpl_p.Password[0] != '\0' && strcmpi( buffer, SEmpl_p.Password ) == 0 )
|
||||
dev = OK;
|
||||
}
|
||||
|
||||
Optar( ENCUADRE, "<22> Identifiquese !", "", "Login: ", "Password: ", NULL );
|
||||
|
||||
return dev;
|
||||
*/
|
||||
}
|
Reference in New Issue
Block a user