139 lines
4.0 KiB
C++
139 lines
4.0 KiB
C++
//---------------------------------------------------------------------------
|
|
#include <registry.hpp>
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "TPropiedades.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma link "DialUp"
|
|
#pragma link "DigitNum"
|
|
#pragma resource "*.dfm"
|
|
TPropiedades *Propiedades;
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TPropiedades::TPropiedades(TComponent* Owner)
|
|
: TForm(Owner)
|
|
{
|
|
PosHistorica = 0;
|
|
Temp = 0;
|
|
Tmin = 1000; Tmax = 0;
|
|
|
|
try {
|
|
mHistorial -> Lines -> LoadFromFile("Historial.log");
|
|
}catch(...){
|
|
// do nothing
|
|
}
|
|
mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Inicio de sesión ");
|
|
|
|
HCalorValues = new int [ HCalor->Width + 2 ];
|
|
for ( int i=0; i<HCalor->Width; i++ ) HCalorValues[i] = 0;
|
|
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TPropiedades::BorrarHistorialClick(TObject *Sender)
|
|
{
|
|
mHistorial -> Lines -> Clear();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TPropiedades::FormDestroy(TObject *Sender)
|
|
{
|
|
mHistorial -> Lines -> Add( TDateTime::CurrentDateTime().DateTimeString() + " Fin de sesión ");
|
|
delete [] HCalorValues;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TPropiedades::mHistorialChange(TObject *Sender)
|
|
{
|
|
try {
|
|
if ( Historial -> Checked )
|
|
mHistorial -> Lines -> SaveToFile("Historial.log");
|
|
} catch(...) {
|
|
// do nothing
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void __fastcall TPropiedades::FormKeyPress(TObject *Sender, char &Key)
|
|
{
|
|
switch( Key )
|
|
{
|
|
case 'a':
|
|
Temp++;
|
|
break;
|
|
case 's':
|
|
Temp--;
|
|
break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TPropiedades::ProcesarCuanto(TObject *Sender)
|
|
{
|
|
int shTemp;
|
|
|
|
shTemp = Temp >= HCalor->Height ? HCalor->Height : Temp;
|
|
shTemp = shTemp <= 0 ? 0 : shTemp;
|
|
shTemp *= 2;
|
|
|
|
// Borrado de la linea a imprimir
|
|
HCalor -> Canvas -> MoveTo ( PosHistorica, 0 );
|
|
HCalor -> Canvas -> LineTo ( PosHistorica, HCalor->Height);
|
|
|
|
PosHistorica++;
|
|
if ( PosHistorica > HCalor->Width ) PosHistorica = 0;
|
|
|
|
// Linea de calor
|
|
HCalorValues[PosHistorica] = shTemp;
|
|
PintaLinea( PosHistorica, shTemp );
|
|
|
|
// Linea indicación de estado
|
|
HCalor -> Canvas -> Pen -> Mode = pmXor;
|
|
HCalor -> Canvas -> Pen -> Color = clGreen;
|
|
HCalor -> Canvas -> MoveTo ( PosHistorica, 0 );
|
|
HCalor -> Canvas -> LineTo ( PosHistorica, HCalor->Height );
|
|
|
|
|
|
// Calculo de minimos y maximos
|
|
Tmin = Temp < Tmin ? Temp : Tmin;
|
|
Tmax = Temp > Tmax ? Temp : Tmax;
|
|
StatusBar1->Panels->Items[0]->Text = Format( "Min. %02d --- Max. %02d", ARRAYOFCONST(((int)Tmin, (int)Tmax)));
|
|
DigitNum1 -> Value = Temp;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TPropiedades::HCalorPaint(TObject *Sender)
|
|
{
|
|
int i;
|
|
// Redibujamos el contenido del histograma...
|
|
for ( i=0; i<HCalor->Width; i++ )
|
|
PintaLinea( i, HCalorValues[i] );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TPropiedades::PintaLinea(int x, int y)
|
|
{
|
|
int i, maxi;
|
|
HCalor -> Canvas -> Pen -> Mode = pmCopy;
|
|
/*
|
|
maxi = max( (HCalor->Height-(HCalor->Height/3)), (HCalor->Height-y) );
|
|
for ( i=HCalor->Height; i>maxi && i != 0; i-- )
|
|
{
|
|
HCalor -> Canvas -> Pixels[x][i] = (Graphics::TColor)( ( ( i * 0xFF ) / HCalor->Height )<<16);
|
|
}
|
|
*/
|
|
for ( i=HCalor->Height; i>(HCalor->Height-y) && i != 0; i-- )
|
|
{
|
|
HCalor -> Canvas -> Pixels[x][i] = (Graphics::TColor)(0xFF - (( i * 0xFF ) / HCalor->Height ));
|
|
}
|
|
|
|
/*
|
|
HCalor -> Canvas -> Pen -> Color = clRed;
|
|
HCalor -> Canvas -> MoveTo ( x, HCalor->Height );
|
|
HCalor -> Canvas -> LineTo ( x, HCalor->Height - y );
|
|
*/
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|