First commit 11/12/1999
This commit is contained in:
413
CfgTurnos.cpp
Normal file
413
CfgTurnos.cpp
Normal file
@ -0,0 +1,413 @@
|
||||
//---------------------------------------------------------------------------
|
||||
#define BarraEstado2 StatusBar1->Panels->Items[1]->Text
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
#include <io.h>
|
||||
|
||||
#include <vcl.h>
|
||||
#pragma hdrstop
|
||||
|
||||
#include "CfgTurnos.h"
|
||||
//---------------------------------------------------------------------------
|
||||
#pragma package(smart_init)
|
||||
#pragma resource "*.dfm"
|
||||
TTurnos *Turnos;
|
||||
//---------------------------------------------------------------------------
|
||||
__fastcall TTurnos::TTurnos(TComponent* Owner)
|
||||
: TForm(Owner)
|
||||
{
|
||||
unsigned short year, month, day;
|
||||
TDateTime::CurrentDate().DecodeDate( &year, &month, &day );
|
||||
Meses->ItemIndex = month-1;
|
||||
if ( year>=1999 && year<=2001 )
|
||||
Anyos->ItemIndex = (1999-year);
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::TbTurnosBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
if ( access( (TbTurnos -> TableName).c_str(), 0 ) != 0 )
|
||||
{
|
||||
// Usamos la propiedad FielDefs para definir
|
||||
// las columnas que contendr<64> la tabla
|
||||
TbTurnos -> FieldDefs -> Clear();
|
||||
|
||||
/********************\
|
||||
|* Datos B<>sicos *|
|
||||
\********************/
|
||||
TbTurnos -> FieldDefs -> Add("idTurno", ftAutoInc, 0, false );
|
||||
TbTurnos -> FieldDefs -> Add("idSector", ftInteger, 0, false );
|
||||
TbTurnos -> FieldDefs -> Add("NTurno", ftString, 15, false );
|
||||
|
||||
TbTurnos -> FieldDefs -> Add("HTurnoP0", ftFloat, 0, false );
|
||||
TbTurnos -> FieldDefs -> Add("HTurnoP1", ftFloat, 0, false );
|
||||
TbTurnos -> FieldDefs -> Add("HTurnoP2", ftFloat, 0, false );
|
||||
|
||||
|
||||
|
||||
TbTurnos -> IndexDefs-> Clear();
|
||||
|
||||
TIndexOptions MyIndexOptions;
|
||||
MyIndexOptions << ixPrimary << ixUnique;
|
||||
TbTurnos->IndexDefs->Add("Primary", "idTurno;idSector", MyIndexOptions);
|
||||
TbTurnos->IndexDefs->Add("IdxSector", "idSector", TIndexOptions() << ixCaseInsensitive );
|
||||
|
||||
// Creamos la base...
|
||||
TbTurnos -> CreateTable();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::TbSectoresBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
if ( access( (TbSectores -> TableName).c_str(), 0 ) != 0 )
|
||||
{
|
||||
// Usamos la propiedad FielDefs para definir
|
||||
// las columnas que contendr<64> la tabla
|
||||
TbSectores -> FieldDefs -> Clear();
|
||||
|
||||
/********************\
|
||||
|* Datos B<>sicos *|
|
||||
\********************/
|
||||
TbSectores -> FieldDefs -> Add("idSector", ftAutoInc, 0, false );
|
||||
TbSectores -> FieldDefs -> Add("NSector", ftString, 15, false );
|
||||
|
||||
|
||||
TbSectores -> IndexDefs-> Clear();
|
||||
|
||||
TIndexOptions MyIndexOptions;
|
||||
MyIndexOptions << ixPrimary << ixUnique;
|
||||
TbSectores->IndexDefs->Add("Primary", "idSector", MyIndexOptions);
|
||||
|
||||
// Creamos la base...
|
||||
TbSectores -> CreateTable();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::TbPersonalBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
if ( access( (TbPersonal -> TableName).c_str(), 0 ) != 0 )
|
||||
{
|
||||
// Usamos la propiedad FielDefs para definir
|
||||
// las columnas que contendr<64> la tabla
|
||||
TbPersonal -> FieldDefs -> Clear();
|
||||
|
||||
/********************\
|
||||
|* Datos B<>sicos *|
|
||||
\********************/
|
||||
TbPersonal -> FieldDefs -> Add("idPersonal", ftAutoInc, 0, false );
|
||||
TbPersonal -> FieldDefs -> Add("idSector", ftInteger, 0, false );
|
||||
TbPersonal -> FieldDefs -> Add("Nombre", ftString, 15, false );
|
||||
TbPersonal -> FieldDefs -> Add("Apellidos", ftString, 30, false );
|
||||
TbPersonal -> FieldDefs -> Add("Tlfs", ftString, 30, false );
|
||||
|
||||
TbPersonal -> IndexDefs-> Clear();
|
||||
|
||||
TIndexOptions MyIndexOptions;
|
||||
MyIndexOptions << ixPrimary << ixUnique;
|
||||
TbPersonal->IndexDefs->Add("Primary", "idPersonal", MyIndexOptions);
|
||||
TbPersonal->IndexDefs->Add("IdxSector", "idSector", TIndexOptions() << ixCaseInsensitive );
|
||||
|
||||
// Creamos la base...
|
||||
TbPersonal -> CreateTable();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::TbHorariaBeforeOpen(TDataSet *DataSet)
|
||||
{
|
||||
if ( access( (TbHoraria -> TableName).c_str(), 0 ) != 0 )
|
||||
{
|
||||
// Usamos la propiedad FielDefs para definir
|
||||
// las columnas que contendr<64> la tabla
|
||||
TbHoraria -> FieldDefs -> Clear();
|
||||
|
||||
/********************\
|
||||
|* Datos B<>sicos *|
|
||||
\********************/
|
||||
TbHoraria -> FieldDefs -> Add("idHorario", ftAutoInc, 0, false );
|
||||
TbHoraria -> FieldDefs -> Add("Mes", ftSmallint, 0, false );
|
||||
TbHoraria -> FieldDefs -> Add("Anyo", ftSmallint, 0, false );
|
||||
|
||||
TbHoraria -> FieldDefs -> Add("idSector", ftInteger, 0, false );
|
||||
TbHoraria -> FieldDefs -> Add("idPersonal", ftInteger, 0, false );
|
||||
|
||||
|
||||
for( int i=1; i<=31; i++ )
|
||||
TbHoraria -> FieldDefs -> Add(AnsiString("idTurno_Dia"+AnsiString( i )), ftInteger, 0, false );
|
||||
|
||||
TbHoraria -> IndexDefs-> Clear();
|
||||
|
||||
TIndexOptions MyIndexOptions;
|
||||
MyIndexOptions << ixPrimary << ixUnique;
|
||||
TbHoraria->IndexDefs->Add("Primary", "idHorario;Mes;Anyo", MyIndexOptions);
|
||||
TbHoraria->IndexDefs->Add("IdxSector", "idSector", TIndexOptions() << ixCaseInsensitive );
|
||||
|
||||
// Creamos la base...
|
||||
TbHoraria -> CreateTable();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::FormCreate(TObject *Sender)
|
||||
{
|
||||
int i;
|
||||
for ( i=0; i<96; i++ )
|
||||
{
|
||||
// TSpeedButton *CfgTurnos[96];
|
||||
CfgTurnos[i] = new TShape(this);
|
||||
|
||||
CfgTurnos[i]->Width = 9;
|
||||
CfgTurnos[i]->Height = 16;
|
||||
|
||||
CfgTurnos[i]->Top = 40 + ( i < 48 ? 0 : CfgTurnos[i]->Height + 5 );
|
||||
CfgTurnos[i]->Left = ( i < 48 ? i : i-48 )*(CfgTurnos[i]->Width - 1) + 24;
|
||||
|
||||
CfgTurnos[i]->OnMouseDown = CfgTurnosMouseUp;
|
||||
|
||||
Pizarra->InsertControl( CfgTurnos[i] );
|
||||
|
||||
// TLabel *LblTurnos[96];
|
||||
if ( i < 48 && (i%4)==0 )
|
||||
{
|
||||
LblTurnos[i/4] = new TLabel(this);
|
||||
|
||||
LblTurnos[i/4]->Top = 24 + ( i < 48 ? 0 : CfgTurnos[i]->Height + 5 );
|
||||
LblTurnos[i/4]->Left = ( i < 48 ? i : i-48 )*(CfgTurnos[i]->Width - 1) + 24 - ( (i/4)<9 ? 0 : 5 );
|
||||
|
||||
LblTurnos[i/4]->Caption = AnsiString( (i/4)+1 );
|
||||
|
||||
Pizarra->InsertControl( LblTurnos[i/4] );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TbSectores->Active = true;
|
||||
TbTurnos->Active = true;
|
||||
TbPersonal->Active = true;
|
||||
TbHoraria->Active = true;
|
||||
/*
|
||||
try {
|
||||
DBLookupComboBox1->Text = TbSectores->FieldByName( "NSector" )->AsString;
|
||||
}catch(...)
|
||||
{
|
||||
// do nothing...
|
||||
}
|
||||
*/
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::FormDestroy(TObject *Sender)
|
||||
{
|
||||
int i;
|
||||
for ( i=0; i<96; i++ )
|
||||
delete CfgTurnos[i];
|
||||
|
||||
for ( i=0; i<12; i++ )
|
||||
delete LblTurnos[i];
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::CfgTurnosMouseUp(TObject *Sender,
|
||||
TMouseButton Button, TShiftState Shift, int X, int Y)
|
||||
{
|
||||
int i;
|
||||
for ( i=0; i<96; i++ )
|
||||
{
|
||||
if ( Sender == CfgTurnos[i] )
|
||||
{
|
||||
#define TurnoX TbTurnos->FieldByName( "HTurnoP" + AnsiString( i / 32 ) )->AsInteger
|
||||
#define Mask ( 0x01 << ( i % 32 ) )
|
||||
#define TurnoX1 TbTurnos->FieldByName( "HTurnoP" + AnsiString( i / 32 ) )->AsFloat
|
||||
TbTurnos->Edit();
|
||||
TurnoX1 = ( (TurnoX & ~Mask ) | ( !( TurnoX & Mask ) << ( i % 32 ) ) );
|
||||
TbTurnos->Post();
|
||||
// CfgTurnos[i]->Brush->Color = ( TurnoX & Mask ) ? clRed : clWhite;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
void __fastcall TTurnos::DsTurnosDataChange(TObject *Sender, TField *Field)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( PageControl1->ActivePage == TabSheet2 )
|
||||
{
|
||||
// Indicador de FichaActual / Num.Fichas
|
||||
if ( TbTurnos -> RecNo > 0 && TbTurnos -> RecordCount > 0 )
|
||||
{
|
||||
BarraEstado2 = Format( "C: %d / %d", OPENARRAY(TVarRec, (TbTurnos -> RecNo, TbTurnos -> RecordCount)) );
|
||||
for ( i=0; i<96; i++ )
|
||||
CfgTurnos[i]->Brush->Color = ( TurnoX & Mask ) ? clRed : clWhite;
|
||||
} else {
|
||||
BarraEstado2 = Format( "C: <20>Nuevo? / %d", OPENARRAY(TVarRec, (TbTurnos -> RecordCount) ) );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::DsSectoresDataChange(TObject *Sender,
|
||||
TField *Field)
|
||||
{
|
||||
// Indicador de FichaActual / Num.Fichas
|
||||
if ( TbSectores -> RecNo > 0 && TbSectores -> RecordCount > 0 )
|
||||
{
|
||||
BarraEstado2 = Format( "C: %d / %d", OPENARRAY(TVarRec, (TbSectores -> RecNo, TbSectores -> RecordCount)) );
|
||||
} else {
|
||||
BarraEstado2 = Format( "C: <20>Nuevo? / %d", OPENARRAY(TVarRec, (TbSectores -> RecordCount) ) );
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::TbTurnosBeforeInsert(TDataSet *DataSet)
|
||||
{
|
||||
if ( !( TbSectores -> RecNo > 0 && TbSectores -> RecordCount > 0 ) )
|
||||
{
|
||||
// MessageBox( 0, "<22> No cree que deber<65>a crear,\no seleccionar una factura nueva,\nantes de agregar datos de compra?.", "<22> Atenci<63>n !", MB_OK );
|
||||
Abort();
|
||||
} else {
|
||||
for (int i=0; i<96; i++)
|
||||
CfgTurnos[i]->Brush->Color = clWhite;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::DBGrid2DrawColumnCell(TObject *Sender,
|
||||
const TRect &Rect, int DataCol, TColumn *Column,
|
||||
TGridDrawState State)
|
||||
{
|
||||
// Precisa seguimiento <20>?
|
||||
if ( Column -> ID == 2 )
|
||||
{
|
||||
int i, AnchoT, AltoT;
|
||||
TRect RectT;
|
||||
|
||||
|
||||
AnchoT = ((Rect.Right-Rect.Left) / 48);
|
||||
#define DESPLAZAM_CENTRO ((Rect.Right-Rect.Left)-(AnchoT*48))/2
|
||||
|
||||
RectT = Rect;
|
||||
RectT.Top++;
|
||||
RectT.Left += DESPLAZAM_CENTRO;
|
||||
RectT.Right+= DESPLAZAM_CENTRO;
|
||||
|
||||
|
||||
RectT.Right = RectT.Left;
|
||||
AltoT = (Rect.Bottom-Rect.Top-1)/2;
|
||||
RectT.Bottom -= AltoT;
|
||||
|
||||
DBGrid2 -> Canvas -> Pen -> Color = clBlack;
|
||||
|
||||
if ( AnchoT > 0 )
|
||||
{
|
||||
for ( i=0; i<96; i++ )
|
||||
{
|
||||
if ( i == 48 ) { RectT.Top = RectT.Bottom; RectT.Bottom = Rect.Bottom; RectT.Left = Rect.Left+DESPLAZAM_CENTRO;RectT.Right = Rect.Left+DESPLAZAM_CENTRO; }
|
||||
RectT.Left = RectT.Right;
|
||||
RectT.Right += AnchoT;
|
||||
DBGrid2 -> Canvas -> Brush -> Color = ( TurnoX & Mask ) ? clRed : clWhite;
|
||||
DBGrid2 -> Canvas -> FillRect( RectT );
|
||||
// Dibujamos las marcas horarias...
|
||||
if ( (i%4)==0 )
|
||||
{
|
||||
DBGrid2 -> Canvas -> MoveTo( RectT.Left, RectT.Top+1 );
|
||||
DBGrid2 -> Canvas -> LineTo( RectT.Left, RectT.Bottom );
|
||||
}
|
||||
if ( (i%24)==0 && i!=0 && i!=48 )
|
||||
{
|
||||
DBGrid2 -> Canvas -> MoveTo( RectT.Left+1, RectT.Top+1 );
|
||||
DBGrid2 -> Canvas -> LineTo( RectT.Left+1, RectT.Bottom );
|
||||
}
|
||||
}
|
||||
DBGrid2 -> Canvas -> MoveTo( Rect.Left+DESPLAZAM_CENTRO, RectT.Top );
|
||||
DBGrid2 -> Canvas -> LineTo( RectT.Right,RectT.Top );
|
||||
|
||||
DBGrid2 -> Canvas -> MoveTo( Rect.Left+DESPLAZAM_CENTRO, Rect.Top+1 );
|
||||
DBGrid2 -> Canvas -> LineTo( RectT.Right,Rect.Top+1 );
|
||||
DBGrid2 -> Canvas -> LineTo( RectT.Right,RectT.Bottom );
|
||||
DBGrid2 -> Canvas -> LineTo( Rect.Left+DESPLAZAM_CENTRO,RectT.Bottom );
|
||||
DBGrid2 -> Canvas -> LineTo( Rect.Left+DESPLAZAM_CENTRO,Rect.Top+1 );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// DBGrid1 -> Canvas -> StretchDraw( Rect, BtmOK );
|
||||
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::FormResize(TObject *Sender)
|
||||
{
|
||||
int Separacion;
|
||||
|
||||
Separacion = ((Pizarra->Width - (47*(Shape1->Width - 1) + Shape1->Left))/12)-1;
|
||||
|
||||
|
||||
|
||||
for ( int i = 0; i < 96; i++ )
|
||||
{
|
||||
CfgTurnos[i]->Width = Shape1->Width;
|
||||
CfgTurnos[i]->Height = Shape1->Height;
|
||||
|
||||
CfgTurnos[i]->Top = (i<48?Shape1->Top:Shape2->Top);//Shape1->Top + ( i < 48 ? 0 : CfgTurnos[i]->Height + 5 );
|
||||
CfgTurnos[i]->Left = ( i < 48 ? i : i-48 )*(CfgTurnos[i]->Width - 1) + Shape1->Left + (((i%48)/4)*Separacion);
|
||||
|
||||
if ( i < 48 && (i%4)==0 )
|
||||
{
|
||||
LblTurnos[i/4]->Top = Label3->Top;
|
||||
LblTurnos[i/4]->Left = i *(CfgTurnos[i]->Width - 1) + Label3->Left - ( (i/4)<9 ? 0 : ((Label3->Width*5)/CfgTurnos[i]->Width) ) + (((i%48)/4)*Separacion);
|
||||
}
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::TbPersonalBeforeInsert(TDataSet *DataSet)
|
||||
{
|
||||
if ( !( TbSectores -> RecNo > 0 && TbSectores -> RecordCount > 0 ) )
|
||||
{
|
||||
// MessageBox( 0, "<22> No cree que deber<65>a crear,\no seleccionar una factura nueva,\nantes de agregar datos de compra?.", "<22> Atenci<63>n !", MB_OK );
|
||||
Abort();
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
|
||||
void __fastcall TTurnos::PageControl1Change(TObject *Sender)
|
||||
{
|
||||
TWinControl *HookP;
|
||||
|
||||
// Reasignamos los marcadores de hora...
|
||||
if ( PageControl1->ActivePage == TabSheet1 ||
|
||||
PageControl1->ActivePage == TabSheet2 )
|
||||
{
|
||||
HookP = PageControl1->ActivePage == TabSheet1 ? Pizarra2 : Pizarra;
|
||||
for ( int i = 0; i < 96; i++ )
|
||||
{
|
||||
CfgTurnos[i]->Parent = HookP;
|
||||
if ( i < 48 && (i%4)==0 )
|
||||
LblTurnos[i/4]->Parent = HookP;
|
||||
}
|
||||
|
||||
for ( int i=0; i<96; i++ )
|
||||
CfgTurnos[i]->Brush->Color = clWhite;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::TbHorariaCalcFields(TDataSet *DataSet)
|
||||
{
|
||||
TbHoraria->FieldByName("Prsnl_CltNombApll")->AsString =
|
||||
TbHoraria->FieldByName("Prsnl_Nombre")->AsString +
|
||||
TbHoraria->FieldByName("Prsnl_Apellidos")->AsString;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void __fastcall TTurnos::DBGrid4DrawColumnCell(TObject *Sender,
|
||||
const TRect &Rect, int DataCol, TColumn *Column,
|
||||
TGridDrawState State)
|
||||
{
|
||||
if ( State.Contains(gdFixed) && Column->ID > 1 )
|
||||
{
|
||||
Column->Title->Caption = "D<EFBFBD>a "+Column->ID;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user