First commit 11/12/1999
BIN
-Elemento.bmp
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
-cerrar-8b.bmp
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
-cfg-8b.bmp
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
-min-8b.bmp
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
-pos-24b.bmp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
0Elemento.bmp
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
0JDsoft.bmp
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
0cerrar-8b.bmp
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
0cfg-8b.bmp
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
0min-8b.bmp
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
0pos-24b.bmp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
0pos-8b.bmp
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
1JDsoft.bmp
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
1cerrar-8b.bmp
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
1min-8b.bmp
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
1pos-24b.bmp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
1pos-8b.bmp
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
3Elemento-8b.bmp
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
4Elemento-8b.bmp
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
5Elemento.bmp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
App-8b.bmp
Normal file
After Width: | Height: | Size: 193 KiB |
58
ComprarBono.cpp
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "ComprarBono.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma link "FormularioREUSABLE"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TCBono *CBono;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TCBono::TCBono(TComponent* Owner)
|
||||||
|
: TFormREUSABLE(Owner)
|
||||||
|
{
|
||||||
|
Label1->Caption = TDateTime::CurrentDate();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCBono::BitBtn1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if ( Horas->Text.ToInt() < 0 || Horas->Text.ToInt() >50 ) Horas->Text = "0";
|
||||||
|
} catch(...) { Horas->Text = "0";
|
||||||
|
Horas->SelStart= 0;
|
||||||
|
Horas->SelLength= 1;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ( Min->Text.ToInt() < 0 || Min->Text.ToInt() >59 ) Min->Text = "0";
|
||||||
|
} catch(...) { Min->Text = "0";
|
||||||
|
Min->SelStart= 0;
|
||||||
|
Min->SelLength= 1;
|
||||||
|
}
|
||||||
|
if ( Horas->Text.ToInt() == 0 )
|
||||||
|
{
|
||||||
|
ShowMessage( "Debe indicar la DURACI<43>N DEL BONO" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try{
|
||||||
|
if ( Currency(CosteBono->Text) == 0 )
|
||||||
|
{
|
||||||
|
ShowMessage( "Debe indicar la COSTE DEL BONO" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} catch(...) {
|
||||||
|
ShowMessage( "Debe indicar la COSTE DEL BONO" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ModalResult = mrOk;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCBono::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrCancel;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
254
ComprarBono.dfm
Normal file
@ -0,0 +1,254 @@
|
|||||||
|
inherited CBono: TCBono
|
||||||
|
Left = 328
|
||||||
|
Top = 158
|
||||||
|
Caption = 'CBono'
|
||||||
|
OldCreateOrder = True
|
||||||
|
Position = poOwnerFormCenter
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
inherited CoolForm1: TCoolForm
|
||||||
|
Mask2 = {
|
||||||
|
3002000020000000010000002100000010020000040000000200000064010000
|
||||||
|
030100001A000000020000004E01000003000000170000000300000051010000
|
||||||
|
0400000015000000040000005301000005000000130000000500000055010000
|
||||||
|
0600000012000000060000005601000007000000100000000700000058010000
|
||||||
|
080000000F0000000800000059010000090000000E000000090000005A010000
|
||||||
|
0A0000000C0000000A0000005C0100000C0000000B0000000C0000005D010000
|
||||||
|
0D0000000A0000000D0000005E0100000E000000090000000E0000005F010000
|
||||||
|
1000000008000000100000006001000011000000070000001100000061010000
|
||||||
|
1300000006000000130000006201000015000000050000001500000063010000
|
||||||
|
18000000040000001800000064010000ED00000005000000ED00000063010000
|
||||||
|
F000000006000000F000000062010000F200000007000000F200000061010000
|
||||||
|
F400000008000000F400000060010000F500000009000000F50000005F010000
|
||||||
|
F70000000A000000F70000005E010000F80000000B000000F80000005D010000
|
||||||
|
F90000000C000000F90000005C010000FB0000000E000000FB0000005A010000
|
||||||
|
FC0000000F000000FC00000059010000FD00000010000000FD00000058010000
|
||||||
|
FE00000012000000FE00000056010000FF00000013000000FF00000055010000
|
||||||
|
0001000015000000000100005301000001010000170000000101000051010000
|
||||||
|
020100001A000000020100004E01000003010000}
|
||||||
|
end
|
||||||
|
object Terminal: TLabel [1]
|
||||||
|
Left = 72
|
||||||
|
Top = 5
|
||||||
|
Width = 209
|
||||||
|
Height = 20
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'Comprar Bonos'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clAqua
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label6: TLabel [2]
|
||||||
|
Left = 34
|
||||||
|
Top = 41
|
||||||
|
Width = 145
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Fecha de compra:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clYellow
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label1: TLabel [3]
|
||||||
|
Left = 184
|
||||||
|
Top = 41
|
||||||
|
Width = 71
|
||||||
|
Height = 20
|
||||||
|
Caption = '12/02/00'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clLime
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label2: TLabel [4]
|
||||||
|
Left = 34
|
||||||
|
Top = 89
|
||||||
|
Width = 156
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Tiempo contratado:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label3: TLabel [5]
|
||||||
|
Left = 34
|
||||||
|
Top = 137
|
||||||
|
Width = 137
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Coste del BONO:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label4: TLabel [6]
|
||||||
|
Left = 306
|
||||||
|
Top = 137
|
||||||
|
Width = 11
|
||||||
|
Height = 20
|
||||||
|
Caption = '<27>'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Shape4: TShape [7]
|
||||||
|
Left = 249
|
||||||
|
Top = 105
|
||||||
|
Width = 7
|
||||||
|
Height = 7
|
||||||
|
Shape = stCircle
|
||||||
|
end
|
||||||
|
object Shape3: TShape [8]
|
||||||
|
Left = 249
|
||||||
|
Top = 93
|
||||||
|
Width = 7
|
||||||
|
Height = 7
|
||||||
|
Shape = stCircle
|
||||||
|
end
|
||||||
|
object Bevel1: TBevel [9]
|
||||||
|
Left = 32
|
||||||
|
Top = 72
|
||||||
|
Width = 295
|
||||||
|
Height = 9
|
||||||
|
Shape = bsTopLine
|
||||||
|
end
|
||||||
|
object CosteBono: TEdit
|
||||||
|
Left = 176
|
||||||
|
Top = 134
|
||||||
|
Width = 121
|
||||||
|
Height = 28
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 1
|
||||||
|
end
|
||||||
|
object Horas: TComboBox
|
||||||
|
Left = 208
|
||||||
|
Top = 88
|
||||||
|
Width = 40
|
||||||
|
Height = 28
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
ItemHeight = 20
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 2
|
||||||
|
Text = '00'
|
||||||
|
Items.Strings = (
|
||||||
|
'1'
|
||||||
|
'2'
|
||||||
|
'3'
|
||||||
|
'4'
|
||||||
|
'5'
|
||||||
|
'6'
|
||||||
|
'7'
|
||||||
|
'8'
|
||||||
|
'9'
|
||||||
|
'10'
|
||||||
|
'12'
|
||||||
|
'15'
|
||||||
|
'20'
|
||||||
|
'24')
|
||||||
|
end
|
||||||
|
object Min: TComboBox
|
||||||
|
Left = 258
|
||||||
|
Top = 88
|
||||||
|
Width = 40
|
||||||
|
Height = 28
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
ItemHeight = 20
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 3
|
||||||
|
Text = '00'
|
||||||
|
Items.Strings = (
|
||||||
|
'0'
|
||||||
|
'5'
|
||||||
|
'10'
|
||||||
|
'15'
|
||||||
|
'20'
|
||||||
|
'25'
|
||||||
|
'30'
|
||||||
|
'35'
|
||||||
|
'40'
|
||||||
|
'45'
|
||||||
|
'50'
|
||||||
|
'55')
|
||||||
|
end
|
||||||
|
object BitBtn1: TBitBtn
|
||||||
|
Left = 120
|
||||||
|
Top = 176
|
||||||
|
Width = 121
|
||||||
|
Height = 33
|
||||||
|
Caption = 'Aceptar'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 4
|
||||||
|
OnClick = BitBtn1Click
|
||||||
|
Glyph.Data = {
|
||||||
|
8E030000424D8E03000000000000760000002800000042000000160000000100
|
||||||
|
04000000000018030000C40E0000C40E00001000000000000000000000000000
|
||||||
|
80000080000000808000800000008000800080800000C0C0C000808080000000
|
||||||
|
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555
|
||||||
|
5555555555555555599999999555555555555555555555555555550000005555
|
||||||
|
5555555555555555555555599999999999955555555555555555555555555500
|
||||||
|
0000555555555555555555555555559999999999999955555555555555555555
|
||||||
|
55555500000055555555555555555555555559999FFFFFFF999995552AAAAA2B
|
||||||
|
C4B2ACACC225550000005555555555555555555555559999FFFFFFFFFF999955
|
||||||
|
2AAAAA2C44C2ACAC22225500000022222222222222222255555999999FFFFFFF
|
||||||
|
FFF999952AAAAA2B4CB2ACACC2A2250000002AAAAA2BC4B2ACACC22555599999
|
||||||
|
99FF000000FF99952CACCA2C44B2AAAAA2A2220000002AAAAA2C44C2ACAC2222
|
||||||
|
550000F999907777770FF9992CAC2A2BC4C2AAAAA2A2A20000002AAAAA2B4CB2
|
||||||
|
ACACC2A2254C4C009999FFF00000F9992CACCA2B44B2AAAAA2A2A20000002CAC
|
||||||
|
CA2C44B2AAAAA2A222C4C40779999FFF777709992222222BBBB2222222A2A200
|
||||||
|
00002CAC2A2BC4C2AAAAA2A2A2CCCC0FFF9999F00000F9992222222BBBB22222
|
||||||
|
2AA2A20000002CACCA2B44B2AAAAA2A2A2CCCC000FF9999F7770F9992AAAAA2B
|
||||||
|
C4B2ACACC2AAA20000002222222BBBBB222222A2A200000FF0FF9999000FF999
|
||||||
|
2AAAAA2C44C2ACAC22A2A2000000522AAAA2BBBBB2AAAA22A2999FFFFF0FF999
|
||||||
|
9FFFF9992AAAAA2B4CB2ACACC2A2A2000000552222222BBBBB222222A2999FFF
|
||||||
|
FFF00F9999FFF9992CACCA2C44B2AAAAA2A2A200000055522AAAA2BBBBB2AAAA
|
||||||
|
225999FFFFFFF0F9999F99952CAC2A2BC4C2AAAAA2A2A200000055552222222B
|
||||||
|
BBBB22222259999FFFFFFF00999999952CACCA2B44B2AAAAA2A2A20000005555
|
||||||
|
555555555555555555559999FFFFFFFFF99999552222222BBBBB222222A2A200
|
||||||
|
0000555555555555555555555555599999FFFFFF99999555522AAAA2BBBBB2AA
|
||||||
|
AA22A20000005555555555555555555555555599999999999999555555222222
|
||||||
|
2BBBBB222222A200000055555555555555555555555555599999999999955555
|
||||||
|
55522AAAA2BBBBB2AAAA22000000555555555555555555555555555559999999
|
||||||
|
955555555555555555555555555555000000}
|
||||||
|
NumGlyphs = 3
|
||||||
|
end
|
||||||
|
end
|
41
ComprarBono.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef ComprarBonoH
|
||||||
|
#define ComprarBonoH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include "CoolForm.hpp"
|
||||||
|
#include "FormularioREUSABLE.h"
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TCBono : public TFormREUSABLE
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TLabel *Terminal;
|
||||||
|
TLabel *Label6;
|
||||||
|
TLabel *Label1;
|
||||||
|
TLabel *Label2;
|
||||||
|
TLabel *Label3;
|
||||||
|
TLabel *Label4;
|
||||||
|
TEdit *CosteBono;
|
||||||
|
TComboBox *Horas;
|
||||||
|
TShape *Shape4;
|
||||||
|
TShape *Shape3;
|
||||||
|
TComboBox *Min;
|
||||||
|
TBevel *Bevel1;
|
||||||
|
TBitBtn *BitBtn1;
|
||||||
|
void __fastcall BitBtn1Click(TObject *Sender);
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TCBono(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TCBono *CBono;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
146
CtrlCfg.cpp
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <io.h>
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "CtrlCfg.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma link "FormularioREUSABLE"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TElementosCFG *ElementosCFG;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TElementosCFG::TElementosCFG(TComponent* Owner)
|
||||||
|
: TFormREUSABLE(Owner)
|
||||||
|
{
|
||||||
|
PosiblesCambios = false;
|
||||||
|
|
||||||
|
TbAppl->Active = true;
|
||||||
|
TbPrecios->Active = true;
|
||||||
|
TbElementosCFG->Active = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElementosCFG::FormClose(TObject *Sender, TCloseAction &Action)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
TbElementosCFG->Post();
|
||||||
|
if ( PosiblesCambios )
|
||||||
|
{
|
||||||
|
// Cambios en la CFG.
|
||||||
|
if ( Application->MessageBox("Ha efectuado cambios en las listas de control.\n\nPara actualizar los clientes, ahora, siga estos pasos:\n\t-Active todos los clientes\n\t-Asegurese de que existe conexion\n\t-Pulse el boton ACEPTAR\n\n\nY espere unos minutos antes de operar con ning<6E>n terminal\nhasta que se concluya el envio completo de las listas.\n\nNO DESCONECTE NINGUN TERMINAL HASTA CONCLUIR EL ENVIO\nTanto CLIENTE y SERVIDOR prodrian quedar ALTAMENTE INESTABLE", "<EFBFBD><EFBFBD><EFBFBD> ACTUALIZACION DE LISTAS !!!", MB_OKCANCEL + MB_DEFBUTTON1) == ID_CANCEL )
|
||||||
|
PosiblesCambios = false;
|
||||||
|
}
|
||||||
|
} catch(...) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::TbPreciosBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbPrecios -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
// Usamos la propiedad FielDefs para definir
|
||||||
|
// las columnas que contendr<64> la tabla
|
||||||
|
TbPrecios -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
TbPrecios -> FieldDefs -> Add("Tiempo", ftTime, 0, false );
|
||||||
|
TbPrecios -> FieldDefs -> Add("Precio", ftCurrency, 0, false );
|
||||||
|
|
||||||
|
TbPrecios -> IndexDefs -> Clear();
|
||||||
|
TbPrecios -> IndexDefs -> Add("Primary", "Tiempo", TIndexOptions() << ixPrimary << ixUnique );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbPrecios -> CreateTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::SpeedButton1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Terminal->Caption = "Configuraci<EFBFBD>n de los Terminales";
|
||||||
|
|
||||||
|
DBGrid3->Enabled = false;
|
||||||
|
DBGrid3->Visible = false;
|
||||||
|
|
||||||
|
DBGrid2->Enabled = false;
|
||||||
|
DBGrid2->Visible = false;
|
||||||
|
|
||||||
|
DBGrid1->Enabled = true;
|
||||||
|
DBGrid1->Visible = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::SpeedButton2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Terminal->Caption = "Configuraci<EFBFBD>n de Precios";
|
||||||
|
|
||||||
|
DBGrid3->Enabled = false;
|
||||||
|
DBGrid3->Visible = false;
|
||||||
|
|
||||||
|
DBGrid1->Enabled = false;
|
||||||
|
DBGrid1->Visible = false;
|
||||||
|
|
||||||
|
DBGrid2->Enabled = true;
|
||||||
|
DBGrid2->Visible = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElementosCFG::SpeedButton3Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Terminal->Caption = "Aplicaciones Protegidas";
|
||||||
|
|
||||||
|
DBGrid2->Enabled = false;
|
||||||
|
DBGrid2->Visible = false;
|
||||||
|
|
||||||
|
DBGrid1->Enabled = false;
|
||||||
|
DBGrid1->Visible = false;
|
||||||
|
|
||||||
|
DBGrid3->Enabled = true;
|
||||||
|
DBGrid3->Visible = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::TbApplBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbAppl -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
// Usamos la propiedad FielDefs para definir
|
||||||
|
// las columnas que contendr<64> la tabla
|
||||||
|
TbAppl -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
TbAppl -> FieldDefs -> Add("idTA", ftString, 14, false );
|
||||||
|
TbAppl -> FieldDefs -> Add("NAppl", ftString, 14, false );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbAppl -> CreateTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::TbApplBeforeInsert(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
if ( TbAppl->RecordCount > 100 )
|
||||||
|
{
|
||||||
|
ShowMessage( "Esta versi<73>n posee limitaciones,\nrespecto al n<> de aplicaciones a bloquear\n<EFBFBD>Sobrepaso el n<> m<>ximo permitido!");
|
||||||
|
TbAppl->Cancel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::TbApplAfterPost(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
PosiblesCambios = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TElementosCFG::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrCancel;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
CtrlCfg.dfm
Normal file
53
CtrlCfg.h
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlCfgH
|
||||||
|
#define CtrlCfgH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include "CoolForm.hpp"
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Db.hpp>
|
||||||
|
#include <DBGrids.hpp>
|
||||||
|
#include <DBTables.hpp>
|
||||||
|
#include <Grids.hpp>
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include "FormularioREUSABLE.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TElementosCFG : public TFormREUSABLE
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TLabel *Terminal;
|
||||||
|
TTable *TbElementosCFG;
|
||||||
|
TDataSource *DsElementosCFG;
|
||||||
|
TDBGrid *DBGrid1;
|
||||||
|
TTable *TbPrecios;
|
||||||
|
TDataSource *DsPrecios;
|
||||||
|
TDBGrid *DBGrid2;
|
||||||
|
TSpeedButton *SpeedButton1;
|
||||||
|
TSpeedButton *SpeedButton2;
|
||||||
|
TSpeedButton *SpeedButton3;
|
||||||
|
TDBGrid *DBGrid3;
|
||||||
|
TTable *TbAppl;
|
||||||
|
TDataSource *DsAppl;
|
||||||
|
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
|
||||||
|
void __fastcall TbPreciosBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall SpeedButton1Click(TObject *Sender);
|
||||||
|
void __fastcall SpeedButton2Click(TObject *Sender);
|
||||||
|
void __fastcall SpeedButton3Click(TObject *Sender);
|
||||||
|
void __fastcall TbApplBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall TbApplBeforeInsert(TDataSet *DataSet);
|
||||||
|
void __fastcall TbApplAfterPost(TDataSet *DataSet);
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
bool PosiblesCambios;
|
||||||
|
__fastcall TElementosCFG(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TElementosCFG *ElementosCFG;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
||||||
|
|
14
CtrlD_PasswordDlg.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
//---------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "CtrlD_PasswordDlg.h"
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TPasswordDlg *PasswordDlg;
|
||||||
|
//---------------------------------------------------------------------
|
||||||
|
__fastcall TPasswordDlg::TPasswordDlg(TComponent* AOwner)
|
||||||
|
: TForm(AOwner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------
|
BIN
CtrlD_PasswordDlg.dfm
Normal file
29
CtrlD_PasswordDlg.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlD_PasswordDlgH
|
||||||
|
#define CtrlD_PasswordDlgH
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <SysUtils.hpp>
|
||||||
|
#include <Windows.hpp>
|
||||||
|
#include <System.hpp>
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
class TPasswordDlg : public TForm
|
||||||
|
{
|
||||||
|
__published:
|
||||||
|
TLabel *Label1;
|
||||||
|
TEdit *Password;
|
||||||
|
TButton *OKBtn;
|
||||||
|
TButton *CancelBtn;
|
||||||
|
private:
|
||||||
|
public:
|
||||||
|
virtual __fastcall TPasswordDlg(TComponent* AOwner);
|
||||||
|
};
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TPasswordDlg *PasswordDlg;
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#endif
|
857
CtrlDog.cpp
Normal file
@ -0,0 +1,857 @@
|
|||||||
|
|
||||||
|
/****************************************\
|
||||||
|
|* */
|
||||||
|
#define ESTOY_PROBANDO
|
||||||
|
// #define SIN_BLOQUEOS
|
||||||
|
/* *|
|
||||||
|
\****************************************/
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "CtrlDog.h"
|
||||||
|
#include "CtrlD_PasswordDlg.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "Phantom"
|
||||||
|
#pragma link "DigitNum"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
|
||||||
|
#include <winuser.h>
|
||||||
|
#include <registry.hpp>
|
||||||
|
|
||||||
|
#define RECORDSYSTEM "C:\\WinRCD.log"
|
||||||
|
|
||||||
|
TDog *Dog;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TDog::TDog(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Memo1->Lines->LoadFromFile( RECORDSYSTEM );
|
||||||
|
if ( Memo1->Lines->Count > 400 )
|
||||||
|
{
|
||||||
|
for ( int i=0; i<100; i++ )
|
||||||
|
Memo1->Lines->Delete( 3 );
|
||||||
|
}
|
||||||
|
} catch(...) {
|
||||||
|
Memo1->Lines->Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
siMinimizar = new TStringList();
|
||||||
|
noMinimizar = new TStringList();
|
||||||
|
snMinimizar = new TStringList();
|
||||||
|
noAbrir = new TStringList();
|
||||||
|
ObtenListaAplicaciones();
|
||||||
|
|
||||||
|
|
||||||
|
AllowClose = false;
|
||||||
|
CanBeDisconect = true;
|
||||||
|
|
||||||
|
Dig1->Value = 0; Dig2->Value = 0;
|
||||||
|
|
||||||
|
TrayMessage(NIM_ADD);
|
||||||
|
TrayMessage(NIM_MODIFY);
|
||||||
|
|
||||||
|
Application->OnMinimize = AppRestore;
|
||||||
|
|
||||||
|
HookAutoStartProgram();
|
||||||
|
|
||||||
|
Top = ( Screen->Height / 2) - (Height / 2 );
|
||||||
|
Left = ( Screen->Width / 2 )- (Width / 2 );
|
||||||
|
iLockSystem( true );
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
typedef struct tagACCEL { // accl
|
||||||
|
BYTE fVirt;
|
||||||
|
WORD key;
|
||||||
|
WORD cmd;
|
||||||
|
} ACCEL;
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
ACCEL AltTAB;
|
||||||
|
AltTAB.fVirt = FALT;
|
||||||
|
AltTAB.key = VK_TAB;
|
||||||
|
AltTAB.cmd = 0;
|
||||||
|
HACCEL hAltTAB = CreateAcceleratorTable( &AltTAB, 1 );
|
||||||
|
|
||||||
|
*/
|
||||||
|
Tiempo = EncodeTime( 0, 0, 0, 0 );
|
||||||
|
TryClose = false;
|
||||||
|
|
||||||
|
/****/
|
||||||
|
Tiempo = EncodeTime( 0, 0, 30, 0 );
|
||||||
|
SetState(true);
|
||||||
|
/****/
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::DrawItem(TMessage& Msg)
|
||||||
|
{
|
||||||
|
IconDrawItem((LPDRAWITEMSTRUCT)Msg.LParam);
|
||||||
|
TForm::Dispatch(&Msg);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::MyNotify(TMessage& Msg)
|
||||||
|
{
|
||||||
|
POINT MousePos;
|
||||||
|
|
||||||
|
switch(Msg.LParam)
|
||||||
|
{
|
||||||
|
case WM_RBUTTONUP:
|
||||||
|
if ( GetCursorPos(&MousePos) )
|
||||||
|
{
|
||||||
|
PopupMenu1->PopupComponent = Dog;
|
||||||
|
SetForegroundWindow(Handle);
|
||||||
|
PopupMenu1->Popup(MousePos.x, MousePos.y);
|
||||||
|
PopupMenu1->PopupComponent = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WM_LBUTTONDBLCLK:
|
||||||
|
Height = 126;
|
||||||
|
Visible = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TForm::Dispatch(&Msg);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
bool __fastcall TDog::TrayMessage(DWORD dwMessage)
|
||||||
|
{
|
||||||
|
NOTIFYICONDATA tnd;
|
||||||
|
PSTR pszTip;
|
||||||
|
|
||||||
|
pszTip = TipText();
|
||||||
|
|
||||||
|
tnd.cbSize = sizeof(NOTIFYICONDATA);
|
||||||
|
tnd.hWnd = Handle;
|
||||||
|
tnd.uID = IDC_MYICON;
|
||||||
|
tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
|
||||||
|
tnd.uCallbackMessage = MYWM_NOTIFY;
|
||||||
|
|
||||||
|
if (dwMessage == NIM_MODIFY)
|
||||||
|
{
|
||||||
|
tnd.hIcon = IconHandle();
|
||||||
|
if (pszTip)
|
||||||
|
lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
|
||||||
|
else
|
||||||
|
tnd.szTip[0] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tnd.hIcon = NULL;
|
||||||
|
tnd.szTip[0] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return (Shell_NotifyIcon(dwMessage, &tnd));
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
HANDLE __fastcall TDog::IconHandle(void)
|
||||||
|
{
|
||||||
|
return Image1 -> Picture->Icon->Handle;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
PSTR __fastcall TDog::TipText(void)
|
||||||
|
{
|
||||||
|
if (Timer1->Enabled)
|
||||||
|
return ("Acceso al sistema premitido");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, DateTimeToStr(Now()) + " ATACANTE DESCONOCIDO (ACCESO NO AUTORIZADO)" );
|
||||||
|
Memo1->Lines->Insert( 0, DateTimeToStr(Now()) + " -------- ALARMA SILENCIOSA ACTIVADA -------" );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
return ("SISTEMA PROTEGIDO");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi)
|
||||||
|
{
|
||||||
|
HICON hIcon;
|
||||||
|
hIcon = (HICON)LoadImage(g_hinst, MAKEINTRESOURCE(lpdi->CtlID), IMAGE_ICON, 16, 16, 0);
|
||||||
|
if (!hIcon)
|
||||||
|
return(FALSE);
|
||||||
|
|
||||||
|
DrawIconEx(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top, hIcon, 16, 16, 0, NULL, DI_NORMAL);
|
||||||
|
return(TRUE);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::SetState( bool OnOff )
|
||||||
|
{
|
||||||
|
/////////////
|
||||||
|
Memo1->Lines->Insert( 0, "Terminal " + (OnOff ? AnsiString("ON") : AnsiString("OFF") ) );
|
||||||
|
if ( OnOff )
|
||||||
|
{
|
||||||
|
TiempoInicio = TDateTime::CurrentTime();
|
||||||
|
|
||||||
|
Memo1->Lines->Insert( 0, " `------ Durante --> " + Tiempo.TimeString() );
|
||||||
|
unsigned short hour, min, sec, msec;
|
||||||
|
Tiempo.DecodeTime( &hour, &min, &sec, &msec );
|
||||||
|
Timer1->Interval = msec + ( sec + ( (min+2) + hour*60 )*60 )*1000 ;
|
||||||
|
Timer1->Enabled = true;
|
||||||
|
|
||||||
|
Reloj->Enabled = true;
|
||||||
|
Dig1->Value = hour; Dig2->Value = min;
|
||||||
|
SystemLock->Enabled = false;
|
||||||
|
iLockSystem( false );
|
||||||
|
} else {
|
||||||
|
Tiempo = 0;
|
||||||
|
SystemLock->Enabled = true;
|
||||||
|
Timer1->Enabled = false;
|
||||||
|
Reloj->Enabled = false;
|
||||||
|
Dig1->Value = 0; Dig2->Value = 0;
|
||||||
|
iLockSystem( true );
|
||||||
|
}
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::ServerSocketAccept(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
StatusBar1->SimpleText = "Conexi<EFBFBD>n aceptada de " + Socket->RemoteAddress;
|
||||||
|
Memo1->Lines->Insert( 0, StatusBar1->SimpleText );
|
||||||
|
|
||||||
|
int CodOp; double pTiempo;
|
||||||
|
CanBeDisconect = false;
|
||||||
|
|
||||||
|
Socket->ReceiveBuf( &CodOp, sizeof(int) );
|
||||||
|
|
||||||
|
switch( CodOp )
|
||||||
|
{
|
||||||
|
// On / Off
|
||||||
|
case 6669:
|
||||||
|
Socket->ReceiveBuf( &CodOp, sizeof(int) );
|
||||||
|
Socket->ReceiveBuf( &pTiempo, sizeof(double) );
|
||||||
|
Tiempo = pTiempo;
|
||||||
|
SetState( CodOp ? true : false );
|
||||||
|
CodOp = 54321;
|
||||||
|
Socket->SendBuf( &CodOp, sizeof(int) );
|
||||||
|
break;
|
||||||
|
// CERRAR WINDOWS
|
||||||
|
case 6660:
|
||||||
|
Socket->ReceiveBuf( &CodOp, sizeof(int) );
|
||||||
|
Socket->ReceiveBuf( &pTiempo, sizeof(double) );
|
||||||
|
Tiempo = pTiempo;
|
||||||
|
CodOp = 54321;
|
||||||
|
Socket->SendBuf( &CodOp, sizeof(int) );
|
||||||
|
CanBeDisconect = true;
|
||||||
|
Memo1->Lines->Insert( 0, "Recibida petici<63>n de CERRAR WINDOWS ::" + Socket->RemoteAddress );
|
||||||
|
CerrarWindows1Click(0);
|
||||||
|
break;
|
||||||
|
// Query TIME
|
||||||
|
case 6661:
|
||||||
|
Memo1->Lines->Insert( 0, "Recibida petici<63>n de Tiempo ::" + Socket->RemoteAddress );
|
||||||
|
Socket->SendBuf( &Tiempo, sizeof(double) );
|
||||||
|
// Socket->SendBuf( &TiempoInicio, sizeof(double) );
|
||||||
|
Socket->SendBuf( &(Tiempo - ( TDateTime::CurrentTime() - TiempoInicio )), sizeof(double) );
|
||||||
|
CodOp = 54321;
|
||||||
|
Socket->SendBuf( &CodOp, sizeof(int) );
|
||||||
|
Memo1->Lines->Insert( 0, " -----> Tiempo pedido " + Tiempo );
|
||||||
|
Memo1->Lines->Insert( 0, " -----> Tiempo inicio " + TiempoInicio );
|
||||||
|
Memo1->Lines->Insert( 0, " -----> Servidor " + Socket->RemoteAddress );
|
||||||
|
break;
|
||||||
|
// Actualizar listas
|
||||||
|
case 6662:
|
||||||
|
{
|
||||||
|
int NumApli, i;
|
||||||
|
TRegistry *Registro;
|
||||||
|
char *Buffer;
|
||||||
|
|
||||||
|
Registro = new TRegistry;
|
||||||
|
|
||||||
|
Registro -> OpenKey( "\\Software\\JDsoft\\CtrlMstr", true );
|
||||||
|
|
||||||
|
Memo1->Lines->Insert( 0, "Actualizando Listas ::" + Socket->RemoteAddress );
|
||||||
|
|
||||||
|
Socket->ReceiveBuf( &NumApli, sizeof(int) );
|
||||||
|
Buffer = new char[ 15*NumApli ];
|
||||||
|
Registro -> WriteInteger( "NAppl-sC", NumApli );
|
||||||
|
for ( i=0; i<NumApli; i++ )
|
||||||
|
Socket->ReceiveBuf( (Buffer+15*i), sizeof(char)*15 );
|
||||||
|
Registro -> WriteBinaryData( "LAppl-sC", Buffer, sizeof(char)*15*NumApli+1 );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
Socket->ReceiveBuf( &NumApli, sizeof(int) );
|
||||||
|
Buffer = new char[ 15*NumApli ];
|
||||||
|
Registro -> WriteInteger( "NAppl-nC", NumApli );
|
||||||
|
for ( i=0; i<NumApli; i++ )
|
||||||
|
Socket->ReceiveBuf( (Buffer+15*i), sizeof(char)*15 );
|
||||||
|
Registro -> WriteBinaryData( "LAppl-nC", Buffer, sizeof(char)*15*NumApli+1 );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
Socket->ReceiveBuf( &NumApli, sizeof(int) );
|
||||||
|
Buffer = new char[ 15*NumApli ];
|
||||||
|
Registro -> WriteInteger( "NAppl-snC", NumApli );
|
||||||
|
for ( i=0; i<NumApli; i++ )
|
||||||
|
Socket->ReceiveBuf( (Buffer+15*i), sizeof(char)*15 );
|
||||||
|
Registro -> WriteBinaryData( "LAppl-snC", Buffer, sizeof(char)*15*NumApli+1 );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
Socket->ReceiveBuf( &NumApli, sizeof(int) );
|
||||||
|
Buffer = new char[ 15*NumApli ];
|
||||||
|
Registro -> WriteInteger( "NAppl-nA", NumApli );
|
||||||
|
for ( i=0; i<NumApli; i++ )
|
||||||
|
Socket->ReceiveBuf( (Buffer+15*i), sizeof(char)*15 );
|
||||||
|
Registro -> WriteBinaryData( "LAppl-nA", Buffer, sizeof(char)*15*NumApli+1 );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
|
||||||
|
delete Registro;
|
||||||
|
}
|
||||||
|
CodOp = 54321;
|
||||||
|
Socket->SendBuf( &CodOp, sizeof(int) );
|
||||||
|
ObtenListaAplicaciones();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Memo1->Lines->Insert( 0, "Mensaje desconocido ::" + Socket->RemoteAddress );
|
||||||
|
CodOp = -1;
|
||||||
|
Socket->SendBuf( &CodOp, sizeof(int) );
|
||||||
|
}
|
||||||
|
Memo1->Lines->Insert( 0, "Tramites Finalizados ::" + Socket->RemoteAddress );
|
||||||
|
StatusBar1->SimpleText = "Escuchando nuevas ordenes...";
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
CanBeDisconect = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::ObtenListaAplicaciones(void)
|
||||||
|
{
|
||||||
|
int i, nListaS, nListaN, nListaSN, nListaA; char *Buffer;
|
||||||
|
TRegistry *Registro;
|
||||||
|
Registro = new TRegistry;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Registro -> OpenKey( "\\Software\\JDsoft\\CtrlMstr", false );
|
||||||
|
|
||||||
|
nListaS = Registro -> ReadInteger( "NAppl-sC" );
|
||||||
|
Buffer = new char [ nListaS*15 + 1 ];
|
||||||
|
Registro -> ReadBinaryData( "LAppl-sC", (void *)Buffer, (sizeof(char)*15*nListaS +1) );
|
||||||
|
|
||||||
|
siMinimizar->Clear();
|
||||||
|
//ShowMessage( AnsiString(nListaS) );
|
||||||
|
for ( i=0; i < nListaS; i++ )
|
||||||
|
//{
|
||||||
|
siMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) );
|
||||||
|
//Memo1->Lines->Insert( 0, AnsiString( (char *)(Buffer+i*15) ) );
|
||||||
|
//}
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
nListaN = Registro -> ReadInteger( "NAppl-nC" );
|
||||||
|
Buffer = new char [ nListaN*15 ];
|
||||||
|
Registro -> ReadBinaryData( "LAppl-nC", (void *)Buffer, (sizeof(char)*15*nListaN +1) );
|
||||||
|
|
||||||
|
noMinimizar->Clear();
|
||||||
|
for ( i=0; i < nListaN; i++ )
|
||||||
|
//{
|
||||||
|
noMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) );
|
||||||
|
//Memo1->Lines->Insert( 0, (Buffer+i*15) );
|
||||||
|
//}
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
nListaSN = Registro -> ReadInteger( "NAppl-snC" );
|
||||||
|
Buffer = new char [ nListaSN*15 ];
|
||||||
|
Registro -> ReadBinaryData( "LAppl-snC", (void *)Buffer, (sizeof(char)*15*nListaSN +1) );
|
||||||
|
noMinimizar->Clear();
|
||||||
|
for ( i=0; i < nListaSN; i++ )
|
||||||
|
snMinimizar->Add( AnsiString( (char *)(Buffer+i*15) ) );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
nListaA = Registro -> ReadInteger( "NAppl-nA" );
|
||||||
|
Buffer = new char [ nListaA*15 ];
|
||||||
|
Registro -> ReadBinaryData( "LAppl-nA", (void *)Buffer, (sizeof(char)*15*nListaA +1) );
|
||||||
|
noAbrir->Clear();
|
||||||
|
for ( i=0; i < nListaA; i++ )
|
||||||
|
noAbrir->Add( AnsiString( (char *)(Buffer+i*15) ) );
|
||||||
|
delete Buffer;
|
||||||
|
|
||||||
|
} catch(...) {
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
|
Memo1->Lines->Insert( 0, Format( "Listas Cargadas: %02dS::%02dN", ARRAYOFCONST( ( siMinimizar->Count, noMinimizar->Count ) ) ) );
|
||||||
|
Memo1->Lines->Insert( 0, Format( "Listas Cargadas: %02dC::%02dA", ARRAYOFCONST( ( snMinimizar->Count, noAbrir->Count ) ) ) );
|
||||||
|
|
||||||
|
delete Registro;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::ServerSocketClientConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
StatusBar1->SimpleText = "Cliente Conectado ";
|
||||||
|
Memo1->Lines->Insert( 0, "Cliente Conectado " );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::ServerSocketClientDisconnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
if ( ! CanBeDisconect )
|
||||||
|
Memo1->Lines->Insert( 0, "DESCONEXION FORZADA ::" + Socket->LocalAddress );
|
||||||
|
else
|
||||||
|
Memo1->Lines->Insert( 0, "Desconexi<EFBFBD>n en regla ::" );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::ServerSocketClientError(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente <20> ERROR ! " + AnsiString( ErrorCode ) + "::" + Socket->LocalAddress );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::ServerSocketGetSocket(TObject *Sender, int Socket,
|
||||||
|
TServerClientWinSocket *&ClientSocket)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Obtuvimos un socket" );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::ServerSocketListen(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " /----->" + Socket->RemoteAddress );
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Estoy escuchando ::" + Socket->LocalAddress );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::FormClose(TObject *Sender, TCloseAction &Action)
|
||||||
|
{
|
||||||
|
ServerSocket->Active = false;
|
||||||
|
if ( AllowClose )
|
||||||
|
{
|
||||||
|
delete siMinimizar;
|
||||||
|
delete noMinimizar;
|
||||||
|
delete snMinimizar;
|
||||||
|
delete noAbrir;
|
||||||
|
} else {
|
||||||
|
#ifndef ESTOY_PROBANDO
|
||||||
|
iLockSystem( true );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::Timer1Timer(TObject *Sender)
|
||||||
|
{
|
||||||
|
SetState( false );
|
||||||
|
StatusBar1->SimpleText = "Sistema OFF --FORZADO--";
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::FormCloseQuery(TObject *Sender, bool &CanClose)
|
||||||
|
{
|
||||||
|
Visible = false;
|
||||||
|
#ifndef ESTOY_PROBANDO
|
||||||
|
CanClose = AllowClose;
|
||||||
|
#else
|
||||||
|
iLockSystem( false );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::FormShow(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( Timer1->Enabled )
|
||||||
|
{
|
||||||
|
Reloj->Enabled=true;
|
||||||
|
RelojTimer(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDog::RelojTimer(TObject *Sender)
|
||||||
|
{
|
||||||
|
// Actualizamos el tiempo que queda...
|
||||||
|
unsigned short hour, min, sec, msec;
|
||||||
|
|
||||||
|
(Tiempo - ( TDateTime::CurrentTime() - TiempoInicio )).DecodeTime( &hour, &min, &sec, &msec );
|
||||||
|
|
||||||
|
Dig1->Value = hour;
|
||||||
|
Dig2->Value = min;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::Label1DblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( Height == 354 ) Height = 126; else Height = 354;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDog::Tiemporestante1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Visible = true;
|
||||||
|
Height = 126;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::Status1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Visible = true;
|
||||||
|
Height = 354;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::CerrarWindows1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
// Shut down the system and force all applications to close.
|
||||||
|
AllowClose = true;
|
||||||
|
HookAutoStartProgram();
|
||||||
|
#ifndef SIN_BLOQUEOS
|
||||||
|
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE | EWX_POWEROFF, 0))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
AllowClose = false;
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " Error durante el cierre" );
|
||||||
|
Memo1->Lines->SaveToFile( RECORDSYSTEM );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::FormDestroy(TObject *Sender)
|
||||||
|
{
|
||||||
|
HookAutoStartProgram();
|
||||||
|
TrayMessage(NIM_DELETE);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::HookAutoStartProgram(void)
|
||||||
|
{
|
||||||
|
#ifndef SIN_BLOQUEOS
|
||||||
|
TRegistry *Registro;
|
||||||
|
Registro = new TRegistry;
|
||||||
|
|
||||||
|
try {
|
||||||
|
Registro -> OpenKey( "\\Software\\Microsoft\\Windows\\CurrentVersion\\Run", true );
|
||||||
|
Registro -> WriteString( "WinPowerManager", Application->ExeName );
|
||||||
|
} catch(...) {
|
||||||
|
// Do nothing...
|
||||||
|
}
|
||||||
|
|
||||||
|
delete Registro;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
bool MultimediaActive;
|
||||||
|
bool GetStyle( HWND hdl )
|
||||||
|
{
|
||||||
|
long style;
|
||||||
|
bool dev;
|
||||||
|
|
||||||
|
dev = false;
|
||||||
|
|
||||||
|
style = GetWindowLong(hdl,GWL_STYLE);
|
||||||
|
if(( style & WS_POPUP) == WS_POPUP)
|
||||||
|
{
|
||||||
|
if(((style & WS_GROUP) == WS_GROUP) && !
|
||||||
|
((style & WS_DISABLED) == WS_DISABLED) &&
|
||||||
|
((style & WS_SYSMENU) == WS_SYSMENU))
|
||||||
|
dev = true;
|
||||||
|
} else {
|
||||||
|
dev = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dev;
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
BOOL __stdcall MinimizeAllAplications( HWND hwnd, LPARAM lParam )
|
||||||
|
{
|
||||||
|
bool dev; int i;
|
||||||
|
char lpString[50];
|
||||||
|
AnsiString Text;
|
||||||
|
|
||||||
|
dev = true;
|
||||||
|
if ( hwnd != 0 )
|
||||||
|
{
|
||||||
|
GetWindowText( hwnd, lpString, 40 );
|
||||||
|
Text = AnsiString( lpString );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Aplicaciones especiales que he de minimizar constantemente...
|
||||||
|
if ( Text.Pos("Episode I Racer" ) ||
|
||||||
|
Text.Pos("Quake" )
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ShowWindow( hwnd, SW_MINIMIZE );
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LISTA DINAMICA DE VENTANAS A MINIMIZAR
|
||||||
|
for ( i=0; i < siMinimizar->Count; i++ )
|
||||||
|
if ( Text.Pos( siMinimizar->Strings[i] ) )
|
||||||
|
{
|
||||||
|
ShowWindow( hwnd, SW_MINIMIZE );
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Solo Ventanas visibles...
|
||||||
|
if ( IsWindowVisible( hwnd ) )
|
||||||
|
{
|
||||||
|
// ...y ademas ventanas PADRES
|
||||||
|
if ( GetWindow( hwnd, GW_OWNER) == 0 )
|
||||||
|
{
|
||||||
|
if ( ! GetStyle( hwnd ) )
|
||||||
|
{
|
||||||
|
if ( IsWindow( GetLastActivePopup( hwnd ) ) )
|
||||||
|
{
|
||||||
|
auto HWND hwPop;
|
||||||
|
hwPop = GetLastActivePopup( hwnd );
|
||||||
|
if ( !GetStyle(hwPop) ) return true;
|
||||||
|
} else return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LA VENTANA ES TIPO -TASK-BAR- y ADEMAS ES VISIBLE
|
||||||
|
|
||||||
|
// Ventanas ante las cuales me oculto
|
||||||
|
if ( Text.Pos("Reproductor mul") != 0 ||
|
||||||
|
Text.Pos("Inform<EFBFBD>tica DJ")
|
||||||
|
)
|
||||||
|
{
|
||||||
|
MultimediaActive = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// LISTA DINAMICA DE VENTANAS A RESPETAR
|
||||||
|
for ( i=0; i < noMinimizar->Count; i++ )
|
||||||
|
if ( Text.Pos( noMinimizar->Strings[i] ) )
|
||||||
|
{
|
||||||
|
MultimediaActive = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ventanas que no he de minimizar (PERO QUEDO DE PRIMER PLANO)
|
||||||
|
if ( ! ( Text.Pos("Sistema de Control") ||
|
||||||
|
Text.Pos("Creditos ocultos")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ShowWindow( hwnd, SW_MINIMIZE );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
dev = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dev;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
procedure TForm1.TerminateProcess1Click(Sender: TObject);
|
||||||
|
const
|
||||||
|
PROCESS_TERMINATE = 1;
|
||||||
|
var
|
||||||
|
ProcHandle: THandle;
|
||||||
|
begin
|
||||||
|
if (ListBox1.Items.count < 1) OR (ListBox1.ItemIndex < 0) then exit;
|
||||||
|
if (MessageDlg('Process: --> ' + ListBox1.Items[ListBox1.itemIndex]+ #10#13#10#13+
|
||||||
|
'TerminateProcess may lead the system into an instable state! '+#10#13+
|
||||||
|
'You should use this function only if you are sure about doing so.'+#10#13+
|
||||||
|
'Are You sure?', mtConfirmation, [mbYes, mbNo], 0) = mrYes)
|
||||||
|
then begin
|
||||||
|
ProcHandle := OpenProcess(PROCESS_TERMINATE, FALSE, DWORD(WinList1.GetProcessID(ListBox1.ItemIndex)));
|
||||||
|
try
|
||||||
|
if ProcHandle <> 0 then begin
|
||||||
|
if TerminateProcess(ProcHandle, $FFFFFFFF) then
|
||||||
|
WaitForSingleObject(ProcHandle, INFINITE);
|
||||||
|
end else
|
||||||
|
MessageDlg('Can not find the handle of the selected prozess!', mtError, [mbOK], 0);
|
||||||
|
finally
|
||||||
|
CloseHandle(ProcHandle);
|
||||||
|
end;
|
||||||
|
Refresh1Click(Sender);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
/*
|
||||||
|
BOOL __stdcall MyEnumDesktopProc( LPTSTR lpszDesktop, LPARAM lParam )
|
||||||
|
{
|
||||||
|
EnumDesktopWindows( lpszDesktop, ( WNDENUMPROC )MinimizeAllAplications, 0 );
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::SystemLockTimer(TObject *Sender)
|
||||||
|
{
|
||||||
|
#ifndef SIN_BLOQUEOS
|
||||||
|
MultimediaActive = false;
|
||||||
|
|
||||||
|
EnumWindows( ( WNDENUMPROC )MinimizeAllAplications, 0 );
|
||||||
|
|
||||||
|
if ( MultimediaActive || TryClose )
|
||||||
|
{
|
||||||
|
Visible = false;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
|
||||||
|
Top = ( Screen->Height / 2) - (Height / 2 );
|
||||||
|
Left = ( Screen->Width / 2 )- (Width / 2 );
|
||||||
|
|
||||||
|
if ( !Visible )Show();
|
||||||
|
// ShowWindow(this->Handle,SW_RESTORE);
|
||||||
|
SetForegroundWindow(this->Handle);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
iLockSystem( true );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::AppRestore(TObject *Sender)
|
||||||
|
{
|
||||||
|
Application->Restore();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::Shape2MouseDown(TObject *Sender,
|
||||||
|
TMouseButton Button, TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
if ( Shift.Contains(ssShift) && Shift.Contains(ssAlt) &&
|
||||||
|
Shift.Contains(ssCtrl) && Shift.Contains(ssDouble) )
|
||||||
|
{
|
||||||
|
TryClose = true;
|
||||||
|
|
||||||
|
TPasswordDlg *PasswordDlg;
|
||||||
|
PasswordDlg = new TPasswordDlg(this);
|
||||||
|
PasswordDlg->Password->Clear();
|
||||||
|
PasswordDlg -> ShowModal();
|
||||||
|
if ( PasswordDlg->Password->Text == "44959229170877" )
|
||||||
|
// if ( InputBox( "Creditos ocultos", "Donde estan:", "los creditos ocultos" ) == "44959229" )
|
||||||
|
{
|
||||||
|
TryClose = false;
|
||||||
|
AllowClose=true;
|
||||||
|
iLockSystem( false );
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
delete PasswordDlg;
|
||||||
|
TryClose = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::FormResize(TObject *Sender)
|
||||||
|
{
|
||||||
|
Top = ( Screen->Height / 2) - (Height / 2 );
|
||||||
|
Left = ( Screen->Width / 2 )- (Width / 2 );
|
||||||
|
#ifndef SIN_BLOQUEOS
|
||||||
|
if ( SystemLock->Enabled )
|
||||||
|
{
|
||||||
|
iLockSystem( true );
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::iLockSystem( bool status )
|
||||||
|
{
|
||||||
|
#ifdef SIN_BLOQUEOS
|
||||||
|
status = false;
|
||||||
|
#endif
|
||||||
|
if ( ! status ) // LIBRE DE BLOQUEOS
|
||||||
|
{
|
||||||
|
ClipCursor( NULL );
|
||||||
|
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, NULL,0);
|
||||||
|
// BorderIcons = (TBorderIcons()<< biSystemMenu);
|
||||||
|
} else { // INICIANDO BLOQUEOS
|
||||||
|
RECT ClipRect = { Left+2, Top+25, Left+Width-2, Top+120-20 };
|
||||||
|
ClipCursor( &ClipRect );
|
||||||
|
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1,NULL, 0);
|
||||||
|
// BorderIcons = BorderIcons - (TBorderIcons()<< biSystemMenu);
|
||||||
|
}
|
||||||
|
#define iTRAYBAR 0
|
||||||
|
#define iTRAYNOTIFY 1
|
||||||
|
#define iSTARTBUTTON 2
|
||||||
|
#define iAPPSWITCHBAR 3
|
||||||
|
#define iTRAYCLOCK 4
|
||||||
|
#define iDESKTOPICONS 5
|
||||||
|
|
||||||
|
|
||||||
|
HideOpt( iTRAYBAR, status );
|
||||||
|
HideOpt( iTRAYNOTIFY, status );
|
||||||
|
HideOpt( iSTARTBUTTON, status );
|
||||||
|
HideOpt( iAPPSWITCHBAR, status );
|
||||||
|
HideOpt( iTRAYCLOCK, status );
|
||||||
|
HideOpt( iDESKTOPICONS, status );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDog::HideOpt( int Option, bool Hide )
|
||||||
|
{
|
||||||
|
HWND Wnd;
|
||||||
|
|
||||||
|
switch( Option )
|
||||||
|
{
|
||||||
|
case iTRAYBAR :
|
||||||
|
Wnd = FindWindow("Shell_TrayWnd", NULL);
|
||||||
|
break;
|
||||||
|
case iTRAYNOTIFY :
|
||||||
|
Wnd = FindWindow("Shell_TrayWnd", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "TrayNotifyWnd", NULL);
|
||||||
|
break;
|
||||||
|
case iSTARTBUTTON :
|
||||||
|
Wnd = FindWindow("Shell_TrayWnd", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "Button", NULL);
|
||||||
|
break;
|
||||||
|
case iAPPSWITCHBAR :
|
||||||
|
Wnd = FindWindow("Shell_TrayWnd", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "ReBarWindow32", NULL);
|
||||||
|
break;
|
||||||
|
case iTRAYCLOCK :
|
||||||
|
Wnd = FindWindow("Shell_TrayWnd", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "TrayNotifyWnd", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "TrayClockWClass", NULL);
|
||||||
|
break;
|
||||||
|
case iDESKTOPICONS :
|
||||||
|
Wnd = FindWindow("Progman", NULL);
|
||||||
|
Wnd = FindWindowEx(Wnd, HWND(0), "ShellDll_DefView", NULL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( Wnd != 0 )
|
||||||
|
{
|
||||||
|
if ( Hide )
|
||||||
|
ShowWindow(Wnd, SW_HIDE);
|
||||||
|
else
|
||||||
|
ShowWindow(Wnd, SW_SHOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDog::Shape1MouseUp(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
#ifdef ESTOY_PROBANDO
|
||||||
|
static bool Rotate = true;
|
||||||
|
Tiempo = EncodeTime( 0, 1, 0, 0 );
|
||||||
|
if ( Rotate )
|
||||||
|
SetState( true );
|
||||||
|
else
|
||||||
|
SetState( false );
|
||||||
|
Rotate = !Rotate;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDog::FormClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( !SystemLock->Enabled )
|
||||||
|
Visible = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDog::Label2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
char zFileName[80], zParams[80], zDir[80];
|
||||||
|
if ( !SystemLock->Enabled )
|
||||||
|
ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "http:\\\\www.infdj.com"),
|
||||||
|
StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32);
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
CtrlDog.dfm
Normal file
124
CtrlDog.h
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlDogH
|
||||||
|
#define CtrlDogH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <ComCtrls.hpp>
|
||||||
|
#include <ScktComp.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Menus.hpp>
|
||||||
|
#include "Phantom.hpp"
|
||||||
|
#include "DigitNum.h"
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#define MYWM_NOTIFY (WM_APP+100)
|
||||||
|
#define IDC_MYICON 1006
|
||||||
|
extern HINSTANCE g_hinst;
|
||||||
|
LRESULT IconDrawItem(LPDRAWITEMSTRUCT lpdi);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TDog : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TMemo *Memo1;
|
||||||
|
TStatusBar *StatusBar1;
|
||||||
|
TServerSocket *ServerSocket;
|
||||||
|
TTimer *Timer1;
|
||||||
|
TTimer *Reloj;
|
||||||
|
TDigitNum *Dig1;
|
||||||
|
TShape *Shape2;
|
||||||
|
TShape *Shape1;
|
||||||
|
TDigitNum *Dig2;
|
||||||
|
TImage *Image1;
|
||||||
|
TBevel *Bevel1;
|
||||||
|
TBevel *Bevel2;
|
||||||
|
TBevel *Bevel3;
|
||||||
|
TBevel *Bevel4;
|
||||||
|
TLabel *Label1;
|
||||||
|
TLabel *Label2;
|
||||||
|
TPopupMenu *PopupMenu1;
|
||||||
|
TMenuItem *Tiemporestante1;
|
||||||
|
TMenuItem *Status1;
|
||||||
|
TMenuItem *CerrarWindows1;
|
||||||
|
TMenuItem *N1;
|
||||||
|
TTimer *SystemLock;
|
||||||
|
TPhantom *Phantom1;
|
||||||
|
void __fastcall ServerSocketAccept(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall ServerSocketClientConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
|
||||||
|
void __fastcall ServerSocketClientDisconnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall ServerSocketClientError(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
|
||||||
|
int &ErrorCode);
|
||||||
|
void __fastcall ServerSocketGetSocket(TObject *Sender, int Socket,
|
||||||
|
TServerClientWinSocket *&ClientSocket);
|
||||||
|
void __fastcall ServerSocketListen(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
|
||||||
|
void __fastcall Timer1Timer(TObject *Sender);
|
||||||
|
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
|
||||||
|
void __fastcall FormShow(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall RelojTimer(TObject *Sender);
|
||||||
|
void __fastcall Label1DblClick(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall Tiemporestante1Click(TObject *Sender);
|
||||||
|
void __fastcall Status1Click(TObject *Sender);
|
||||||
|
void __fastcall CerrarWindows1Click(TObject *Sender);
|
||||||
|
void __fastcall FormDestroy(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall SystemLockTimer(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall Shape2MouseDown(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall FormResize(TObject *Sender);
|
||||||
|
void __fastcall Shape1MouseUp(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y);
|
||||||
|
void __fastcall FormClick(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall Label2Click(TObject *Sender);
|
||||||
|
private: // User declarations
|
||||||
|
TDateTime Tiempo, TiempoInicio;
|
||||||
|
bool AllowClose;
|
||||||
|
void __fastcall SetState( bool OnOff );
|
||||||
|
|
||||||
|
void __fastcall DrawItem(TMessage& Msg);
|
||||||
|
void __fastcall MyNotify(TMessage& Msg);
|
||||||
|
bool __fastcall TrayMessage(DWORD dwMessage);
|
||||||
|
void __fastcall ObtenListaAplicaciones(void);
|
||||||
|
|
||||||
|
HANDLE __fastcall IconHandle(void);
|
||||||
|
PSTR __fastcall TipText(void);
|
||||||
|
|
||||||
|
void __fastcall HookAutoStartProgram(void);
|
||||||
|
void __fastcall iLockSystem( bool status );
|
||||||
|
|
||||||
|
void __fastcall HideOpt( int Option, bool Hide );
|
||||||
|
|
||||||
|
public: // User declarations
|
||||||
|
void __fastcall AppRestore(TObject *Sender);
|
||||||
|
bool CanBeDisconect;
|
||||||
|
__fastcall TDog(TComponent* Owner);
|
||||||
|
bool TryClose;
|
||||||
|
|
||||||
|
BEGIN_MESSAGE_MAP
|
||||||
|
MESSAGE_HANDLER(WM_DRAWITEM,TMessage,DrawItem)
|
||||||
|
MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,MyNotify)
|
||||||
|
END_MESSAGE_MAP(TForm)
|
||||||
|
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TStringList *siMinimizar, *noMinimizar, *snMinimizar, *noAbrir;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TDog *Dog;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
||||||
|
|
129
CtrlDogs.bpr
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.05.03"/>
|
||||||
|
<PROJECT value="CtrlDogs.exe"/>
|
||||||
|
<OBJFILES value="CtrlDogs.obj CtrlDog.obj CtrlD_PasswordDlg.obj"/>
|
||||||
|
<RESFILES value="CtrlDogs.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value=""/>
|
||||||
|
<RESDEPEN value="$(RESFILES) CtrlDog.dfm CtrlD_PasswordDlg.dfm"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value="PhantomPack.lib JDsoft.lib inet50.lib qrpt50.lib vcldbx50.lib vclbde50.lib
|
||||||
|
vcldb50.lib vclx50.lib vcl50.lib"/>
|
||||||
|
<SPARELIBS value="vcl50.lib vclx50.lib vcldb50.lib vclbde50.lib vcldbx50.lib qrpt50.lib
|
||||||
|
inet50.lib JDsoft.lib PhantomPack.lib"/>
|
||||||
|
<PACKAGES value="vclx50.bpi vcl50.bpi vcldb50.bpi vclbde50.bpi vcldbx50.bpi bcbsmp50.bpi
|
||||||
|
dclocx50.bpi qrpt50.bpi teeui50.bpi teedb50.bpi tee50.bpi ibsmp50.bpi
|
||||||
|
nmfast50.bpi inetdb50.bpi inet50.bpi JD_soft.bpi"/>
|
||||||
|
<PATHCPP value=".;"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="ilink32"/>
|
||||||
|
<USERDEFINES value=""/>
|
||||||
|
<SYSDEFINES value="NO_STRICT"/>
|
||||||
|
<MAINSOURCE value="CtrlDogs.cpp"/>
|
||||||
|
<INCLUDEPATH value="$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include"/>
|
||||||
|
<LIBPATH value="..\VCLs\lib;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib"/>
|
||||||
|
<WARNINGS value="-w-par -w-8027 -w-8026"/>
|
||||||
|
<WARNOPTSTR value=""/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-I$(BCB)\bin -I$(BCB)\objrepos -I$(BCB)\projects -I$(BCB)\include
|
||||||
|
-I$(BCB)\include\vcl -I..\VCLs\include -src_suffix cpp -boa"/>
|
||||||
|
<CFLAG1 value="-O2 -H=c:\PROGRAM\CBUILDER\CBUILD~1\lib\vcld.csm -Hc -Vx -Ve -X- -a8 -b-
|
||||||
|
-k- -vi -c -tWM"/>
|
||||||
|
<CFLAG2 value=""/>
|
||||||
|
<CFLAG3 value=""/>
|
||||||
|
<PFLAGS value="-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE
|
||||||
|
-$YD -$L- -$D- -v -JPHNV -M -JPHNE"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zn"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpe -x"/>
|
||||||
|
<IFLAGS value=""/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
|
||||||
|
</LINKER>
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=1
|
||||||
|
AutoIncBuild=1
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=70
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=3082
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=JD soft.
|
||||||
|
FileDescription=
|
||||||
|
FileVersion=1.0.0.70
|
||||||
|
InternalName=
|
||||||
|
LegalCopyright=Copyright (C) JD soft. 1990-1999
|
||||||
|
LegalTrademarks=
|
||||||
|
OriginalFilename=
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=e-mail: Jose-David.Guillen@cs.us.es
|
||||||
|
|
||||||
|
[HistoryLists\hlIncludePath]
|
||||||
|
Count=5
|
||||||
|
Item0=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include
|
||||||
|
Item1=..\jd soft\digitnum;..\componentes\cdopping\coolform;l:\programación (-cbuilder-)\jd soft;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;L:\Programación (-CBuilder-)\Componentes\CDopping;L:\Programación (-CBuilder-)\Componentes;D:\JDsoft\PrjTPVwin\VCLs\include
|
||||||
|
Item2=..\jd soft\digitnum;..\componentes\cdopping\coolform;l:\programación (-cbuilder-)\jd soft;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;L:\Programación (-CBuilder-)\Componentes\CDopping;L:\Programación (-CBuilder-)\Componentes
|
||||||
|
Item3=..\jd soft\digitnum;..\componentes\cdopping\coolform;l:\programación (-cbuilder-)\jd soft;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
Item4=..\jd soft\jd;l:\programación (-cbuilder-)\jd soft\jd;l:\cbuilder\cbuilder\objrepos;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\objrepos;$(BCB)\bin;$(BCB)\objrepos;j:\cbuilder\jd soft;j:\progwin95\jd soft;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlLibraryPath]
|
||||||
|
Count=6
|
||||||
|
Item0=..\VCLs\lib;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
Item1=..\VCLs\lib;..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item2=..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item3=..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
Item4=..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
Item5=..\jd soft\jd;l:\programación (-cbuilder-)\jd soft\jd;l:\cbuilder\cbuilder\objrepos;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\objrepos;$(BCB)\bin;$(BCB)\objrepos;j:\cbuilder\jd soft;j:\progwin95\jd soft;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
|
||||||
|
[HistoryLists\hlUnitAliases]
|
||||||
|
Count=1
|
||||||
|
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=1
|
||||||
|
LinkDebugVcl=0
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
</PROJECT>
|
45
CtrlDogs.cpp
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#include <winuser.h>
|
||||||
|
#include <winbase.h>
|
||||||
|
|
||||||
|
#pragma hdrstop
|
||||||
|
USERES("CtrlDogs.res");
|
||||||
|
USEFORM("CtrlDog.cpp", Dog);
|
||||||
|
USEFORM("CtrlD_PasswordDlg.cpp", PasswordDlg);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
HINSTANCE g_hinst;
|
||||||
|
//extern "C" __declspec(dllimport) int _stdcall RegisterServiceProcess( DWORD dwProcessID, int dwType);
|
||||||
|
//function RegisterServiceProcess(dwProcessID, dwType: integer): integer; stdcall; external 'KERNEL32.DLL';
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
WINAPI WinMain(HINSTANCE, HINSTANCE hInstance, LPSTR, int)
|
||||||
|
{
|
||||||
|
AnsiString FsMutex = DateToStr(TDateTime::CurrentDate()) + AnsiString("-mutex-dog");
|
||||||
|
|
||||||
|
// RegisterServiceProcess(GetCurrentProcessID(), 1); // Hide Aplication
|
||||||
|
// SetWindowLong(Application->Handle, GWL_EXSTYLE, XWndLong | WS_EX_TOOLWINDOW & ! WS_EX_APPWINDOW | WS_EX_TOPMOST);
|
||||||
|
|
||||||
|
HANDLE FhMutex = OpenMutex(MUTEX_ALL_ACCESS,False, FsMutex.c_str() );
|
||||||
|
if ( FhMutex == 0 ) //it's a first instance
|
||||||
|
{
|
||||||
|
FhMutex = CreateMutex(NULL,false, FsMutex.c_str() );
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Application->Initialize();
|
||||||
|
g_hinst = hInstance;
|
||||||
|
Application->Title = "Sistema de Control";
|
||||||
|
Application->CreateForm(__classid(TDog), &Dog);
|
||||||
|
Application->ShowMainForm = false;
|
||||||
|
Application->Run();
|
||||||
|
}
|
||||||
|
catch (Exception &exception)
|
||||||
|
{
|
||||||
|
Application->ShowException(&exception);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ( CloseHandle(FhMutex) ) FhMutex = 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
CtrlDogs.exe
Normal file
BIN
CtrlDogs.res
Normal file
445
CtrlElemento.cpp
Normal file
@ -0,0 +1,445 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
#include "CtrlPPal.h"
|
||||||
|
#include "CtrlSocket.h"
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
|
||||||
|
#define Blinking 600
|
||||||
|
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TElemento::TElemento(TComponent* Owner)
|
||||||
|
: TImage(Owner)
|
||||||
|
{
|
||||||
|
NumElemento = 0;
|
||||||
|
myIP="0.0.0.0";
|
||||||
|
|
||||||
|
SurfaceIs = sfNone;
|
||||||
|
|
||||||
|
BlinkCode = IP_OFF; // Intentando conectar con el TERMINAL
|
||||||
|
StatusCode= ERROR; // ERROR, aun no hemos conseguido conectar...
|
||||||
|
|
||||||
|
Blink = new TTimer(this); // Establecemos el timer, que mostrar<61> las advertencias
|
||||||
|
Blink->OnTimer = OnBlink; // visuales de estado del componente.
|
||||||
|
Blink->Interval = Blinking; // Inicialmente activo, con la advertencia IP_QUERY
|
||||||
|
Blink->Enabled = true;
|
||||||
|
|
||||||
|
Revisor = new TTimer(this); // Este timer, se encargar<61> de comunicar el estado OFF
|
||||||
|
Revisor->OnTimer = OnRevisor; // al TERMINAL-DOG, cuando proceda. ( Finalizado su tiempo ).
|
||||||
|
Revisor->Interval = 0;
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
PideMasTiempo = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TElemento::~TElemento()
|
||||||
|
{
|
||||||
|
delete Blink;
|
||||||
|
delete Revisor;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::SetElemento( int Elemento, AnsiString IP, AnsiString Name )
|
||||||
|
{
|
||||||
|
if ( ! IP.IsEmpty() && IP.Length() >= 7 )
|
||||||
|
myIP = IP;
|
||||||
|
NumElemento = Elemento;
|
||||||
|
myName = Name;
|
||||||
|
if ( !CtrlPPal->ServerHook )
|
||||||
|
RefreshElement();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::RefreshElement(void)
|
||||||
|
{
|
||||||
|
BlinkCode = IP_QUERY;
|
||||||
|
StatusCode = ERROR;
|
||||||
|
// Blink->Enabled = true;
|
||||||
|
Blink->Interval = Blinking;
|
||||||
|
|
||||||
|
//////// Vemos si el terminal esta activo ///////////////////////////////////
|
||||||
|
ThreadSocket *MySocket;
|
||||||
|
MySocket = (ThreadSocket *)CtrlPPal->GetThread();
|
||||||
|
MySocket->SetSocket( myIP, 5432 );
|
||||||
|
MySocket->OWNER_Element = this;
|
||||||
|
MySocket->CtrlCOP = QueryTIME;
|
||||||
|
MySocket->CtrlTiempo = TDateTime::CurrentTime();
|
||||||
|
MySocket->Resume();
|
||||||
|
//////// ///////////////////////////////////
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::HistoricoTermON( TDateTime CtrlTiempo )
|
||||||
|
{
|
||||||
|
bool UsaBono = (Precio == -1);
|
||||||
|
if ( UsaBono ) Precio = 0;
|
||||||
|
if ( PideMasTiempo )
|
||||||
|
{
|
||||||
|
ImporteAcumulado += Precio;
|
||||||
|
if ( CtrlTiempo > TiempoPedido ) CtrlTiempo = TiempoPedido;
|
||||||
|
} else {
|
||||||
|
ImporteAcumulado = Precio;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insertamos en el historial de usos, la activaci<63>n del terminal...
|
||||||
|
CtrlPPal->TbHistorial -> InsertRecord( ARRAYOFCONST(( NumElemento,
|
||||||
|
(Variant)TiempoComienzo,
|
||||||
|
(Variant)CtrlTiempo, idc, idtc, Precio )) );
|
||||||
|
CtrlPPal->TbHistorial -> FlushBuffers();
|
||||||
|
// Descontamos al cliente su tiempo del bono...
|
||||||
|
if ( UsaBono )
|
||||||
|
{
|
||||||
|
TBookmark SavePlace;
|
||||||
|
// get a bookmark so that we can return to the same record
|
||||||
|
SavePlace = CtrlPPal->TbPersonas->GetBookmark();
|
||||||
|
|
||||||
|
if ( CtrlPPal->TbPersonas->Locate( "CodCliente1", idc, TLocateOptions() << loCaseInsensitive) )
|
||||||
|
{
|
||||||
|
unsigned short Hour, Min, Sec, MSec;
|
||||||
|
CtrlTiempo.DecodeTime( &Hour, &Min, &Sec, &MSec );
|
||||||
|
|
||||||
|
NCliente = CtrlPPal->TbPersonas->FieldByName("Nombre")->AsString + " " + CtrlPPal->TbPersonas->FieldByName("Apellidos")->AsString;
|
||||||
|
CtrlPPal->TbPersonas->Edit();
|
||||||
|
if ( CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger < Min )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger = CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger - Hour -1;
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger = (CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger +60 - Min);
|
||||||
|
} else {
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger = CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger - Hour;
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger = CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger - Min;
|
||||||
|
}
|
||||||
|
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("FModif")->AsDateTime = TDateTime::CurrentDateTime();
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
CtrlPPal->TbPersonas->FlushBuffers();
|
||||||
|
} else {
|
||||||
|
NCliente = "## No ENCONTRADO ##";
|
||||||
|
}
|
||||||
|
// Move back to the bookmark
|
||||||
|
CtrlPPal->TbPersonas->GotoBookmark(SavePlace);
|
||||||
|
CtrlPPal->TbPersonas->FreeBookmark(SavePlace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::SetActiveTime( TDateTime Tiempo, int L_idc, int L_idtc, Currency L_Precio )
|
||||||
|
{
|
||||||
|
idc = L_idc; idtc = L_idtc; Precio = L_Precio;
|
||||||
|
TDateTime Queda = TiempoRestante();
|
||||||
|
BlinkCode = IP_QUERY;
|
||||||
|
StatusCode = ERROR;
|
||||||
|
// Blink->Enabled = true;
|
||||||
|
Blink->Interval = Blinking;
|
||||||
|
|
||||||
|
if ( Revisor->Enabled )
|
||||||
|
{
|
||||||
|
PideMasTiempo = true;
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
TiempoComienzo = TDateTime::CurrentDateTime() + Queda;
|
||||||
|
} else {
|
||||||
|
PideMasTiempo = false;
|
||||||
|
TiempoComienzo = TDateTime::CurrentDateTime();
|
||||||
|
}
|
||||||
|
TiempoPedido = Tiempo;
|
||||||
|
|
||||||
|
ThreadSocket *MySocket;
|
||||||
|
MySocket = (ThreadSocket *)CtrlPPal->GetThread();
|
||||||
|
MySocket->SetSocket( myIP, 5432 );
|
||||||
|
MySocket->CtrlCOP = SettingSTATUS;
|
||||||
|
MySocket->OWNER_Element = this;
|
||||||
|
if ( PideMasTiempo )
|
||||||
|
MySocket->CtrlTiempo = TiempoPedido + Queda;
|
||||||
|
else
|
||||||
|
MySocket->CtrlTiempo = TiempoPedido;
|
||||||
|
MySocket->CtrlState = true;
|
||||||
|
MySocket->Resume();
|
||||||
|
|
||||||
|
unsigned short hour, min, sec, msec;
|
||||||
|
if ( PideMasTiempo ) Tiempo = Tiempo + Queda;
|
||||||
|
Tiempo.DecodeTime( &hour, &min, &sec, &msec );
|
||||||
|
Revisor->Interval = msec + ( sec + ( (min+0) + hour*60 )*60 )*1000 ;
|
||||||
|
Revisor->Enabled = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::OnBlink(TObject *Sender)
|
||||||
|
{
|
||||||
|
|
||||||
|
ultImagen = !ultImagen;
|
||||||
|
// Mostrar parpadeo seg<65>n corresponda...
|
||||||
|
switch ( BlinkCode )
|
||||||
|
{
|
||||||
|
case IP_OFF:
|
||||||
|
if ( SurfaceIs != sfRoja )
|
||||||
|
{
|
||||||
|
SurfaceIs = sfRoja;
|
||||||
|
Picture = CtrlPPal->iElemento2->Picture;
|
||||||
|
WriteMyName();
|
||||||
|
}
|
||||||
|
if ( ultImagen )
|
||||||
|
Canvas->Draw( 17, 3, CtrlPPal->iElemento3->Picture->Graphic );
|
||||||
|
else
|
||||||
|
Canvas->FillRect(Rect(17,4,60,48));
|
||||||
|
break;
|
||||||
|
case IP_QUERY:
|
||||||
|
if ( SurfaceIs != sfAzul )
|
||||||
|
{
|
||||||
|
SurfaceIs = sfAzul;
|
||||||
|
Picture = CtrlPPal->iElementoV->Picture;
|
||||||
|
WriteMyName();
|
||||||
|
}
|
||||||
|
if ( ultImagen )
|
||||||
|
Canvas->Draw( 17, 3, CtrlPPal->iElemento4->Picture->Graphic );
|
||||||
|
else
|
||||||
|
Canvas->FillRect(Rect(17,4,60,48));
|
||||||
|
break;
|
||||||
|
case NONE:
|
||||||
|
default:
|
||||||
|
ShowElementInfo();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::OnRevisor(TObject *Sender)
|
||||||
|
{
|
||||||
|
ForcedTimeOut();
|
||||||
|
// ShowMessage(
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + Format( " Terminal %d. Fin de Tiempo. :_)", ARRAYOFCONST((NumElemento))));
|
||||||
|
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::ForcedTimeOut(void)
|
||||||
|
{
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
BlinkCode = IP_QUERY; // --- INTENTANDO COMUNICAR --
|
||||||
|
// Blink->Enabled = true; // Activamos el parpadeo
|
||||||
|
Blink->Interval = Blinking;
|
||||||
|
|
||||||
|
/// ENVIAMOS EL MENSAJE...
|
||||||
|
ThreadSocket *MySocket;
|
||||||
|
MySocket = (ThreadSocket *)CtrlPPal->GetThread();
|
||||||
|
MySocket->SetSocket( myIP, 5432 );
|
||||||
|
MySocket->CtrlCOP = SettingSTATUS;
|
||||||
|
MySocket->OWNER_Element = this;
|
||||||
|
MySocket->CtrlState = false;
|
||||||
|
MySocket->Resume();
|
||||||
|
|
||||||
|
//################################################################################################
|
||||||
|
TBookmark SavePlace;
|
||||||
|
SavePlace = CtrlPPal->TbElementosCFG->GetBookmark();
|
||||||
|
if ( CtrlPPal->TbElementosCFG -> Locate( "NumElement", NumElemento, TLocateOptions() << loCaseInsensitive ) )
|
||||||
|
{
|
||||||
|
if ( CtrlPPal->TbElementosCFG->FieldByName( "Activo" )->AsBoolean )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbElementosCFG->Edit();
|
||||||
|
CtrlPPal->TbElementosCFG->FieldByName( "Tiempo" )->AsDateTime = EncodeTime( 0, 0, 0, 0 );
|
||||||
|
CtrlPPal->TbElementosCFG->FieldByName( "Activo" )->AsBoolean = false;
|
||||||
|
CtrlPPal->TbElementosCFG->Post();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CtrlPPal->TbElementosCFG->GotoBookmark(SavePlace);
|
||||||
|
CtrlPPal->TbElementosCFG->FreeBookmark(SavePlace);
|
||||||
|
//################################################################################################
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
Picture = CtrlPPal->iElemento2->Picture;
|
||||||
|
if ( CtrlPPal->ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
if ( Button == mbLeft )
|
||||||
|
ElementoAnclado = true;
|
||||||
|
faElmX = X;
|
||||||
|
faElmY = Y;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::MouseMove(TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
if ( CtrlPPal->ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
if ( ElementoAnclado )
|
||||||
|
{
|
||||||
|
POINT MousePos;
|
||||||
|
GetCursorPos(&MousePos);
|
||||||
|
Left = MousePos.x - CtrlPPal->Left - CtrlPPal->Pizarra->Left - faElmX;
|
||||||
|
Top = MousePos.y - CtrlPPal->Top - CtrlPPal->Pizarra->Top - faElmY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
// (Mover)
|
||||||
|
if ( Button == mbLeft )
|
||||||
|
{
|
||||||
|
if ( CtrlPPal->ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
ElementoAnclado = false;
|
||||||
|
if ( Left <= 0 ) Left = 0;
|
||||||
|
if ( Top <= 0 ) Top = 0;
|
||||||
|
|
||||||
|
// ##########################################################################################
|
||||||
|
if ( CtrlPPal->TbElementosCFG -> Locate( "NumElement", NumElemento, TLocateOptions() << loCaseInsensitive ) )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbElementosCFG -> Edit();
|
||||||
|
CtrlPPal->TbElementosCFG -> FieldByName("PosX") -> AsInteger = Left;
|
||||||
|
CtrlPPal->TbElementosCFG -> FieldByName("PosY") -> AsInteger = Top;
|
||||||
|
CtrlPPal->TbElementosCFG -> Post();
|
||||||
|
}
|
||||||
|
// ##########################################################################################
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SurfaceIs = sfNone;
|
||||||
|
ShowElementInfo();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
// TiempoInicio --> Tiempo que queda hasta la desconexi<78>n
|
||||||
|
void __fastcall TElemento::ClientTimeIs( double Tiempo, double TiempoInicio )
|
||||||
|
{
|
||||||
|
BlinkCode = NONE;
|
||||||
|
// Blink->Enabled = false;
|
||||||
|
Blink->Interval = 60000;
|
||||||
|
|
||||||
|
if ( Tiempo <= 0 )
|
||||||
|
{
|
||||||
|
StatusCode = FREE;
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
} else {
|
||||||
|
if ( StatusCode !=WORKING || (double)TiempoPedido < Tiempo )
|
||||||
|
{
|
||||||
|
TiempoComienzo = ( TDateTime::CurrentTime() - (Tiempo - TiempoInicio) );
|
||||||
|
// TiempoComienzo = TiempoInicio;
|
||||||
|
TiempoPedido = Tiempo;
|
||||||
|
|
||||||
|
unsigned short hour, min, sec, msec;
|
||||||
|
RTiempoRestante = TiempoInicio;
|
||||||
|
RTiempoRestante.DecodeTime( &hour, &min, &sec, &msec );
|
||||||
|
|
||||||
|
Revisor->Enabled = false;
|
||||||
|
Revisor->Interval = msec + ( sec + ( (min+0) + hour*60 )*60 )*1000 ;
|
||||||
|
Revisor->Enabled = true;
|
||||||
|
}
|
||||||
|
StatusCode = WORKING;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowElementInfo();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::ShowElementInfo( void )
|
||||||
|
{
|
||||||
|
if ( StatusCode != ERROR )
|
||||||
|
{
|
||||||
|
// Picture = StatusCode != FREE ? CtrlPPal->iElementoV->Picture : CtrlPPal->iElemento5->Picture;
|
||||||
|
Picture = CtrlPPal->iElementoV->Picture;
|
||||||
|
WriteMyName();
|
||||||
|
|
||||||
|
unsigned short h, m, s, ms; int w;
|
||||||
|
AnsiString sOUT;
|
||||||
|
|
||||||
|
Canvas->Font->Size = 12;
|
||||||
|
sOUT = "# " + AnsiString( NumElemento ) + " #"; w = ( 44 - Canvas->TextWidth( sOUT ) ) / 2;
|
||||||
|
|
||||||
|
// En caso de estar activo el terminal
|
||||||
|
if ( StatusCode == WORKING )
|
||||||
|
{
|
||||||
|
Canvas->Font->Color = clRed; /*Nombre del Terminal*/ Canvas->TextOut( 17+w, 3, sOUT );
|
||||||
|
|
||||||
|
Canvas->Font->Color = clBlue; Canvas->Font->Size = 10;
|
||||||
|
|
||||||
|
// Hora en la que inicia la sesi<73>n.
|
||||||
|
TiempoComienzo.DecodeTime( &h, &m, &s, &ms );
|
||||||
|
sOUT = Format( "%02d:%02d", ARRAYOFCONST(( h, m )) );
|
||||||
|
w = ( 44 - Canvas->TextWidth( sOUT ) ) / 2;
|
||||||
|
Canvas->TextOut( 17+w, 22, sOUT );
|
||||||
|
// Tiempo de juego que le queda
|
||||||
|
TDateTime Queda;
|
||||||
|
Queda = TiempoRestante();//TiempoPedido + TiempoComienzo - TDateTime::CurrentTime();
|
||||||
|
Queda.DecodeTime( &h, &m, &s, &ms );
|
||||||
|
Canvas->TextOut( 17, 35, Format( "R: %02d:%02d", ARRAYOFCONST(( h, (m+1) ))) );
|
||||||
|
/*
|
||||||
|
// Tiempo de juego que le fue asignado
|
||||||
|
(TbElementosCFG->FieldByName( "Tiempo" )->AsDateTime).DecodeTime( &h, &m, &s, &ms );
|
||||||
|
E->Canvas->TextOut( 17, 40, Format( "((( %02d:%02d )))", ARRAYOFCONST(( h, m ))) );
|
||||||
|
*/
|
||||||
|
} else {
|
||||||
|
Canvas->Font->Color = clBlue;
|
||||||
|
// Nombre/N<>mero del terminal
|
||||||
|
Canvas->TextOut( 17+w, 3, sOUT );
|
||||||
|
|
||||||
|
// El terminal esta libre
|
||||||
|
Canvas->Font->Color = clGreen;
|
||||||
|
Canvas->TextOut( 15, 25, "LIBRE" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::CerrarWindows( void )
|
||||||
|
{
|
||||||
|
StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
BlinkCode = IP_QUERY; // --- INTENTANDO COMUNICAR --
|
||||||
|
// Blink->Enabled = true; // Activamos el parpadeo /// ENVIAMOS EL MENSAJE...
|
||||||
|
Blink->Interval = Blinking;
|
||||||
|
|
||||||
|
ThreadSocket *MySocket;
|
||||||
|
MySocket = (ThreadSocket *)CtrlPPal->GetThread();
|
||||||
|
MySocket->SetSocket( myIP, 5432 );
|
||||||
|
MySocket->CtrlCOP = CloseWINDOWS;
|
||||||
|
MySocket->CtrlState = CloseWINDOWS;
|
||||||
|
MySocket->Resume();
|
||||||
|
|
||||||
|
// Actualizamos el historial
|
||||||
|
CtrlPPal->TbHistorial -> InsertRecord( ARRAYOFCONST(( NumElemento,
|
||||||
|
(Variant)TDateTime::CurrentDateTime(),
|
||||||
|
(Variant)TiempoRestante(), 0, 999, 0 )) );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::EnviarListasAppl( void )
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
BlinkCode = IP_QUERY; // --- INTENTANDO COMUNICAR --
|
||||||
|
Blink->Interval = Blinking;
|
||||||
|
*/
|
||||||
|
|
||||||
|
ThreadSocket *MySocket;
|
||||||
|
MySocket = (ThreadSocket *)CtrlPPal->GetThread();
|
||||||
|
MySocket->SetSocket( myIP, 5432 );
|
||||||
|
MySocket->CtrlCOP = sendLIST;
|
||||||
|
MySocket->CtrlState = sendLIST;
|
||||||
|
MySocket->Resume();
|
||||||
|
|
||||||
|
// Actualizamos el historial
|
||||||
|
CtrlPPal->TbHistorial -> InsertRecord( ARRAYOFCONST(( NumElemento,
|
||||||
|
(Variant)TDateTime::CurrentDateTime(),
|
||||||
|
(Variant)TiempoRestante(), 0, 997, 0 )) );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TElemento::WriteMyName( void )
|
||||||
|
{
|
||||||
|
int W;
|
||||||
|
|
||||||
|
Canvas->Font->Color = clRed;
|
||||||
|
Canvas->Font->Style = Canvas->Font->Style << fsBold;
|
||||||
|
Canvas->Font->Size = 10;
|
||||||
|
W = ( 77 - Canvas->TextWidth( myName ) ) / 2;
|
||||||
|
Canvas->TextOut( W, 64, myName );
|
||||||
|
Canvas->Font->Style = Canvas->Font->Style >> fsBold;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TDateTime __fastcall TElemento::TiempoRestante(void)
|
||||||
|
{
|
||||||
|
return TiempoPedido + TiempoComienzo - TDateTime::CurrentTime();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TDateTime __fastcall TElemento::TiempoInicio(void)
|
||||||
|
{
|
||||||
|
return TiempoComienzo;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
74
CtrlElemento.h
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlElementoH
|
||||||
|
#define CtrlElementoH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
enum BlinkCodes { NONE=-1, IP_OFF=0, IP_QUERY=1 };
|
||||||
|
enum SurfaceAre { sfNone=-1, sfRoja=1, sfAzul=2 };
|
||||||
|
|
||||||
|
class TElemento : public TImage
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
TTimer *Revisor; // Salta cuando se acaba el tiempo
|
||||||
|
DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
|
||||||
|
DYNAMIC void __fastcall MouseUp (TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
|
||||||
|
DYNAMIC void __fastcall MouseMove(TShiftState Shift, int X, int Y);
|
||||||
|
|
||||||
|
void __fastcall OnBlink(TObject *Sender);
|
||||||
|
void __fastcall OnRevisor(TObject *Sender);
|
||||||
|
bool ultImagen, PideMasTiempo;
|
||||||
|
|
||||||
|
int idc; int idtc; Currency Precio;
|
||||||
|
protected:
|
||||||
|
AnsiString myIP;
|
||||||
|
AnsiString myName;
|
||||||
|
|
||||||
|
TDateTime TiempoPedido, TiempoComienzo;
|
||||||
|
|
||||||
|
bool ElementoAnclado; // <20>Elemento cogido con el rat<61>n?
|
||||||
|
int faElmX, faElmY; // Factores de ajuste al mover...
|
||||||
|
|
||||||
|
#define ERROR -1
|
||||||
|
#define FREE 0
|
||||||
|
#define WORKING 1
|
||||||
|
|
||||||
|
// enum StatusCodes { ERROR=-1, FREE=0, WORKING=1 } StatusCode;
|
||||||
|
|
||||||
|
public:
|
||||||
|
AnsiString NCliente;
|
||||||
|
TTimer *Blink; // Encargado de hacer parpadear la imagen (p.e: errores)
|
||||||
|
BlinkCodes BlinkCode;
|
||||||
|
SurfaceAre SurfaceIs;
|
||||||
|
|
||||||
|
int StatusCode;
|
||||||
|
int NumElemento;
|
||||||
|
|
||||||
|
__fastcall TElemento(TComponent* Owner);
|
||||||
|
__fastcall ~TElemento();
|
||||||
|
|
||||||
|
AnsiString __fastcall GiveMyIP(void){return myIP;};
|
||||||
|
AnsiString __fastcall GiveMyName(void){return myName;};
|
||||||
|
void __fastcall WriteMyName(void);
|
||||||
|
void __fastcall ShowElementInfo(void);
|
||||||
|
void __fastcall EnviarListasAppl(void);
|
||||||
|
void __fastcall SetElemento( int Elemento, AnsiString IP, AnsiString Name );
|
||||||
|
void __fastcall HistoricoTermON( TDateTime CtrlTiempo );
|
||||||
|
void __fastcall RefreshElement(void);
|
||||||
|
void __fastcall SetActiveTime( TDateTime Tiempo, int L_idc, int L_idtc, Currency L_Precio );
|
||||||
|
void __fastcall ClientTimeIs( double Tiempo, double TiempoInicio );
|
||||||
|
void __fastcall CerrarWindows(void);
|
||||||
|
void __fastcall ForcedTimeOut(void);
|
||||||
|
TDateTime __fastcall TiempoRestante(void);
|
||||||
|
TDateTime __fastcall TiempoInicio(void);
|
||||||
|
TDateTime __fastcall iTiempoPedido(void){return TiempoPedido;};
|
||||||
|
TDateTime RTiempoRestante;
|
||||||
|
Currency ImporteAcumulado;
|
||||||
|
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
BIN
CtrlMstr-Old_Imgs.rar
Normal file
158
CtrlMstr.bpr
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.05.03"/>
|
||||||
|
<PROJECT value="CtrlMstr.exe"/>
|
||||||
|
<OBJFILES value="CtrlMstr.obj CtrlPPal.obj TStatus.obj CtrlSocket.obj CtrlCfg.obj
|
||||||
|
CtrlElemento.obj FichasClientes.obj FormularioREUSABLE.obj ComprarBono.obj"/>
|
||||||
|
<RESFILES value="CtrlMstr.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value=""/>
|
||||||
|
<RESDEPEN value="$(RESFILES) CtrlPPal.dfm TStatus.dfm CtrlCfg.dfm FichasClientes.dfm
|
||||||
|
FormularioREUSABLE.dfm ComprarBono.dfm"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value="TeeUI50.lib TEEQR50.lib Tee50.lib TEEDB50.lib JDsoft.lib CoolPack.lib
|
||||||
|
inet50.lib qrpt50.lib vcldbx50.lib vclbde50.lib vcldb50.lib vclx50.lib
|
||||||
|
vcl50.lib"/>
|
||||||
|
<SPARELIBS value="vcl50.lib vclx50.lib vcldb50.lib vclbde50.lib vcldbx50.lib qrpt50.lib
|
||||||
|
inet50.lib CoolPack.lib JDsoft.lib TEEDB50.lib Tee50.lib TEEQR50.lib
|
||||||
|
TeeUI50.lib"/>
|
||||||
|
<PACKAGES value="vclx50.bpi vcl50.bpi vcldb50.bpi vclbde50.bpi vcldbx50.bpi bcbsmp50.bpi
|
||||||
|
dclocx50.bpi qrpt50.bpi teeui50.bpi teedb50.bpi tee50.bpi ibsmp50.bpi
|
||||||
|
nmfast50.bpi inetdb50.bpi inet50.bpi"/>
|
||||||
|
<PATHCPP value=".;"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="ilink32"/>
|
||||||
|
<USERDEFINES value=""/>
|
||||||
|
<SYSDEFINES value="NO_STRICT"/>
|
||||||
|
<MAINSOURCE value="CtrlMstr.cpp"/>
|
||||||
|
<INCLUDEPATH value="$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include;"..\C++ Builder\VCLs\include""/>
|
||||||
|
<LIBPATH value="$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;"..\C++ Builder\VCLs\lib""/>
|
||||||
|
<WARNINGS value="-w-par -w-8027 -w-8026"/>
|
||||||
|
<WARNOPTSTR value=""/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-I$(BCB)\bin -I$(BCB)\objrepos -I$(BCB)\projects -I$(BCB)\include
|
||||||
|
-I$(BCB)\include\vcl -I..\VCLs\include -I"..\C++ Builder\VCLs\include"
|
||||||
|
-src_suffix cpp -boa"/>
|
||||||
|
<CFLAG1 value="-Od -H=c:\PROGRAM\CBUILDER\CBUILD~1\lib\vcld.csm -Hc -Vx -Ve -X- -r- -a8
|
||||||
|
-5 -b- -k -y -v -vi- -c -tWM"/>
|
||||||
|
<CFLAG2 value=""/>
|
||||||
|
<CFLAG3 value=""/>
|
||||||
|
<PFLAGS value="-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE
|
||||||
|
-$YD -$W -$O- -v -JPHNV -M -JPHNE"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zi"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpe -x -v"/>
|
||||||
|
<IFLAGS value=""/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
|
||||||
|
</LINKER>
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=1
|
||||||
|
AutoIncBuild=1
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=103
|
||||||
|
Debug=1
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=3082
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=JD soft.
|
||||||
|
FileDescription=Control Maestro de sistemas
|
||||||
|
FileVersion=1.0.0.103
|
||||||
|
InternalName=CtrlMstr
|
||||||
|
LegalCopyright=Copyright (C) JD soft. 1990-2000
|
||||||
|
LegalTrademarks=JD Soft.
|
||||||
|
OriginalFilename=CtrlMstr
|
||||||
|
ProductName=Lock It!
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=e-mail: Jose-David.Guillen@cs.us.es
|
||||||
|
|
||||||
|
[HistoryLists\hlIncludePath]
|
||||||
|
Count=10
|
||||||
|
Item0=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include;..\C++ Builder\VCLs\include
|
||||||
|
Item1=..\AgendaLlamadas;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include
|
||||||
|
Item2=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\include\
|
||||||
|
Item3=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\include
|
||||||
|
Item4=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include
|
||||||
|
Item5=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\include
|
||||||
|
Item6=..\jd soft\actimg;..\jd soft\jd\actimg;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl;D:\JDsoft\PrjTPVwin\VCLs\include
|
||||||
|
Item7=..\jd soft\actimg;..\jd soft\jd\actimg;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
Item8=..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
Item9=..\jd soft\jd;l:\programación (-cbuilder-)\jd soft\jd;l:\cbuilder\cbuilder\objrepos;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\objrepos;$(BCB)\bin;$(BCB)\objrepos;j:\cbuilder\jd soft;j:\progwin95\jd soft;$(BCB)\projects;$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlLibraryPath]
|
||||||
|
Count=14
|
||||||
|
Item0=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;..\C++ Builder\VCLs\lib
|
||||||
|
Item1=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;..\C++ Builder\VCLs\include
|
||||||
|
Item2=..\AgendaLlamadas;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib
|
||||||
|
Item3=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\lib\
|
||||||
|
Item4=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\lib
|
||||||
|
Item5=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\include\
|
||||||
|
Item6=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\include
|
||||||
|
Item7=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib
|
||||||
|
Item8=$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;C:\Mis documentos\Fuentes de Programacion\C++ Builder\VCLs\lib
|
||||||
|
Item9=..\VCLs\lib;..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item10=..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item11=..\jd soft\actimg;..\jd soft;..\jd soft\jd\actimg;..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
Item12=..\componentes;..\componentes\cdopping\coolform;..\jd soft\jd;$(BCB)\bin;$(BCB)\objrepos;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
Item13=..\jd soft\jd;l:\programación (-cbuilder-)\jd soft\jd;l:\cbuilder\cbuilder\objrepos;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\bin;j:\cbuilder\cbuilder\objrepos;$(BCB)\bin;$(BCB)\objrepos;j:\cbuilder\jd soft;j:\progwin95\jd soft;$(BCB)\projects;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
|
||||||
|
[HistoryLists\hlUnitAliases]
|
||||||
|
Count=1
|
||||||
|
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE
|
||||||
|
|
||||||
|
[HistoryLists\hlIntOutputDir]
|
||||||
|
Count=2
|
||||||
|
Item0=d:\temp\
|
||||||
|
Item1=d:\temp
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=1
|
||||||
|
LinkDebugVcl=1
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
|
||||||
|
<FILES>
|
||||||
|
<FILE type="override" value="..\AgendaLlamadas\FormularioREUSABLE.cpp" translator="Auto">
|
||||||
|
<WARNOPTSTR value=" -w-par -w-8027 -w-8026"/>
|
||||||
|
</FILE>
|
||||||
|
</FILES>
|
||||||
|
</PROJECT>
|
40
CtrlMstr.cpp
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
|
||||||
|
#pragma hdrstop
|
||||||
|
USERES("CtrlMstr.res");
|
||||||
|
USEFORM("CtrlPPal.cpp", CtrlPPal);
|
||||||
|
USEFORM("TStatus.cpp", Status);
|
||||||
|
USEUNIT("CtrlSocket.cpp");
|
||||||
|
USEFORM("CtrlCfg.cpp", ElementosCFG);
|
||||||
|
USEUNIT("CtrlElemento.cpp");
|
||||||
|
USEFORM("FichasClientes.cpp", FClientes);
|
||||||
|
USEFORM("FormularioREUSABLE.cpp", FormREUSABLE);
|
||||||
|
USEFORM("ComprarBono.cpp", CBono);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||||
|
{
|
||||||
|
AnsiString FsMutex = DateToStr(TDateTime::CurrentDate()) + AnsiString("-mutex-ctrlmstr");
|
||||||
|
HANDLE FhMutex = OpenMutex(MUTEX_ALL_ACCESS,False, FsMutex.c_str() );
|
||||||
|
if ( FhMutex == 0 ) //it's a first instance
|
||||||
|
{
|
||||||
|
FhMutex = CreateMutex(NULL,false, FsMutex.c_str() );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Application->Initialize();
|
||||||
|
Application->Title = "Control Maestro";
|
||||||
|
Application->CreateForm(__classid(TCtrlPPal), &CtrlPPal);
|
||||||
|
Application->Run();
|
||||||
|
}
|
||||||
|
catch (Exception &exception)
|
||||||
|
{
|
||||||
|
Application->ShowException(&exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if ( CloseHandle(FhMutex) ) FhMutex = 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
CtrlMstr.exe
Normal file
BIN
CtrlMstr.res
Normal file
909
CtrlPPal.cpp
Normal file
@ -0,0 +1,909 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <io.h>
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include <registry.hpp>
|
||||||
|
#include <ShellAPI.hpp>
|
||||||
|
#include <SysUtils.hpp>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "CtrlPPal.h"
|
||||||
|
#include "TStatus.h"
|
||||||
|
#include "CtrlSocket.h"
|
||||||
|
#include "CtrlCfg.h"
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TCtrlPPal *CtrlPPal;
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
#define MsgDEMO "No olvide que esto es solo una demostraci<63>n.\nPara adquirir la aplicaci<63>n completa:\nPongase en contacto con JD soft.\n\te-mail: jd@infdj.com\n\tTlf: 95561-58-54 Fax: 95561-49-13"
|
||||||
|
#define DEMOSTRACION
|
||||||
|
#ifdef DEMOSTRACION
|
||||||
|
#define CnElementosMAX 3
|
||||||
|
#else
|
||||||
|
#define CnElementosMAX 11 // Num. m<>ximo de elementos permitidos
|
||||||
|
#endif
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define opLOG "Historic.log"
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TCtrlPPal::TCtrlPPal(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
// Remote Control
|
||||||
|
ClientHook = false;
|
||||||
|
ServerHook = false;
|
||||||
|
RemoteStart -> Visible = true;
|
||||||
|
|
||||||
|
|
||||||
|
remoteBack->Visible = false;
|
||||||
|
remoteLog->Visible = false;
|
||||||
|
remoteClose->Visible = false;
|
||||||
|
// Remote Control
|
||||||
|
|
||||||
|
siMinimizar = new TStringList(); // Listado de Aplicaciones Especiales
|
||||||
|
noMinimizar = new TStringList(); // Listado de Aplicaciones Especiales
|
||||||
|
snMinimizar = new TStringList(); // Listado de Aplicaciones Especiales
|
||||||
|
noAbrir = new TStringList(); // Listado de Aplicaciones Especiales
|
||||||
|
|
||||||
|
LoadProtectedList(); // Carga los listados de Aplicaicones protegidas
|
||||||
|
|
||||||
|
nElementosMAX = CnElementosMAX; // N<>mero maximos de elementos
|
||||||
|
Elementos = new TList(); // Lista de Elementos en funcionamiento
|
||||||
|
AnySocketActive = 0; // N<> de socket REALMENTE activos
|
||||||
|
pCache = new TThreadList; // Lista de Hilos de comunicaci<63>n
|
||||||
|
|
||||||
|
ChangePositionEnabled = false; // Permiso para mover la posici<63>n de los elementos
|
||||||
|
|
||||||
|
CheckAppIntegrity(); // El directorio de instalacion no puede moverse
|
||||||
|
StartEventRecorder(); // Comenzamos la grabaci<63>n de eventos
|
||||||
|
TbElementosCFG->Active = true; // Abrimos la tabla de elementos para hacerlos visibles
|
||||||
|
TbPersonas->Active = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::LoadProtectedList(void)
|
||||||
|
{
|
||||||
|
//LoadProtectedList();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::StartEventRecorder(void)
|
||||||
|
{
|
||||||
|
TbHistorial->Active = true; // Tabla de eventos del sistema
|
||||||
|
try {
|
||||||
|
// Cargamos todos los eventos anteriores
|
||||||
|
Memo1->Lines->LoadFromFile( opLOG );
|
||||||
|
// Si hay demasiados registros
|
||||||
|
if ( Memo1->Lines->Count > 700 )
|
||||||
|
{
|
||||||
|
for ( int i=0; i<100; i++ ) // Eliminamos las 100 <20>ltimas entradas
|
||||||
|
Memo1->Lines->Delete( 3 );
|
||||||
|
}
|
||||||
|
} catch(...) {
|
||||||
|
Memo1->Lines->Clear(); // En caso de error, las eliminamos todas
|
||||||
|
}
|
||||||
|
//Fecha y hora del inicio de sesi<73>n
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Inicio de la sesi<73>n" );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::iCloseDblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::iMinClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
Application->Minimize();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::iPosVClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
#ifdef DEMOSTRACION
|
||||||
|
ShowMessage( MsgDEMO );
|
||||||
|
#endif
|
||||||
|
if ( ChangePositionEnabled || ( !ChangePositionEnabled && InputBox( "Programa BETA!!!", "Modificar:", "<EFBFBD>Que Modificar?") == "Esto es una beta" ) )
|
||||||
|
{
|
||||||
|
Graphics::TBitmap *Picture;
|
||||||
|
|
||||||
|
ChangePositionEnabled = !ChangePositionEnabled;
|
||||||
|
|
||||||
|
Picture = iPosV->GlyphNormal;
|
||||||
|
iPosV->GlyphNormal = iPosV->GlyphPress;
|
||||||
|
iPosV->GlyphPress = Picture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
/**
|
||||||
|
Comprueba que el directorio de la aplicaci<63>n es siempre el mismo
|
||||||
|
|
||||||
|
(De este modo, la aplicaci<63>n no correra en ning<6E>n directorio distinto, del
|
||||||
|
que se eligi<67> para instalar)
|
||||||
|
**/
|
||||||
|
void __fastcall TCtrlPPal::CheckAppIntegrity(void)
|
||||||
|
{
|
||||||
|
TRegistry *Registro;
|
||||||
|
Registro = new TRegistry;
|
||||||
|
Registro -> OpenKey( "\\Software\\JDsoft\\CtrlMstr", true );
|
||||||
|
AnsiString AppPath;
|
||||||
|
|
||||||
|
if ( ! Registro->ValueExists( "AppPath" ) )
|
||||||
|
{
|
||||||
|
Registro -> WriteString( "AppPath", Application->ExeName );
|
||||||
|
} else {
|
||||||
|
AppPath = Registro -> ReadString( "AppPath" );
|
||||||
|
if ( AppPath != Application->ExeName )
|
||||||
|
{
|
||||||
|
ShowMessage( "Copia corrupta o ilegal del programa.\nVuelva a reinstalar el producto." );
|
||||||
|
nElementosMAX = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AnsiString DiskSerial;
|
||||||
|
char VolumeLabel[255], FileSystem[255];
|
||||||
|
DWord SerialNumber, DW, SysFlags;
|
||||||
|
|
||||||
|
GetVolumeInformation( "C:\\", VolumeLabel, 250, &SerialNumber, &DW, &SysFlags, FileSystem, 250);
|
||||||
|
DiskSerial = AnsiString( ltoa(SerialNumber, FileSystem,10) );
|
||||||
|
|
||||||
|
|
||||||
|
if ( ! Registro->ValueExists( "SerialNum" ) )
|
||||||
|
{
|
||||||
|
AnsiString Serial;
|
||||||
|
Serial = InputBox( "Registrando el Programa:", "N<EFBFBD>mero de Serie:", DiskSerial );
|
||||||
|
if ( ! Manipula2( DiskSerial, Serial ) )
|
||||||
|
{
|
||||||
|
Registro -> WriteString( "SerialNum", Serial );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( Manipula( DiskSerial, Registro -> ReadString( "SerialNum" ) ) )
|
||||||
|
{
|
||||||
|
ShowMessage( "Copia corrupta o ilegal del programa.\nVuelva a reinstalar el producto." );
|
||||||
|
nElementosMAX = 0;
|
||||||
|
Registro -> DeleteValue( "SerialNum" );
|
||||||
|
Registro -> DeleteKey( "\\Software\\JDsoft\\CtrlMstr\\SerialNum" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//-----------------
|
||||||
|
bool __fastcall TCtrlPPal::Manipula2(AnsiString Serial, AnsiString Image)
|
||||||
|
{
|
||||||
|
char buffer[80];
|
||||||
|
AnsiString Sol;
|
||||||
|
double ser = Serial.ToDouble();
|
||||||
|
if ( ser < 0 ) ser = -1*ser;
|
||||||
|
Sol = ltoa(sqrtl(ser), buffer, 10);
|
||||||
|
#ifndef DEMOSTRACION
|
||||||
|
if ( Image == Sol )
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//-----------------
|
||||||
|
bool __fastcall TCtrlPPal::Manipula(AnsiString Serial, AnsiString Image)
|
||||||
|
{
|
||||||
|
char buffer[80];
|
||||||
|
AnsiString Sol;
|
||||||
|
double ser = Serial.ToDouble();
|
||||||
|
if ( ser < 0 ) ser = -1*ser;
|
||||||
|
Sol = ltoa(sqrtl(ser), buffer, 10);
|
||||||
|
#ifndef DEMOSTRACION
|
||||||
|
if ( Image == Sol )
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::FormDestroy(TObject *Sender)
|
||||||
|
{
|
||||||
|
delete siMinimizar;
|
||||||
|
delete noMinimizar;
|
||||||
|
delete snMinimizar;
|
||||||
|
delete noAbrir;
|
||||||
|
|
||||||
|
for( int i=0; i < Elementos->Count; i++ )
|
||||||
|
delete (TElemento *)Elementos->Items[i];
|
||||||
|
delete Elementos;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::NewElementAt(int X, int Y, int NumEl, AnsiString IP, AnsiString Name )
|
||||||
|
{
|
||||||
|
TElemento *Elemento; // Elemento a ser insertado
|
||||||
|
Elemento = new TElemento(this); // Pedimos memoria para <20>l
|
||||||
|
Elemento->Left = X; //
|
||||||
|
Elemento->Top = Y; // FIJAMOS SUS PROPIEDADES
|
||||||
|
Elemento->AutoSize = true; //
|
||||||
|
Elemento->Transparent = true; //
|
||||||
|
Elemento->PopupMenu = mElementoCFG; // Men<65> contextual
|
||||||
|
Elemento->OnDblClick = ElementoDblClick; //
|
||||||
|
|
||||||
|
Elementos->Add( Elemento ); // A<>adimos el elemento a la lista
|
||||||
|
// Lo hacemos visible
|
||||||
|
Pizarra->InsertControl( Elemento );
|
||||||
|
|
||||||
|
Elemento->SetElemento( NumEl, IP, Name ); // Y comenzamos la comunicaci<63>n
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::PizarraDblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
POINT MousePos;
|
||||||
|
int X, Y;
|
||||||
|
|
||||||
|
// Si lo que quiere es reubicar un nuevo elemento
|
||||||
|
if ( ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
#ifndef DEMOSTRACION
|
||||||
|
// Anexamos un nuevo elemento a la lista (Si no hemos llegado al l<>mite)
|
||||||
|
if ( Elementos->Count < nElementosMAX )
|
||||||
|
{
|
||||||
|
GetCursorPos(&MousePos);
|
||||||
|
X = MousePos.x - Left - Pizarra->Left - iElementoV->Picture->Width / 2;
|
||||||
|
Y = MousePos.y - Top - Pizarra->Top - iElementoV->Picture->Height / 2 ;
|
||||||
|
try {
|
||||||
|
// Lo damos de Alta en la tabla
|
||||||
|
/*
|
||||||
|
TbElementosCFG -> InsertRecord( ARRAYOFCONST(
|
||||||
|
( Null, // Numero de Elemento
|
||||||
|
X, // Posici<63>n X
|
||||||
|
Y, // Posici<63>n Y
|
||||||
|
false, "0.0.0.0", "new"+AnsiString(Elementos->Count)
|
||||||
|
) ) );
|
||||||
|
*/
|
||||||
|
|
||||||
|
AnsiString NameOfElement = "new"+AnsiString(TbElementosCFG->FieldByName("NumElement")->AsInteger);
|
||||||
|
|
||||||
|
TbElementosCFG -> Insert();
|
||||||
|
TbElementosCFG -> Edit();
|
||||||
|
TbElementosCFG -> FieldByName( "PosX" )-> AsInteger = X;
|
||||||
|
TbElementosCFG -> FieldByName( "PosY" )-> AsInteger = Y;
|
||||||
|
TbElementosCFG -> FieldByName( "Activo" )-> AsBoolean = false;
|
||||||
|
TbElementosCFG -> FieldByName( "IP" )-> AsString = "0.0.0.0";
|
||||||
|
TbElementosCFG -> FieldByName( "Name" )-> AsString = NameOfElement;
|
||||||
|
TbElementosCFG -> Post();
|
||||||
|
|
||||||
|
NewElementAt( X, Y, TbElementosCFG->FieldByName("NumElement")->AsInteger, "0.0.0.0", NameOfElement );
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Inserci<63>n de nuevos elementos" );
|
||||||
|
} catch (...) {
|
||||||
|
ShowMessage( "<EFBFBD><EFBFBD><EFBFBD> SIN MEMORIA ???\nTu G<>indows est<73> petando" );
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
ShowMessage( "Ha superado el m<>ximo n<>mero de elementos\n<EFBFBD><EFBFBD><EFBFBD> IMPOSIBLE A<>ADIR MAS !!!" );
|
||||||
|
#else
|
||||||
|
ShowMessage( MsgDEMO );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::EliminarElemento(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( ServerHook ) return;
|
||||||
|
|
||||||
|
int TraceMeHacker;
|
||||||
|
TraceMeHacker = Elementos->Count;
|
||||||
|
|
||||||
|
#ifndef DEMOSTRACION
|
||||||
|
if ( ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
TElemento *Elemento = (TElemento *)(mElementoCFG->PopupComponent);
|
||||||
|
|
||||||
|
// Eliminamos el objeto de la tabla
|
||||||
|
if ( TbElementosCFG -> Locate( "NumElement", Elemento->NumElemento, TLocateOptions() << loCaseInsensitive ) )
|
||||||
|
{
|
||||||
|
TbElementosCFG -> Delete(); // Eliminamos el elemento de la TABLA
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Elemento n<> " + AnsiString( Elemento->NumElemento ) + ", eliminado." );
|
||||||
|
|
||||||
|
Pizarra->RemoveControl( Elemento ); // Eliminamos el elemento de la PIZARRA
|
||||||
|
Elementos->Remove( Elemento ); // Eliminamos el elemento de la MEMORIA
|
||||||
|
Elementos->Pack();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
|
||||||
|
ShowMessage( MsgDEMO );
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ( TraceMeHacker == Elementos->Count )
|
||||||
|
ShowMessage( "Lo siento pero carece de permisos para modificar los terminales.\n<EFBFBD><EFBFBD>Su intento ha quedado registrado!!" );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::TbElementosCFGBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbElementosCFG -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
// Usamos la propiedad FielDefs para definir
|
||||||
|
// las columnas que contendr<64> la tabla
|
||||||
|
TbElementosCFG -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("NumElement", ftAutoInc, 0, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("PosX", ftInteger, 0, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("PosY", ftInteger, 0, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("Activo", ftBoolean, 0, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("IP", ftString, 15, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("Name", ftString, 8, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("Comienzo", ftDateTime, 0, false );
|
||||||
|
TbElementosCFG -> FieldDefs -> Add("Tiempo", ftDateTime, 0, false );
|
||||||
|
|
||||||
|
TbElementosCFG -> IndexDefs-> Clear();
|
||||||
|
TbElementosCFG->IndexDefs->Add("Primary", "NumElement", TIndexOptions() << ixPrimary << ixUnique );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbElementosCFG -> CreateTable();
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Iniciando sistema por primera vez..." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::TbElementosCFGAfterOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
int i; HoraActual = TDateTime::CurrentTime();
|
||||||
|
|
||||||
|
// Cargamos todos los elementos
|
||||||
|
TbElementosCFG -> First(); i = 0;
|
||||||
|
while ( ! TbElementosCFG->Eof && i < nElementosMAX )
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
if ( TbElementosCFG->FieldByName( "Activo" )->AsBoolean )
|
||||||
|
{
|
||||||
|
if ( MessageBox( NULL, AnsiString("El equipo arriba indicado se encuentra \"ocupado\"\n<> Desea dejar libre este equipo ?").c_str(), AnsiString("Equipo " + TbElementosCFG->FieldByName( "NumElement" )->AsString + " <20>Activo?").c_str(), MB_YESNO ) != IDNO )
|
||||||
|
{
|
||||||
|
TbElementosCFG->Edit();
|
||||||
|
TbElementosCFG->FieldByName( "Activo" )->AsBoolean = false;
|
||||||
|
TbElementosCFG->Post();
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Elemento n<>" + TbElementosCFG->FieldByName( "NumElement" )->AsString + ", estaba activo" );
|
||||||
|
} else {
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Elemento n<>" + TbElementosCFG->FieldByName( "NumElement" )->AsString + ", SIGUE activo" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
NewElementAt( TbElementosCFG->FieldByName( "PosX" )->AsInteger,
|
||||||
|
TbElementosCFG->FieldByName( "PosY" )->AsInteger,
|
||||||
|
TbElementosCFG->FieldByName( "NumElement" )->AsInteger,
|
||||||
|
TbElementosCFG->FieldByName( "IP" )->AsString,
|
||||||
|
TbElementosCFG->FieldByName( "Name" )->AsString
|
||||||
|
);
|
||||||
|
TbElementosCFG -> Next(); i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::Estado1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( !ServerHook )
|
||||||
|
ElementoDblClick(mElementoCFG->PopupComponent);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::ElementoDblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
// Abrimos el cuadro de dialogo de Status...
|
||||||
|
if ( ((TElemento *)Sender)->StatusCode != -1 )
|
||||||
|
{
|
||||||
|
TStatus *Status;
|
||||||
|
Status = new TStatus(this);
|
||||||
|
Status->SetElement( (TElemento *)Sender );
|
||||||
|
Status -> ShowModal();
|
||||||
|
delete Status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::FormClose(TObject *Sender, TCloseAction &Action)
|
||||||
|
{
|
||||||
|
#ifdef DEMOSTRACION
|
||||||
|
ShowMessage( MsgDEMO );
|
||||||
|
#endif
|
||||||
|
clientHook->Close();
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Fin de la sesi<73>n" );
|
||||||
|
Memo1->Lines->SaveToFile( opLOG );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::FormDeactivate(TObject *Sender)
|
||||||
|
{
|
||||||
|
FreeThreads();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::Propiedades1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( ServerHook ) return;
|
||||||
|
|
||||||
|
if ( ChangePositionEnabled )
|
||||||
|
{
|
||||||
|
TElementosCFG *ElementosCFG;
|
||||||
|
ElementosCFG = new TElementosCFG(this);
|
||||||
|
ElementosCFG -> ShowModal();
|
||||||
|
delete ElementosCFG;
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Se han modificado las direcciones IP" );
|
||||||
|
|
||||||
|
LoadProtectedList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::CerrarWindows1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TElemento *Elemento = (TElemento *)(mElementoCFG->PopupComponent);
|
||||||
|
|
||||||
|
if ( MessageBox( NULL, "<EFBFBD> Realmente quiere cerrar el equipo ?", AnsiString("Equipo n: -- " + AnsiString( Elemento->NumElemento ) + " --" +" Nombre: \""+Elemento->GiveMyName()+"\"" ).c_str(), MB_OKCANCEL ) == IDOK )
|
||||||
|
{
|
||||||
|
if ( ServerHook )
|
||||||
|
{
|
||||||
|
ServerHookCode = 5660; ServerHookElement = Elemento->NumElemento;
|
||||||
|
serverHook->Active = true;
|
||||||
|
} else
|
||||||
|
Elemento->CerrarWindows();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TThread * TCtrlPPal::GetThread(void)
|
||||||
|
{
|
||||||
|
TList *pList = pCache->LockList();
|
||||||
|
TThread *NewThread;
|
||||||
|
if (pList->Count) // cache is not empty
|
||||||
|
{
|
||||||
|
NewThread = (TThread *)pList->Items[0];
|
||||||
|
pList->Delete(0); // remove from cache
|
||||||
|
}
|
||||||
|
else
|
||||||
|
NewThread = (TThread *)new ThreadSocket(true); // create but don<6F>t run
|
||||||
|
pCache->UnlockList();
|
||||||
|
return NewThread;
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::FreeThreads(void)
|
||||||
|
{
|
||||||
|
TList *pList = pCache->LockList();
|
||||||
|
for (int i = pList->Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
|
||||||
|
delete pList->Items[i];
|
||||||
|
pList->Delete(i);
|
||||||
|
}
|
||||||
|
pCache->UnlockList();
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
void __fastcall TCtrlPPal::FormCloseQuery(TObject *Sender, bool &CanClose)
|
||||||
|
{
|
||||||
|
// Esperamos a que se cierren los Sockets...
|
||||||
|
if ( AnySocketActive > 0 )
|
||||||
|
{
|
||||||
|
if ( Application->MessageBox("La aplicaci<63>n sigue intentando comunicarse\ncon alg<6C>n terminal.\nPor favor, espere...\n(Cancelar el proceso dejar<61> la aplicaci<63>n\nen un estado Altamente INESTABLE)", AnsiString("<EFBFBD><EFBFBD><EFBFBD> " + AnsiString( AnySocketActive ) + " Alerta(s) !!!").c_str(), MB_OKCANCEL + MB_DEFBUTTON1) != ID_CANCEL )
|
||||||
|
{
|
||||||
|
CanClose = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::ActualizarEstado1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( ServerHook )
|
||||||
|
{
|
||||||
|
ServerHookCode = 5661; ServerHookElement = ( (TElemento *)(mElementoCFG->PopupComponent) )->NumElemento;
|
||||||
|
serverHook -> Active = true;
|
||||||
|
} else {
|
||||||
|
( (TElemento *)(mElementoCFG->PopupComponent) ) -> RefreshElement();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::SinTIEMPO1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TElemento *Elemento = (TElemento *)(mElementoCFG->PopupComponent);
|
||||||
|
|
||||||
|
if ( MessageBox( NULL, "<EFBFBD> Realmente quiere QUITAR EL TIEMPO al equipo ?", AnsiString("Equipo n: -- " + AnsiString( Elemento->NumElemento ) + " --"+" Nombre: \""+Elemento->GiveMyName()+"\"").c_str() , MB_OKCANCEL ) == IDOK )
|
||||||
|
{
|
||||||
|
// Actualizamos el historial
|
||||||
|
TbHistorial -> InsertRecord( ARRAYOFCONST(( Elemento->NumElemento,
|
||||||
|
(Variant)TDateTime::CurrentDateTime(),
|
||||||
|
(Variant)Elemento->TiempoRestante(), 0, 998, 0 )) );
|
||||||
|
TbHistorial -> FlushBuffers();
|
||||||
|
if ( ServerHook )
|
||||||
|
{
|
||||||
|
ServerHookCode = 5668; ServerHookElement = Elemento->NumElemento;
|
||||||
|
serverHook -> Active = true;
|
||||||
|
} else
|
||||||
|
Elemento -> ForcedTimeOut();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::TbHistorialBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbHistorial -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
// Usamos la propiedad FielDefs para definir
|
||||||
|
// las columnas que contendr<64> la tabla
|
||||||
|
TbHistorial -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
TbHistorial -> FieldDefs -> Add("NumElement", ftInteger, 0, false );
|
||||||
|
TbHistorial -> FieldDefs -> Add("FComienzo", ftDateTime, 0, false );
|
||||||
|
TbHistorial -> FieldDefs -> Add("Tiempo", ftTime, 0, false );
|
||||||
|
TbHistorial -> FieldDefs -> Add("idc", ftInteger, 0, false );
|
||||||
|
TbHistorial -> FieldDefs -> Add("idtc", ftInteger, 0, false );
|
||||||
|
TbHistorial -> FieldDefs -> Add("precio", ftCurrency, 0, false );
|
||||||
|
|
||||||
|
TbHistorial -> IndexDefs -> Clear();
|
||||||
|
TbHistorial -> IndexDefs -> Add("Primary", "NumElement;FComienzo", TIndexOptions() << ixPrimary << ixUnique );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbHistorial -> CreateTable();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::AsignarHora1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
iAnclada = GetNumElement( Sender );
|
||||||
|
if ( iAnclada != -1 )
|
||||||
|
{
|
||||||
|
Elementos[ iAnclada ]-> EnviarListasAppl();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::RemoteStartClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
// Remote Start...
|
||||||
|
if ( AnySocketActive > 0 )
|
||||||
|
{
|
||||||
|
ShowMessage( "Imposible enganche remoto,\nhasta que todos los terminales\nacaben su comunicaci<63>n" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ( ClientHook )
|
||||||
|
{
|
||||||
|
ShowMessage( "Alguien nos tiene enganchados.\nImposible realizar enganche remoto.\n(Pruebe en otro orden)" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RemoteStart -> Visible = false;
|
||||||
|
ServerHook = true;
|
||||||
|
|
||||||
|
remoteBack->Visible = true;
|
||||||
|
remoteLog->Visible = true;
|
||||||
|
remoteClose->Visible = true;
|
||||||
|
|
||||||
|
|
||||||
|
remoteLog->Caption= "Inicializando sistema remoto...";
|
||||||
|
|
||||||
|
serverHook->Address = InputBox("Conexi<EFBFBD>n Control Remoto", "IP Destino:", "0.0.0.0");
|
||||||
|
|
||||||
|
|
||||||
|
remoteLog->Caption= "Eliminando terminales actuales" ;
|
||||||
|
Elementos->Pack();
|
||||||
|
for( int i=0; i < Elementos->Count; i++ )
|
||||||
|
{
|
||||||
|
Pizarra->RemoveControl( (TElemento *)Elementos->Items[i] );
|
||||||
|
delete (TElemento *)Elementos->Items[i];
|
||||||
|
}
|
||||||
|
Elementos->Clear();
|
||||||
|
|
||||||
|
remoteLog->Caption= "Accediendo a los terminales remotos" ;
|
||||||
|
ServerHookCode = 5650; ServerHookElement = 5650;
|
||||||
|
serverHook->Active = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::remoteCloseDblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
if ( ClientHook )
|
||||||
|
{
|
||||||
|
ShowMessage( "Alguien nos tiene enganchados.\nImposible des-enganche remoto.\nRiesgo de incomunicaci<63>n parcial" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
remoteLog->Caption= "Eliminando terminales actuales" ;
|
||||||
|
Elementos->Pack();
|
||||||
|
for( int i=0; i < Elementos->Count; i++ )
|
||||||
|
{
|
||||||
|
Pizarra->RemoveControl( (TElemento *)Elementos->Items[i] );
|
||||||
|
delete (TElemento *)Elementos->Items[i];
|
||||||
|
}
|
||||||
|
Elementos->Clear();
|
||||||
|
|
||||||
|
ServerHook = false;
|
||||||
|
|
||||||
|
remoteLog->Caption= "Cargando Terminales Locales" ;
|
||||||
|
TbElementosCFGAfterOpen(0);
|
||||||
|
|
||||||
|
RemoteStart -> Visible = true;
|
||||||
|
|
||||||
|
remoteBack->Visible = false;
|
||||||
|
remoteLog->Visible = false;
|
||||||
|
remoteClose->Visible = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::clientHookClientConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Nos han enganchado :: " + Socket->LocalAddress );
|
||||||
|
ClientHook = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::clientHookClientDisconnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Desenganche " );
|
||||||
|
ClientHook = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::clientHookClientError(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente <20> ERROR ! " + AnsiString( ErrorCode ) + "::" + Socket->LocalAddress );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::SetActiveTimeElement( TElemento *Elemento, TDateTime Tiempo, int L_idc, int L_idtc, Currency L_Precio )
|
||||||
|
{
|
||||||
|
if ( ServerHook )
|
||||||
|
{
|
||||||
|
ServerHookCode = 5669; ServerHookElement = Elemento->NumElemento;
|
||||||
|
ServerTiempo = Tiempo; ServerL_idc = L_idc; ServerL_idtc = L_idtc; ServerL_Precio = (double)L_Precio;
|
||||||
|
serverHook -> Active = true;
|
||||||
|
} else
|
||||||
|
Elemento->SetActiveTime( Tiempo, L_idc, L_idtc, L_Precio );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TElemento * __fastcall TCtrlPPal::SearchElement( int NumEl )
|
||||||
|
{
|
||||||
|
for (int i = Elementos->Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if ( ((TElemento *)(Elementos->Items[i]))->NumElemento == NumEl )
|
||||||
|
return (TElemento *)(Elementos->Items[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::clientHookAccept(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
int CodOp, dev;
|
||||||
|
double Tiempo;
|
||||||
|
TElemento *Elemento;
|
||||||
|
TWinSocketStream *pStream;
|
||||||
|
|
||||||
|
Memo1->Lines->Insert( 0, "Conexi<EFBFBD>n aceptada de " + Socket->RemoteAddress );
|
||||||
|
|
||||||
|
try {
|
||||||
|
pStream = new TWinSocketStream( Socket, 60000 );
|
||||||
|
try{
|
||||||
|
// Socket->ReceiveBuf( &CodOp, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &CodOp, sizeof(int) );
|
||||||
|
|
||||||
|
if ( CodOp != 5650 )
|
||||||
|
{
|
||||||
|
dev = ( Elemento = SearchElement( CodOp ) ) == NULL ? 1 : 0;
|
||||||
|
// Socket->SendBuf( &dev, sizeof(int) );
|
||||||
|
pStream->Write( &dev, sizeof(int) );
|
||||||
|
if ( dev ) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClientHook = true;
|
||||||
|
|
||||||
|
// Socket->ReceiveBuf( &CodOp, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &CodOp, sizeof(int) );
|
||||||
|
|
||||||
|
switch( CodOp )
|
||||||
|
{
|
||||||
|
// On
|
||||||
|
case 5669:
|
||||||
|
int L_idc, L_idtc;
|
||||||
|
float L_Precio;
|
||||||
|
/*
|
||||||
|
Socket->ReceiveBuf( &Tiempo, sizeof(double) );
|
||||||
|
Socket->ReceiveBuf( &L_idc, sizeof(int) );
|
||||||
|
Socket->ReceiveBuf( &L_idtc, sizeof(int) );
|
||||||
|
Socket->ReceiveBuf( &L_Precio, sizeof(float) );
|
||||||
|
*/
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &Tiempo, sizeof(double) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &L_idc, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &L_idtc, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &L_Precio, sizeof(float) );
|
||||||
|
|
||||||
|
SetActiveTimeElement( Elemento, Tiempo, L_idc, L_idtc, (Currency)L_Precio );
|
||||||
|
break;
|
||||||
|
// Off
|
||||||
|
case 5668:
|
||||||
|
Elemento -> ForcedTimeOut();
|
||||||
|
break;
|
||||||
|
// CERRAR WINDOWS
|
||||||
|
case 5660:
|
||||||
|
Elemento->CerrarWindows();
|
||||||
|
break;
|
||||||
|
// Query TIME (Refresh)
|
||||||
|
case 5661:
|
||||||
|
Elemento -> RefreshElement();
|
||||||
|
Tiempo = Elemento->iTiempoPedido();
|
||||||
|
// Socket->SendBuf( &Tiempo, sizeof(double) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &Tiempo, sizeof(double) );
|
||||||
|
Tiempo = Elemento->RTiempoRestante;
|
||||||
|
// Socket->SendBuf( &Tiempo, sizeof(double) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &Tiempo, sizeof(double) );
|
||||||
|
break;
|
||||||
|
// Lista de elementos...
|
||||||
|
case 5650:
|
||||||
|
dev = Elementos->Count;
|
||||||
|
// Socket->SendBuf( &dev, sizeof(int) );
|
||||||
|
pStream->Write( &dev, sizeof(int) );
|
||||||
|
|
||||||
|
for (int i = Elementos->Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
Elemento = (TElemento *)(Elementos->Items[i]);
|
||||||
|
//void __fastcall TCtrlPPal::NewElementAt(int X, int Y, int NumEl, AnsiString IP, AnsiString Name )
|
||||||
|
/*
|
||||||
|
Socket->SendBuf( &(Elemento->Left), sizeof(int) );
|
||||||
|
Socket->SendBuf( &(Elemento->Top), sizeof(int) );
|
||||||
|
Socket->SendBuf( &(Elemento->NumElemento), sizeof(int) );
|
||||||
|
Socket->SendBuf( Elemento->GiveMyIP().c_str(), 70 );
|
||||||
|
Socket->SendBuf( Elemento->GiveMyName().c_str(), 70 );
|
||||||
|
|
||||||
|
Tiempo = Elemento->iTiempoPedido(); Socket->SendBuf( &Tiempo, sizeof(double) );
|
||||||
|
Tiempo = Elemento->RTiempoRestante; Socket->SendBuf( &Tiempo, sizeof(double) );
|
||||||
|
|
||||||
|
*/
|
||||||
|
pStream->Write( &(Elemento->Left), sizeof(int) );
|
||||||
|
pStream->Write( &(Elemento->Top), sizeof(int) );
|
||||||
|
pStream->Write( &(Elemento->NumElemento), sizeof(int) );
|
||||||
|
pStream->Write( Elemento->GiveMyIP().c_str(), 70 );
|
||||||
|
pStream->Write( Elemento->GiveMyName().c_str(), 70 );
|
||||||
|
|
||||||
|
Tiempo = Elemento->iTiempoPedido(); pStream->Write( &Tiempo, sizeof(double) );
|
||||||
|
Tiempo = Elemento->RTiempoRestante; pStream->Write( &Tiempo, sizeof(double) );
|
||||||
|
|
||||||
|
Elemento -> RefreshElement();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Memo1->Lines->Insert( 0, "Mensaje desconocido ::" + Socket->RemoteAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception &E)
|
||||||
|
{
|
||||||
|
if (!E.ClassNameIs("EAbort"))
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, "ERROR en la comunicaci<63>n ::" + Socket->RemoteAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__finally
|
||||||
|
{
|
||||||
|
delete pStream;
|
||||||
|
Socket->Close();
|
||||||
|
}
|
||||||
|
Memo1->Lines->Insert( 0, "Tramites Finalizados ::" + Socket->RemoteAddress );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::serverHookConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
double TiempoPedido, TiempoRestante;
|
||||||
|
TWinSocketStream *pStream;
|
||||||
|
int Data;
|
||||||
|
// create a TWinSocketStream for reading and writing
|
||||||
|
try {
|
||||||
|
pStream = new TWinSocketStream( Socket, 60000 );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pStream->Write( &ServerHookElement, sizeof(int) );
|
||||||
|
|
||||||
|
if ( ServerHookCode != 5650 )
|
||||||
|
{
|
||||||
|
pStream->WaitForData(30000);
|
||||||
|
pStream->Read( &Data, sizeof(int) );
|
||||||
|
if ( Data == 1 )
|
||||||
|
{
|
||||||
|
Socket->Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pStream->Write( &ServerHookCode, sizeof(int) );
|
||||||
|
|
||||||
|
// Comunicamos seg<65>n c<>digo en ServerHookCode
|
||||||
|
switch ( ServerHookCode )
|
||||||
|
{
|
||||||
|
// On
|
||||||
|
case 5669:
|
||||||
|
pStream->Write( &ServerTiempo, sizeof(double) );
|
||||||
|
pStream->Write( &ServerL_idc, sizeof(int) );
|
||||||
|
pStream->Write( &ServerL_idtc, sizeof(int) );
|
||||||
|
pStream->Write( &ServerL_Precio, sizeof(float) );
|
||||||
|
break;
|
||||||
|
// Off
|
||||||
|
case 5668:
|
||||||
|
// Nada mas
|
||||||
|
break;
|
||||||
|
// CERRAR WINDOWS
|
||||||
|
case 5660:
|
||||||
|
// Nada mas
|
||||||
|
break;
|
||||||
|
// Lista de elementos...
|
||||||
|
case 5650:
|
||||||
|
pStream->WaitForData(30000); // Inicio
|
||||||
|
pStream->Read( &Data, sizeof(int) );
|
||||||
|
int X,Y, NumEl; char IP[80], Name[80];
|
||||||
|
for (int i = Data - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &X, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &Y, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &NumEl, sizeof(int) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &IP, 70 );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &Name, 70 );
|
||||||
|
|
||||||
|
NewElementAt( X, Y, NumEl, IP, Name );
|
||||||
|
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &TiempoPedido, sizeof(double) );
|
||||||
|
pStream->WaitForData(30000); pStream->Read( &TiempoRestante, sizeof(double) );
|
||||||
|
|
||||||
|
SearchElement( NumEl ) -> ClientTimeIs( TiempoPedido, TiempoRestante );
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// Query TIME (Refresh)
|
||||||
|
case 5661:
|
||||||
|
pStream->WaitForData(30000); // Inicio
|
||||||
|
pStream->Read( &TiempoPedido, sizeof(double) );
|
||||||
|
|
||||||
|
pStream->WaitForData(30000); // Restante
|
||||||
|
pStream->Read( &TiempoRestante, sizeof(double) );
|
||||||
|
|
||||||
|
SearchElement( ServerHookElement ) -> ClientTimeIs( TiempoPedido, TiempoRestante );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Memo1->Lines->Insert( 0, "Mensaje desconocido ::" + Socket->RemoteAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception &E)
|
||||||
|
{
|
||||||
|
if (!E.ClassNameIs("EAbort"))
|
||||||
|
{
|
||||||
|
Memo1->Lines->Insert( 0, "ERROR en la comunicaci<63>n ::" + Socket->RemoteAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__finally
|
||||||
|
{
|
||||||
|
delete pStream;
|
||||||
|
Socket->Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TCtrlPPal::ActiveImage3Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
clientHook -> Active = !clientHook -> Active;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::Image1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
char zFileName[80], zParams[80], zDir[80];
|
||||||
|
ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "http:\\\\www.infdj.com"),
|
||||||
|
StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TCtrlPPal::TbPersonasNewRecord(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
TbPersonas->FieldByName( "FAlta" )->AsDateTime = TDateTime::CurrentDateTime();
|
||||||
|
TbPersonas->FieldByName( "FModif" )->AsDateTime = TDateTime::CurrentDateTime();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
CtrlPPal.dfm
Normal file
157
CtrlPPal.h
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlPPalH
|
||||||
|
#define CtrlPPalH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include "CoolForm.hpp"
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Menus.hpp>
|
||||||
|
#include <Db.hpp>
|
||||||
|
#include <DBTables.hpp>
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
#include "actimg.h"
|
||||||
|
#include <ScktComp.hpp>
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TCtrlPPal : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TCoolForm *CoolForm1;
|
||||||
|
TScrollBox *Pizarra;
|
||||||
|
TImage *iElementoV;
|
||||||
|
TImage *iElemento2;
|
||||||
|
TPopupMenu *mElementoCFG;
|
||||||
|
TMenuItem *Propiedades1;
|
||||||
|
TMenuItem *N1;
|
||||||
|
TMenuItem *Eliminar1;
|
||||||
|
TTable *TbElementosCFG;
|
||||||
|
TMenuItem *N2;
|
||||||
|
TMenuItem *AsignarHora1;
|
||||||
|
TMenuItem *Estado1;
|
||||||
|
TActiveImage *iPosV;
|
||||||
|
TActiveImage *iClose;
|
||||||
|
TActiveImage *ActiveImage3;
|
||||||
|
TActiveImage *iMin;
|
||||||
|
TMemo *Memo1;
|
||||||
|
TMenuItem *CerrarWindows1;
|
||||||
|
TImage *iElemento3;
|
||||||
|
TImage *iElemento4;
|
||||||
|
TMenuItem *ActualizarEstado1;
|
||||||
|
TMenuItem *N3;
|
||||||
|
TMenuItem *SinTIEMPO1;
|
||||||
|
TTable *TbHistorial;
|
||||||
|
TImage *remoteBack;
|
||||||
|
TActiveImage *RemoteStart;
|
||||||
|
TActiveImage *remoteClose;
|
||||||
|
TServerSocket *clientHook;
|
||||||
|
TClientSocket *serverHook;
|
||||||
|
TLabel *remoteLog;
|
||||||
|
TImage *Image1;
|
||||||
|
TTable *TbPersonas;
|
||||||
|
TAutoIncField *TbPersonasCodCliente1;
|
||||||
|
TStringField *TbPersonasNombre;
|
||||||
|
TStringField *TbPersonasApellidos;
|
||||||
|
TStringField *TbPersonasTelefono1;
|
||||||
|
TStringField *TbPersonasDocumentoDNP;
|
||||||
|
TDateTimeField *TbPersonasFAlta;
|
||||||
|
TDateTimeField *TbPersonasFModif;
|
||||||
|
TIntegerField *TbPersonasTiempoH;
|
||||||
|
TIntegerField *TbPersonasTiempoM;
|
||||||
|
void __fastcall iCloseDblClick(TObject *Sender);
|
||||||
|
void __fastcall iMinClick(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall iPosVClick(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall FormDestroy(TObject *Sender);
|
||||||
|
void __fastcall PizarraDblClick(TObject *Sender);
|
||||||
|
void __fastcall EliminarElemento(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall TbElementosCFGBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall TbElementosCFGAfterOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall ElementoDblClick(TObject *Sender);
|
||||||
|
void __fastcall Estado1Click(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
|
||||||
|
void __fastcall FormDeactivate(TObject *Sender);
|
||||||
|
void __fastcall Propiedades1Click(TObject *Sender);
|
||||||
|
void __fastcall CerrarWindows1Click(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
|
||||||
|
|
||||||
|
void __fastcall ActualizarEstado1Click(TObject *Sender);
|
||||||
|
void __fastcall SinTIEMPO1Click(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall TbHistorialBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall AsignarHora1Click(TObject *Sender);
|
||||||
|
void __fastcall RemoteStartClick(TObject *Sender);
|
||||||
|
void __fastcall remoteCloseDblClick(TObject *Sender);
|
||||||
|
void __fastcall clientHookClientConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall clientHookClientDisconnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall clientHookClientError(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket, TErrorEvent ErrorEvent,
|
||||||
|
int &ErrorCode);
|
||||||
|
void __fastcall clientHookAccept(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall serverHookConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket);
|
||||||
|
void __fastcall ActiveImage3Click(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall Image1Click(TObject *Sender);
|
||||||
|
void __fastcall TbPersonasNewRecord(TDataSet *DataSet);
|
||||||
|
private: // User declarations
|
||||||
|
void __fastcall ElementoMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
|
||||||
|
void __fastcall ElementoMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
|
||||||
|
void __fastcall ElementoMouseMove(TObject *Sender, TShiftState Shift, int X, int Y);
|
||||||
|
// Obtiene el indice del elemento sobre el que esta el puntero del rat<61>n.
|
||||||
|
void __fastcall NewElementAt( int X, int Y, int NumEl, AnsiString IP, AnsiString Name );
|
||||||
|
|
||||||
|
TDateTime HoraActual; // Hora "ACTUAL" (se actualiza por minutos)
|
||||||
|
|
||||||
|
/**********************/
|
||||||
|
int nElementosMAX;
|
||||||
|
TList *Elementos;
|
||||||
|
void __fastcall CheckAppIntegrity(void);
|
||||||
|
void __fastcall StartEventRecorder(void);
|
||||||
|
|
||||||
|
/**********************/
|
||||||
|
int ServerHookCode; int ServerHookElement; int ServerHookTime;
|
||||||
|
double ServerTiempo; int ServerL_idc, ServerL_idtc; float ServerL_Precio;
|
||||||
|
bool ClientHook;
|
||||||
|
|
||||||
|
TElemento * __fastcall SearchElement( int NumElemento );
|
||||||
|
|
||||||
|
void __fastcall LoadProtectedList(void);
|
||||||
|
|
||||||
|
public: // User declarations
|
||||||
|
|
||||||
|
bool __fastcall Manipula2(AnsiString Serial, AnsiString Image);
|
||||||
|
bool __fastcall Manipula(AnsiString Serial, AnsiString Image);
|
||||||
|
|
||||||
|
bool ServerHook;
|
||||||
|
|
||||||
|
|
||||||
|
__fastcall TCtrlPPal(TComponent* Owner);
|
||||||
|
|
||||||
|
void __fastcall SetActiveTimeElement( TElemento *Elemento, TDateTime Tiempo, int L_idc, int L_idtc, Currency L_Precio );
|
||||||
|
TStringList *siMinimizar, *noMinimizar;
|
||||||
|
TStringList *snMinimizar, *noAbrir;
|
||||||
|
bool ChangePositionEnabled;
|
||||||
|
|
||||||
|
//////////////////// MANTENIMIENTO DE LOS HILOS //////////////////////////
|
||||||
|
TThread *GetThread(void);
|
||||||
|
void __fastcall FreeThreads(void);
|
||||||
|
int AnySocketActive;
|
||||||
|
//////////////////// MANTENIMIENTO DE LOS HILOS //////////////////////////
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TCtrlPPal *CtrlPPal;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
226
CtrlSocket.cpp
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
#include "CtrlSocket.h"
|
||||||
|
#include "CtrlPPal.h"
|
||||||
|
|
||||||
|
#pragma package(smart_init)
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
// Important: Methods and properties of objects in VCL can only be
|
||||||
|
// used in a method called using Synchronize, for example:
|
||||||
|
//
|
||||||
|
// Synchronize(UpdateCaption);
|
||||||
|
//
|
||||||
|
// where UpdateCaption could look like:
|
||||||
|
//
|
||||||
|
// void __fastcall ThreadSocket::UpdateCaption()
|
||||||
|
// {
|
||||||
|
// Form1->Caption = "Updated in a thread";
|
||||||
|
// }
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall ThreadSocket::ThreadSocket(bool CreateSuspended)
|
||||||
|
: TThread(CreateSuspended)
|
||||||
|
{
|
||||||
|
CtrlCOP = 0;
|
||||||
|
FreeOnTerminate = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall ThreadSocket::SetSocket( AnsiString IP_dst, int Socket )
|
||||||
|
{
|
||||||
|
ClientSocket = new TClientSocket( CtrlPPal->Owner );
|
||||||
|
ClientSocket->OnConnect = SocketConnect;
|
||||||
|
ClientSocket->OnDisconnect = SocketDisconnect;
|
||||||
|
ClientSocket->OnError = SocketError;
|
||||||
|
ClientSocket->ClientType = ctBlocking;
|
||||||
|
ClientSocket->Address = IP_dst;
|
||||||
|
ClientSocket->Port = Socket;
|
||||||
|
|
||||||
|
SocketCreated = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall ThreadSocket::SocketDisconnect(TObject *Sender, TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Tramites Finalizados " + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall ThreadSocket::SocketError(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
|
||||||
|
{
|
||||||
|
if ( OWNER_Element )
|
||||||
|
{
|
||||||
|
OWNER_Element->StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
OWNER_Element->BlinkCode = IP_OFF; // --- ERROR INTENTANDO COMUNICAR --
|
||||||
|
// OWNER_Element->Blink->Enabled = true; // Activamos el parpadeo
|
||||||
|
OWNER_Element->Blink->Interval = 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente <20> ERROR ! " + AnsiString( ErrorCode ) + "::" + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
ErrorCode = 0;
|
||||||
|
ClientSocket->Active = false;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall ThreadSocket::SocketConnect(TObject *Sender,
|
||||||
|
TCustomWinSocket *Socket)
|
||||||
|
{
|
||||||
|
TWinSocketStream *pStream;
|
||||||
|
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente Conectado ::" + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
|
||||||
|
// create a TWinSocketStream for reading and writing
|
||||||
|
pStream = new TWinSocketStream( Socket, 60000 );
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// fetch and process commands until the connection or thread is terminated
|
||||||
|
if ( !Terminated && ClientSocket->Active )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int CodOp; double doubleT = (double)CtrlTiempo;
|
||||||
|
CodOp = (CtrlCOP == QueryTIME) ? 6661 : (CtrlCOP == CloseWINDOWS) ? 6660 : (CtrlCOP == SettingSTATUS ) ? 6669 : (CtrlCOP == sendLIST) ? 6662 : 0;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
switch( CtrlCOP )
|
||||||
|
{
|
||||||
|
case QueryTIME:
|
||||||
|
double dTiempoInicio;
|
||||||
|
pStream->WaitForData(30000);
|
||||||
|
pStream->Read( &doubleT, sizeof(double) );
|
||||||
|
pStream->WaitForData(30000);
|
||||||
|
pStream->Read( &dTiempoInicio, sizeof(double) );
|
||||||
|
if ( OWNER_Element )
|
||||||
|
OWNER_Element->ClientTimeIs( doubleT, dTiempoInicio ); // Comunicamos el tiempo que dice tener el Clt.
|
||||||
|
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Peticion de Tiempo " + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
break;
|
||||||
|
case CloseWINDOWS:
|
||||||
|
CodOp = CtrlState;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
pStream->Write( &doubleT, sizeof(double) );
|
||||||
|
if ( OWNER_Element )
|
||||||
|
{
|
||||||
|
OWNER_Element->StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
OWNER_Element->BlinkCode = IP_OFF; // --- ERROR INTENTANDO COMUNICAR --
|
||||||
|
OWNER_Element->Blink->Interval = 500;
|
||||||
|
}
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cierre de Windows " + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
break;
|
||||||
|
case SettingSTATUS:
|
||||||
|
CodOp = CtrlState;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
pStream->Write( &doubleT, sizeof(double) );
|
||||||
|
if ( OWNER_Element )
|
||||||
|
{
|
||||||
|
OWNER_Element->BlinkCode = NONE; // Desactivamos el parpadeo
|
||||||
|
OWNER_Element->StatusCode = CtrlState ? WORKING : FREE;// Estamos en proceso de COLOCAR ESTADO
|
||||||
|
OWNER_Element->Blink->Interval = 60000;
|
||||||
|
OWNER_Element->ShowElementInfo();
|
||||||
|
// Contabilizamos la conexi<78>n
|
||||||
|
if ( CtrlState )
|
||||||
|
OWNER_Element->HistoricoTermON( CtrlTiempo );
|
||||||
|
}
|
||||||
|
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cambio de estado (" + (CtrlState ? "ON":"OFF") + ")" + Socket->LocalAddress + " :: " + ClientSocket->Address );
|
||||||
|
break;
|
||||||
|
case sendLIST:
|
||||||
|
CodOp = CtrlPPal->siMinimizar->Count;
|
||||||
|
// CtrlPPal->Memo1->Lines->Insert( 0, "Elementos A: " + AnsiString( CodOp ) );
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
for ( int i=0; i<CodOp; i++ )
|
||||||
|
pStream->Write( (void *)((CtrlPPal->siMinimizar->Strings[i]).c_str()), sizeof(char)*15 );
|
||||||
|
CodOp = CtrlPPal->noMinimizar->Count;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
for ( int i=0; i<CodOp; i++ )
|
||||||
|
pStream->Write( (void *)((CtrlPPal->noMinimizar->Strings[i]).c_str()), sizeof(char)*15 );
|
||||||
|
|
||||||
|
|
||||||
|
CodOp = CtrlPPal->snMinimizar->Count;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
for ( int i=0; i<CodOp; i++ )
|
||||||
|
pStream->Write( (void *)((CtrlPPal->snMinimizar->Strings[i]).c_str()), sizeof(char)*15 );
|
||||||
|
CodOp = CtrlPPal->noAbrir->Count;
|
||||||
|
pStream->Write( &CodOp, sizeof(int) );
|
||||||
|
for ( int i=0; i<CodOp; i++ )
|
||||||
|
pStream->Write( (void *)((CtrlPPal->noAbrir->Strings[i]).c_str()), sizeof(char)*15 );
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pStream->WaitForData(30000);
|
||||||
|
pStream->Read( &CodOp, sizeof(int) );
|
||||||
|
if ( CodOp != 54321 )
|
||||||
|
{
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Cliente RESPONDE ANORMALMENTE " + Socket->LocalAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception &E)
|
||||||
|
{
|
||||||
|
if (!E.ClassNameIs("EAbort"))
|
||||||
|
{
|
||||||
|
if ( OWNER_Element )
|
||||||
|
{
|
||||||
|
OWNER_Element->StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
OWNER_Element->BlinkCode = IP_OFF; // --- ERROR INTENTANDO COMUNICAR --
|
||||||
|
// OWNER_Element->Blink->Enabled = true; // Activamos el parpadeo
|
||||||
|
OWNER_Element->Blink->Interval = 500;
|
||||||
|
}
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Error en el HILO de " + Socket->LocalAddress );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__finally
|
||||||
|
{
|
||||||
|
delete pStream;
|
||||||
|
OWNER_Element = NULL;
|
||||||
|
Socket->Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall ThreadSocket::Execute()
|
||||||
|
{
|
||||||
|
if ( SocketCreated )
|
||||||
|
{
|
||||||
|
CtrlPPal->AnySocketActive++;
|
||||||
|
try {
|
||||||
|
ClientSocket->Active = true;
|
||||||
|
} catch (Exception &E) {
|
||||||
|
if (!E.ClassNameIs("EAbort"))
|
||||||
|
{
|
||||||
|
if ( OWNER_Element )
|
||||||
|
{
|
||||||
|
OWNER_Element->StatusCode = ERROR; // Estamos en proceso de COMPROBACION / ERROR
|
||||||
|
OWNER_Element->BlinkCode = IP_OFF; // --- ERROR INTENTANDO COMUNICAR --
|
||||||
|
// OWNER_Element->Blink->Enabled = true; // Activamos el parpadeo
|
||||||
|
OWNER_Element->Blink->Interval = 500;
|
||||||
|
}
|
||||||
|
CtrlPPal->Memo1->Lines->Insert( 0, (Now()).DateTimeString() + " :: Error en el HILO de " + ClientSocket->Address + " (" + E.Message+")" ); // you must write HandleThreadException
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while ( !Terminated && ClientSocket->Active ); // Do nothing
|
||||||
|
CtrlPPal->AnySocketActive--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
////////////////// GESTION DE LOS HILOS DE COMUNICACI<43>N /////////////////////
|
||||||
|
void __fastcall ThreadSocket::Terminate(TObject *Sender) // this is the OnTerminate handler
|
||||||
|
{
|
||||||
|
if ( SocketCreated )
|
||||||
|
{
|
||||||
|
if ( ClientSocket->Active )
|
||||||
|
ClientSocket->Active = false;
|
||||||
|
delete ClientSocket;
|
||||||
|
SocketCreated = false;
|
||||||
|
}
|
||||||
|
pCache->Add( this ); // add pointer to this thread to the cache
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
|
||||||
|
|
37
CtrlSocket.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef CtrlSocketH
|
||||||
|
#define CtrlSocketH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <ScktComp.hpp>
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
TThreadList *pCache;
|
||||||
|
enum CtrlCOPs { CloseWINDOWS = 6660, QueryTIME = 6661, SettingSTATUS = 6669, sendLIST = 6662 };
|
||||||
|
|
||||||
|
class ThreadSocket : public TThread
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
void __fastcall Terminate(TObject *Sender); // this is the OnTerminate handler
|
||||||
|
protected:
|
||||||
|
TClientSocket *ClientSocket;
|
||||||
|
void __fastcall Execute();
|
||||||
|
void __fastcall SocketDisconnect(TObject *Sender, TCustomWinSocket *Socket);
|
||||||
|
void __fastcall SocketError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode);
|
||||||
|
void __fastcall SocketConnect(TObject *Sender, TCustomWinSocket *Socket);
|
||||||
|
public:
|
||||||
|
bool CtrlState;
|
||||||
|
CtrlCOPs CtrlCOP;
|
||||||
|
TDateTime CtrlTiempo;
|
||||||
|
|
||||||
|
void __fastcall SetSocket( AnsiString IP_dst, int Socket );
|
||||||
|
__fastcall ThreadSocket(bool CreateSuspended);
|
||||||
|
TElemento *OWNER_Element;
|
||||||
|
bool SocketCreated;
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
//###########################################################################
|
||||||
|
|
||||||
|
#endif
|
33
CtrlSystem.bpg
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#------------------------------------------------------------------------------
|
||||||
|
VERSION = BWS.01
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
!ifndef ROOT
|
||||||
|
ROOT = $(MAKEDIR)\..
|
||||||
|
!endif
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$**
|
||||||
|
DCC = $(ROOT)\bin\dcc32.exe $**
|
||||||
|
BRCC = $(ROOT)\bin\brcc32.exe $**
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
PROJECTS = CtrlMstr CtrlDogs DataViewer Install ReajustarDinero.exe
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
default: $(PROJECTS)
|
||||||
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CtrlMstr: CtrlMstr.bpr
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
CtrlDogs: CtrlDogs.bpr
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
DataViewer: DataViewer.bpr
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
Install: Install.bpr
|
||||||
|
$(MAKE)
|
||||||
|
|
||||||
|
ReajustarDinero.exe: ReajustarDinero.bpr
|
||||||
|
$(ROOT)\bin\bpr2mak $**
|
||||||
|
$(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak
|
||||||
|
|
||||||
|
|
1
DBDWORK.INI
Normal file
@ -0,0 +1 @@
|
|||||||
|
|
589
DViewer.cpp
Normal file
@ -0,0 +1,589 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <io.h>
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include <winuser.h>
|
||||||
|
|
||||||
|
#include "DViewer.h"
|
||||||
|
#include "DViewer_Print.h"
|
||||||
|
#include "DViewer_PrintHistoric.h"
|
||||||
|
#include "DViewer_PrintBonos.h"
|
||||||
|
#include "DViewer_PrintClientes.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "ElastFrm"
|
||||||
|
#pragma link "ElastFrm"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TDViewerF *DViewerF;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#define TIPO_CONEXION 1
|
||||||
|
#define CAMBIO_PERIODO 2
|
||||||
|
|
||||||
|
__fastcall TDViewerF::TDViewerF(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
MargenRuptura->ItemIndex = 1;
|
||||||
|
SelIndex->ItemIndex = 1;
|
||||||
|
MinFecha->Date = TDateTime::CurrentDate();
|
||||||
|
MaxFecha->Date = TDateTime::CurrentDate();
|
||||||
|
TerminalFiltered = false;
|
||||||
|
RefiltraDatos();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Visualizador listo...";
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::TbHistoricoBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbHistorico -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
ShowMessage( "Esta aplicaci<63>n es un complemento de visualizaci<63>n a CtrlMstr\nY no puede se ejecutada por separado\n(Primero a de activar el control maestro)" );
|
||||||
|
Abort();
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::TbHistoricoCalcFields(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
switch ( TbHistorico->FieldByName("idtc")->AsInteger )
|
||||||
|
{
|
||||||
|
// Internet
|
||||||
|
case 0: TbHistorico->FieldByName("TipoConexion")->AsString="Internet"; break;
|
||||||
|
// Juegos
|
||||||
|
case 1: TbHistorico->FieldByName("TipoConexion")->AsString="Juegos"; break;
|
||||||
|
// Otros
|
||||||
|
case 2: TbHistorico->FieldByName("TipoConexion")->AsString="Otros..."; break;
|
||||||
|
// Envio de Listas
|
||||||
|
case 3: TbHistorico->FieldByName("TipoConexion")->AsString="Clases"; break;
|
||||||
|
// Envio de Listas
|
||||||
|
case 997: TbHistorico->FieldByName("TipoConexion")->AsString="ENVIO LISTAS"; break;
|
||||||
|
// Tiempo Anulado
|
||||||
|
case 998: TbHistorico->FieldByName("TipoConexion")->AsString="TIEMPO ANULADO"; break;
|
||||||
|
// Cierre de Windows
|
||||||
|
case 999: TbHistorico->FieldByName("TipoConexion")->AsString="Cerrar Windows"; break;
|
||||||
|
default: TbHistorico->FieldByName("TipoConexion")->AsString="DESCONOCIDA"; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
int __fastcall TDViewerF::Obten_idtc(void)
|
||||||
|
{
|
||||||
|
int dev;
|
||||||
|
switch( (idtConexion->ItemIndex-1) )
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
dev = 0;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
dev = 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
dev = 3;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
dev = 2;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
dev = 997;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
dev = 998;
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
dev = 999;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
dev = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::RefiltraDatos(void)
|
||||||
|
{
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Evaluando filtro...";
|
||||||
|
|
||||||
|
TDateTime FechaMin, FechaMax;
|
||||||
|
TbHistorico->FilterOptions = TbHistorico->FilterOptions << foCaseInsensitive;
|
||||||
|
|
||||||
|
MaxFecha->Time = 36544.9999891088;//EncodeTime( 23, 59, 59, 59 );
|
||||||
|
FechaMax = MaxFecha->Date;
|
||||||
|
MinFecha->Time = 0;
|
||||||
|
FechaMin = MinFecha->Date;
|
||||||
|
|
||||||
|
TbHistorico->Filter = "[FComienzo] >= '" + FechaMin + "' AND [FComienzo] <= '" + FechaMax +"'";
|
||||||
|
TbHistorico->Filtered = true;
|
||||||
|
|
||||||
|
// Refiltramos los bonos
|
||||||
|
TbBonos->FilterOptions = TbBonos->FilterOptions << foCaseInsensitive;
|
||||||
|
TbBonos->Filter = "[FechaCompra] >= '" + FechaMin + "' AND [FechaCompra] <= '" + FechaMax +"'";
|
||||||
|
TbBonos->Filtered = true;
|
||||||
|
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Rellenando gr<67>ficas...";
|
||||||
|
CalculaGraficas();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "";
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::CalculaGraficas(void)
|
||||||
|
{
|
||||||
|
unsigned short hh, mm, ss, mss;
|
||||||
|
Currency TotalF, TotalR;
|
||||||
|
int NConF, NConR, NumBonos;
|
||||||
|
|
||||||
|
TDateTime HoraFinAnterior; // Hora a la que deb<65>o acabar el elto. anterior
|
||||||
|
int EltoAnterior; // Elemento anterior
|
||||||
|
TDateTime Ruptura; // Tiempo Maximo para admitir que la conexion actual
|
||||||
|
// es continuacion de la anterior (<28>Reinicia la m<>quina?)
|
||||||
|
|
||||||
|
TbHistorico->DisableControls(); // Deshabilitamos los controles asociados
|
||||||
|
|
||||||
|
NumBonos = 0;
|
||||||
|
NConF = 0; NConR = 0;
|
||||||
|
TotalF = 0; TotalR = 0;
|
||||||
|
ProgressBar1->Min = 0;
|
||||||
|
ProgressBar1->Max = TbElementos->RecordCount;
|
||||||
|
HoraFinAnterior = 0;
|
||||||
|
EltoAnterior = 0;
|
||||||
|
if ( MargenRuptura->ItemIndex == -1 )
|
||||||
|
Ruptura = EncodeTime( 0, 0, 0, 0 );
|
||||||
|
else
|
||||||
|
Ruptura = EncodeTime( 0, (MargenRuptura->ItemIndex + 1)*5, 0, 0 );
|
||||||
|
|
||||||
|
// Vaciamos las conexiones / hora
|
||||||
|
for ( int i = 0; i<48; i++ )
|
||||||
|
{
|
||||||
|
ConexionesHoraR[ i ] = 0;
|
||||||
|
ConexionesHoraF[ i ] = 0;
|
||||||
|
}
|
||||||
|
// Vaciamos los tipos de conexiones
|
||||||
|
for ( int i=0; i < 8; i++ )
|
||||||
|
NConexionesTipo[i] = 0;
|
||||||
|
// Vaciamos la parrilla de datos
|
||||||
|
for ( int i=0; i < Equipos->Items->Count; i++ )
|
||||||
|
{
|
||||||
|
Parrilla[i].ConF = 0;
|
||||||
|
Parrilla[i].TotalF = 0;
|
||||||
|
Parrilla[i].ConR = 0;
|
||||||
|
Parrilla[i].TotalR = 0;
|
||||||
|
Parrilla[i].horasF = 0;
|
||||||
|
Parrilla[i].horasR = 0;
|
||||||
|
Parrilla[i].minF = 0;
|
||||||
|
Parrilla[i].minR = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
TbHistorico->First();
|
||||||
|
while ( ! TbHistorico->Eof )
|
||||||
|
{
|
||||||
|
// Si se trata de una conexion
|
||||||
|
if ( TbHistorico->FieldByName("idtc")->AsInteger < 50 )
|
||||||
|
{
|
||||||
|
NConF ++;
|
||||||
|
TotalF += TbHistorico->FieldByName("Precio")->AsCurrency;
|
||||||
|
TbHistorico->FieldByName("FComienzo")->AsDateTime. DecodeTime( &hh, &mm, &ss, &mss );
|
||||||
|
ConexionesHoraF[hh*2+ ((mm<30)?0:1)] ++;
|
||||||
|
|
||||||
|
// Si el elemento que estamos estudiando:
|
||||||
|
// -- Termina su tiempo "justo" <20> ANTES que cuando deb<65>a hacerlo su ultima conexion
|
||||||
|
if ( TbHistorico->FieldByName( "NumElement" )->AsInteger == EltoAnterior &&
|
||||||
|
(TbHistorico->FieldByName("FComienzo")->AsDateTime +
|
||||||
|
TbHistorico->FieldByName("Tiempo")->AsDateTime ) <= HoraFinAnterior
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Estamos ante una conexi<78>n REAL
|
||||||
|
InsertaEnParrilla( TbHistorico->FieldByName("NumElement")->AsInteger,
|
||||||
|
TbHistorico->FieldByName("Precio" ) ->AsCurrency,
|
||||||
|
TbHistorico->FieldByName("Tiempo" ) ->AsDateTime,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
NConR++;
|
||||||
|
TotalR += TbHistorico->FieldByName("Precio")->AsCurrency;
|
||||||
|
ConexionesHoraR[hh*2+ ((mm<30)?0:1)] ++;
|
||||||
|
|
||||||
|
InsertaEnParrilla( TbHistorico->FieldByName("NumElement")->AsInteger,
|
||||||
|
TbHistorico->FieldByName("Precio" ) ->AsCurrency,
|
||||||
|
TbHistorico->FieldByName("Tiempo" ) ->AsDateTime,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
switch ( TbHistorico->FieldByName("idtc")->AsInteger )
|
||||||
|
{
|
||||||
|
case 0: NConexionesTipo[0]++; break; // Internet
|
||||||
|
case 1: NConexionesTipo[1]++; break; // Juegos
|
||||||
|
case 2: NConexionesTipo[2]++; break; // Otros
|
||||||
|
case 3: NConexionesTipo[3]++; break; // Clases
|
||||||
|
default: NConexionesTipo[7]++; break; // -- DECONOCIDO --
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EltoAnterior = TbHistorico->FieldByName("NumElement")->AsInteger;
|
||||||
|
HoraFinAnterior = TbHistorico->FieldByName("FComienzo")->AsDateTime +
|
||||||
|
TbHistorico->FieldByName("Tiempo")->AsDateTime +
|
||||||
|
Ruptura;
|
||||||
|
} else {
|
||||||
|
switch ( TbHistorico->FieldByName("idtc")->AsInteger )
|
||||||
|
{
|
||||||
|
case 997: NConexionesTipo[4]++; break; // Envio de Listas
|
||||||
|
case 998: NConexionesTipo[5]++; break; // Tiempo Anulado
|
||||||
|
case 999: NConexionesTipo[6]++; break; // Cierre de Windows
|
||||||
|
default: NConexionesTipo[7]++; break; // -- DECONOCIDO --
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cuando se usa bonos
|
||||||
|
if ( TbHistorico->FieldByName("idc")->AsInteger > 0 &&
|
||||||
|
TbHistorico->FieldByName("precio")->AsCurrency == 0
|
||||||
|
)
|
||||||
|
{
|
||||||
|
NumBonos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ProgressBar1->Position++;
|
||||||
|
try { TbHistorico->Next(); } catch( ... ) { break; }
|
||||||
|
}
|
||||||
|
|
||||||
|
TbHistorico->EnableControls(); // Habilitamos de nuevo los controles
|
||||||
|
|
||||||
|
|
||||||
|
ConexionesHora -> Series[0] -> Clear();
|
||||||
|
ConexionesHora -> Series[1] -> Clear();
|
||||||
|
for ( int i = 0; i < 24; i++ )
|
||||||
|
{
|
||||||
|
ConexionesHora -> Series[0] -> AddXY(i*2, ConexionesHoraF[i*2], i, clTeeColor);
|
||||||
|
ConexionesHora -> Series[0] -> AddXY(i*2+1, ConexionesHoraF[i*2+1], "<EFBFBD>", clTeeColor);
|
||||||
|
|
||||||
|
ConexionesHora -> Series[1] -> AddXY(i*2, ConexionesHoraR[i*2], i, clTeeColor);
|
||||||
|
ConexionesHora -> Series[1] -> AddXY(i*2+1, ConexionesHoraR[i*2+1], "<EFBFBD>", clTeeColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// StatusBar1->Panels->Items[1]->Text = TotalF;
|
||||||
|
ConexionesEquipos -> Series[0] -> Clear();
|
||||||
|
ConexionesEquipos -> Series[1] -> Clear();
|
||||||
|
for ( int i=0; i < Equipos->Items->Count; i++ )
|
||||||
|
{
|
||||||
|
StringGrid1->Cells[2][1+i] = Parrilla[i].ConF ;
|
||||||
|
StringGrid1->Cells[4][1+i] = Parrilla[i].TotalF ;
|
||||||
|
StringGrid1->Cells[3][1+i] = Parrilla[i].ConR ;
|
||||||
|
StringGrid1->Cells[5][1+i] = Parrilla[i].TotalR ;
|
||||||
|
StringGrid1->Cells[6][1+i] = AnsiString( Parrilla[i].horasF )+ " : " + AnsiString( Parrilla[i].minF );
|
||||||
|
StringGrid1->Cells[7][1+i] = AnsiString( Parrilla[i].horasR )+ " : " + AnsiString( Parrilla[i].minR );
|
||||||
|
ConexionesEquipos -> Series[0] -> Add( Parrilla[i].TotalF, Equipos->Items->Strings[i], clGreen );
|
||||||
|
ConexionesEquipos -> Series[1] -> Add( Parrilla[i].TotalR, "", clRed );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Etiquetas globales
|
||||||
|
Label4->Caption = NConR;
|
||||||
|
Label6->Caption = NConF;
|
||||||
|
Label8->Caption = TotalR;
|
||||||
|
Label9->Caption = TotalF;
|
||||||
|
NBonos->Caption = NumBonos;
|
||||||
|
|
||||||
|
|
||||||
|
// Rellenamos la gr<67>fica TIPO de Conexion
|
||||||
|
TipoConexion->Series[0]->Clear();
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[0], "Internet", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[1], "Juegos", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[2], "Otros", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[3], "Clases", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[4], "Env.Listas", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[5], "Anulaciones", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[6], "Cierres", clTeeColor );
|
||||||
|
TipoConexion->Series[0]->Add( NConexionesTipo[7], "## NID ##", clTeeColor );
|
||||||
|
|
||||||
|
TbBonos->DisableControls(); // Deshabilitamos los controles asociados
|
||||||
|
NBonosVendidos = 0;
|
||||||
|
TotalBonos = 0;
|
||||||
|
TbBonos->First();
|
||||||
|
while ( ! TbBonos->Eof )
|
||||||
|
{
|
||||||
|
NBonosVendidos++;
|
||||||
|
TotalBonos += TbBonos->FieldByName("coste")->AsCurrency;
|
||||||
|
TbBonos->Next();
|
||||||
|
}
|
||||||
|
TbBonos->EnableControls(); // Deshabilitamos los controles asociados
|
||||||
|
BonosVendidos->Caption = AnsiString( NBonosVendidos ) + " ( " + TotalBonos + " )";
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::InsertaEnParrilla( int Elto, Currency CantidadF, TDateTime Tiempo, bool Repetido )
|
||||||
|
{
|
||||||
|
unsigned short Hour, Min, Sec, MSec;
|
||||||
|
Tiempo.DecodeTime( &Hour, &Min, &Sec, &MSec );
|
||||||
|
|
||||||
|
// Localizamos la casilla del elemento
|
||||||
|
for ( int i=0; i < Equipos->Items->Count; i++ )
|
||||||
|
if ( Parrilla[i].Elto == Elto )
|
||||||
|
{
|
||||||
|
Parrilla[i].ConF ++;
|
||||||
|
Parrilla[i].TotalF = Parrilla[i].TotalF + CantidadF;
|
||||||
|
|
||||||
|
Parrilla[i].horasF += Hour + ( ( Parrilla[i].minF + Min ) / 60 );
|
||||||
|
Parrilla[i].minF = ( Parrilla[i].minF + Min ) % 60;
|
||||||
|
|
||||||
|
if ( Repetido )
|
||||||
|
{
|
||||||
|
Parrilla[i].ConR ++;
|
||||||
|
Parrilla[i].TotalR = Parrilla[i].TotalR + CantidadF;
|
||||||
|
|
||||||
|
Parrilla[i].horasR += Hour + ( ( Parrilla[i].minR + Min ) / 60 );
|
||||||
|
Parrilla[i].minR = ( Parrilla[i].minR + Min ) % 60;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::MinFechaChange(TObject *Sender)
|
||||||
|
{
|
||||||
|
RefiltraDatos();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::DBGrid1DrawColumnCell(TObject *Sender,
|
||||||
|
const TRect &Rect, int DataCol, TColumn *Column,
|
||||||
|
TGridDrawState State)
|
||||||
|
{
|
||||||
|
if ( TbHistorico->FieldByName("idtc")->AsInteger > 900 )
|
||||||
|
{
|
||||||
|
if ( TbHistorico->FieldByName("idtc")->AsInteger == 998 )
|
||||||
|
DBGrid1->Canvas -> Font -> Color = clGreen;
|
||||||
|
else
|
||||||
|
DBGrid1->Canvas -> Font -> Color = clRed;
|
||||||
|
DBGrid1->DefaultDrawColumnCell( Rect, DataCol, Column, State );
|
||||||
|
}
|
||||||
|
if ( TbHistorico->FieldByName("idc")->AsInteger > 0 &&
|
||||||
|
TbHistorico->FieldByName("precio")->AsCurrency == 0
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DBGrid1->Canvas -> Font -> Color = clPurple;
|
||||||
|
DBGrid1->DefaultDrawColumnCell( Rect, DataCol, Column, State );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TDViewerF::TbElementosAfterOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
ProgressBar1->Min = 0;
|
||||||
|
ProgressBar1->Max = TbElementos->RecordCount;
|
||||||
|
StringGrid1->RowCount = TbElementos->RecordCount + 1;
|
||||||
|
|
||||||
|
Parrilla = new DatosEltos[(TbElementos->RecordCount)];
|
||||||
|
TbElementos->First();
|
||||||
|
for (int i = ProgressBar1->Min; i < ProgressBar1->Max; i++)
|
||||||
|
{
|
||||||
|
ProgressBar1->Position = i;
|
||||||
|
Equipos->Items->Add(TbElementos->FieldByName("Name")->AsString);
|
||||||
|
|
||||||
|
Parrilla[i].Elto = TbElementos->FieldByName("NumElement")->AsInteger;
|
||||||
|
StringGrid1->Cells[0][i+1] = TbElementos->FieldByName("NumElement")->AsInteger;
|
||||||
|
StringGrid1->Cells[1][i+1] = TbElementos->FieldByName("Name")->AsString;
|
||||||
|
|
||||||
|
TbElementos->Next();
|
||||||
|
// do something with record...
|
||||||
|
}
|
||||||
|
|
||||||
|
StringGrid1->Cells[2][0] = "ConexF";
|
||||||
|
StringGrid1->Cells[3][0] = "ConexR";
|
||||||
|
StringGrid1->Cells[4][0] = "TotalF";
|
||||||
|
StringGrid1->Cells[5][0] = "TotalR";
|
||||||
|
StringGrid1->Cells[6][0] = "TiempoF";
|
||||||
|
StringGrid1->Cells[7][0] = "TiempoR";
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::FormDestroy(TObject *Sender)
|
||||||
|
{
|
||||||
|
delete[] Parrilla;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::idtConexionChange(TObject *Sender)
|
||||||
|
{
|
||||||
|
TDateTime FechaMin, FechaMax;
|
||||||
|
TbHistorico->FilterOptions = TbHistorico->FilterOptions << foCaseInsensitive;
|
||||||
|
|
||||||
|
MaxFecha->Time = 36544.9999891088;//EncodeTime( 23, 59, 59, 59 );
|
||||||
|
FechaMax = MaxFecha->Date;
|
||||||
|
MinFecha->Time = 0;
|
||||||
|
FechaMin = MinFecha->Date;
|
||||||
|
|
||||||
|
if ( idtConexion->ItemIndex > 0 )
|
||||||
|
{
|
||||||
|
AnsiString CadenaFiltro = "([FComienzo] >= '" + FechaMin + "' AND [FComienzo] <= '" + FechaMax +"' AND [idtc] = '" + AnsiString( Obten_idtc() ) + "' )";
|
||||||
|
TbHistorico->Filter = CadenaFiltro;
|
||||||
|
TbHistorico->Filtered = true;
|
||||||
|
} else {
|
||||||
|
TbHistorico->Filter = "[FComienzo] >= '" + FechaMin + "' AND [FComienzo] <= '" + FechaMax +"'";
|
||||||
|
TbHistorico->Filtered = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TQuickReport1 *QR;
|
||||||
|
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Preparando documento para imprimir...";
|
||||||
|
QR = new TQuickReport1(this);
|
||||||
|
QR->Preview();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "";
|
||||||
|
delete QR;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::Button2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TQRHistoric *QR;
|
||||||
|
|
||||||
|
QR = new TQRHistoric(this);
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Preparando documento para imprimir...";
|
||||||
|
QR->QuickRep1->Print();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "";
|
||||||
|
delete QR;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::Edit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( !Edit1->Text.IsEmpty() )
|
||||||
|
TbPersonas->Locate( SelIndex->Items->Strings[SelIndex->ItemIndex], Edit1->Text, TLocateOptions() << loCaseInsensitive << loPartialKey );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit2->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit2KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit3->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit3KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit4->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit4KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit5->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit5KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit6->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::DBEdit6KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
if(TbPersonas->State == dsInsert || TbPersonas->State == dsEdit)
|
||||||
|
TbPersonas->Post();
|
||||||
|
DBEdit1->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::TbPersonasBeforeDelete(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
switch( MessageDlg( "Atenci<EFBFBD>n, est<73> apunto de eliminar\na un cliente...\n<EFBFBD><EFBFBD><EFBFBD> Su historico TAMBIEN ser<65> ELIMINADO\n<EFBFBD>Realmente desea continuar?", mtWarning, TMsgDlgButtons() << mbNo << mbYes, 0 ) )
|
||||||
|
{
|
||||||
|
case mrNo:
|
||||||
|
Abort();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// Borramos todos los registros asociados...
|
||||||
|
while( TbBonosCliente -> RecordCount != 0 )
|
||||||
|
TbBonosCliente -> Delete();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::TbPersonasNewRecord(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
TbPersonas->FieldByName("FAlta")->AsDateTime = TDateTime::CurrentDateTime();
|
||||||
|
TbPersonas->FieldByName("FModif")->AsDateTime = TDateTime::CurrentDateTime();
|
||||||
|
TbPersonas->FieldByName("TiempoH")->AsInteger = 0;
|
||||||
|
TbPersonas->FieldByName("TiempoM")->AsInteger = 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::Button4Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TQRBonos *QR;
|
||||||
|
|
||||||
|
QR = new TQRBonos(this);
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Preparando documento para imprimir...";
|
||||||
|
QR->QuickRep1->Print();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "";
|
||||||
|
delete QR;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::Button3Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TQRClt *QR;
|
||||||
|
|
||||||
|
QR = new TQRClt(this);
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "Preparando documento para imprimir...";
|
||||||
|
QR->QuickRep1->Print();
|
||||||
|
StatusBar1->Panels->Items[0]->Text = "";
|
||||||
|
delete QR;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TDViewerF::EquiposClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
|
||||||
|
if ( TbElementos->Locate( "Name", Equipos->Items->Strings[Equipos->ItemIndex], TLocateOptions() << loCaseInsensitive << loPartialKey ) )
|
||||||
|
// Localizamos el primer registro del terminal seleccionado...
|
||||||
|
TbHistorico->Locate( "NumElement", TbElementos->FieldByName("NumElement")->AsInteger, TLocateOptions() << loCaseInsensitive << loPartialKey );
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
DViewer.dfm
Normal file
192
DViewer.h
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef DViewerH
|
||||||
|
#define DViewerH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <Db.hpp>
|
||||||
|
#include <DBTables.hpp>
|
||||||
|
#include <DBGrids.hpp>
|
||||||
|
#include <Grids.hpp>
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <ComCtrls.hpp>
|
||||||
|
#include <CheckLst.hpp>
|
||||||
|
#include <Chart.hpp>
|
||||||
|
#include <Series.hpp>
|
||||||
|
#include <TeEngine.hpp>
|
||||||
|
#include <TeeProcs.hpp>
|
||||||
|
#include <ImgList.hpp>
|
||||||
|
#include <DBCtrls.hpp>
|
||||||
|
#include <Mask.hpp>
|
||||||
|
#include "elastfrm.hpp"
|
||||||
|
#include "ElastFrm.hpp"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TDViewerF : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TTable *TbHistorico;
|
||||||
|
TDataSource *DsHistorico;
|
||||||
|
TIntegerField *TbHistoricoNumElement;
|
||||||
|
TDateTimeField *TbHistoricoFComienzo;
|
||||||
|
TTimeField *TbHistoricoTiempo;
|
||||||
|
TIntegerField *TbHistoricoidc;
|
||||||
|
TIntegerField *TbHistoricoidtc;
|
||||||
|
TCurrencyField *TbHistoricoprecio;
|
||||||
|
TStringField *TbHistoricoTipoConexion;
|
||||||
|
TTable *TbElementos;
|
||||||
|
TStringField *TbHistoricoNombreTerminal;
|
||||||
|
TDataSource *DsElementos;
|
||||||
|
TStatusBar *StatusBar1;
|
||||||
|
TPanel *Panel2;
|
||||||
|
TPanel *Panel3;
|
||||||
|
TDateTimePicker *MinFecha;
|
||||||
|
TComboBox *idtConexion;
|
||||||
|
TCheckListBox *Equipos;
|
||||||
|
TDateTimePicker *MaxFecha;
|
||||||
|
TLabel *Label1;
|
||||||
|
TLabel *Label2;
|
||||||
|
TSplitter *Splitter1;
|
||||||
|
TProgressBar *ProgressBar1;
|
||||||
|
TPageControl *PageControl1;
|
||||||
|
TTabSheet *TabSheet1;
|
||||||
|
TLabel *Label3;
|
||||||
|
TLabel *Label4;
|
||||||
|
TLabel *Label5;
|
||||||
|
TLabel *Label6;
|
||||||
|
TTabSheet *TabSheet2;
|
||||||
|
TChart *ConexionesEquipos;
|
||||||
|
TTabSheet *TabSheet3;
|
||||||
|
TChart *TipoConexion;
|
||||||
|
TPieSeries *Series3;
|
||||||
|
TTabSheet *TabSheet4;
|
||||||
|
TChart *ConexionesHora;
|
||||||
|
TLabel *Label7;
|
||||||
|
TLabel *Label8;
|
||||||
|
TLabel *Label9;
|
||||||
|
TLabel *Label10;
|
||||||
|
TComboBox *MargenRuptura;
|
||||||
|
TLabel *Label11;
|
||||||
|
TPageControl *PageControl2;
|
||||||
|
TTabSheet *TabSheet5;
|
||||||
|
TDBGrid *DBGrid1;
|
||||||
|
TTabSheet *TabSheet6;
|
||||||
|
TBevel *Bevel1;
|
||||||
|
TStringGrid *StringGrid1;
|
||||||
|
TLabel *Label12;
|
||||||
|
TLabel *Label13;
|
||||||
|
TLabel *NBonos;
|
||||||
|
TBarSeries *Series1;
|
||||||
|
TBarSeries *Series2;
|
||||||
|
TAreaSeries *Series4;
|
||||||
|
TAreaSeries *Series5;
|
||||||
|
TButton *Button1;
|
||||||
|
TTabSheet *TabSheet7;
|
||||||
|
TDBGrid *DBGrid2;
|
||||||
|
TTable *TbPersonas;
|
||||||
|
TTable *TbBonos;
|
||||||
|
TDataSource *DsBonos;
|
||||||
|
TIntegerField *TbBonosIDcliente;
|
||||||
|
TDateTimeField *TbBonosFechaCompra;
|
||||||
|
TIntegerField *TbBonosBhoras;
|
||||||
|
TIntegerField *TbBonosBmin;
|
||||||
|
TCurrencyField *TbBonoscoste;
|
||||||
|
TStringField *TbBonosNombreClt;
|
||||||
|
TStringField *TbBonosApellidos;
|
||||||
|
TLabel *Label14;
|
||||||
|
TLabel *BonosVendidos;
|
||||||
|
TButton *Button2;
|
||||||
|
TTabSheet *TabSheet8;
|
||||||
|
TImageList *Historicos;
|
||||||
|
TPanel *Panel1;
|
||||||
|
TDBGrid *DBGrid3;
|
||||||
|
TDataSource *DsPersonas;
|
||||||
|
TTable *TbBonosCliente;
|
||||||
|
TDataSource *DsBonosClientes;
|
||||||
|
TComboBox *SelIndex;
|
||||||
|
TEdit *Edit1;
|
||||||
|
TDBNavigator *DBNavigator1;
|
||||||
|
TBevel *Bevel2;
|
||||||
|
TLabel *Label15;
|
||||||
|
TLabel *Label16;
|
||||||
|
TLabel *Label17;
|
||||||
|
TDBEdit *DBEdit1;
|
||||||
|
TLabel *Label18;
|
||||||
|
TDBText *DBText1;
|
||||||
|
TDBEdit *DBEdit2;
|
||||||
|
TDBEdit *DBEdit3;
|
||||||
|
TDBEdit *DBEdit4;
|
||||||
|
TLabel *Label19;
|
||||||
|
TDBEdit *DBEdit5;
|
||||||
|
TDBEdit *DBEdit6;
|
||||||
|
TShape *Shape1;
|
||||||
|
TShape *Shape2;
|
||||||
|
TLabel *Label20;
|
||||||
|
TDBText *DBText2;
|
||||||
|
TButton *Button3;
|
||||||
|
TButton *Button4;
|
||||||
|
TElasticForm *ElasticForm1;
|
||||||
|
void __fastcall TbHistoricoBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall TbHistoricoCalcFields(TDataSet *DataSet);
|
||||||
|
void __fastcall MinFechaChange(TObject *Sender);
|
||||||
|
|
||||||
|
void __fastcall DBGrid1DrawColumnCell(TObject *Sender,
|
||||||
|
const TRect &Rect, int DataCol, TColumn *Column,
|
||||||
|
TGridDrawState State);
|
||||||
|
void __fastcall TbElementosAfterOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall FormDestroy(TObject *Sender);
|
||||||
|
void __fastcall idtConexionChange(TObject *Sender);
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
void __fastcall Button2Click(TObject *Sender);
|
||||||
|
void __fastcall Edit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit2KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit3KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit4KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit5KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit6KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall TbPersonasBeforeDelete(TDataSet *DataSet);
|
||||||
|
void __fastcall TbPersonasNewRecord(TDataSet *DataSet);
|
||||||
|
void __fastcall Button4Click(TObject *Sender);
|
||||||
|
void __fastcall Button3Click(TObject *Sender);
|
||||||
|
void __fastcall EquiposClick(TObject *Sender);
|
||||||
|
|
||||||
|
private: // User declarations
|
||||||
|
int __fastcall Obten_idtc(void);
|
||||||
|
bool TerminalFiltered;
|
||||||
|
void __fastcall RefiltraDatos(void);
|
||||||
|
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TDViewerF(TComponent* Owner);
|
||||||
|
void __fastcall CalculaGraficas(void);
|
||||||
|
void __fastcall InsertaEnParrilla( int Elto, Currency CantidadF, TDateTime Tiempo, bool Repetido );
|
||||||
|
|
||||||
|
struct DatosEltos
|
||||||
|
{
|
||||||
|
int Elto;
|
||||||
|
int ConF, ConR;
|
||||||
|
Currency TotalF, TotalR;
|
||||||
|
int horasF, minF;
|
||||||
|
int horasR, minR;
|
||||||
|
} *Parrilla;
|
||||||
|
|
||||||
|
int NConexionesTipo[8];
|
||||||
|
int ConexionesHoraF[48], ConexionesHoraR[48];
|
||||||
|
|
||||||
|
int NBonosVendidos;
|
||||||
|
Currency TotalBonos;
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TDViewerF *DViewerF;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
51
DViewer_Print.cpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#include <vcl\vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "DViewer_Print.h"
|
||||||
|
#include "DViewer.h"
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TQuickReport1 *QuickReport1;
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
__fastcall TQuickReport1::TQuickReport1(TComponent* Owner)
|
||||||
|
: TQuickRep(Owner)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TQuickReport1::QuickRepStartPage(TCustomQuickRep *Sender)
|
||||||
|
{
|
||||||
|
QRConexionesF->Caption = DViewerF->Label4->Caption + " ( " + DViewerF->Label8->Caption + " )";
|
||||||
|
QRConexionesR->Caption = DViewerF->Label6->Caption + " ( " + DViewerF->Label9->Caption + " )";
|
||||||
|
QRNBonos->Caption = DViewerF->NBonos->Caption;
|
||||||
|
QRRuptura->Caption = DViewerF->MargenRuptura->SelText;
|
||||||
|
QRBonosVendidos->Caption = DViewerF->BonosVendidos->Caption;
|
||||||
|
|
||||||
|
QRMemo1->Lines->Clear();
|
||||||
|
QRMemo2->Lines->Clear();
|
||||||
|
QRMemo3->Lines->Clear();
|
||||||
|
QRMemo4->Lines->Clear();
|
||||||
|
QRMemo5->Lines->Clear();
|
||||||
|
QRMemo6->Lines->Clear();
|
||||||
|
QRMemo7->Lines->Clear();
|
||||||
|
QRMemo8->Lines->Clear();
|
||||||
|
// Rellenamos la tabla de datos
|
||||||
|
for (int i = 0; i < DViewerF->Equipos->Items->Count; i++)
|
||||||
|
{
|
||||||
|
QRMemo2->Lines->Add( DViewerF->StringGrid1->Cells[0][i+1] );
|
||||||
|
QRMemo1->Lines->Add( DViewerF->StringGrid1->Cells[1][i+1] );
|
||||||
|
|
||||||
|
QRMemo3->Lines->Add( DViewerF->StringGrid1->Cells[2][i+1] );
|
||||||
|
QRMemo4->Lines->Add( DViewerF->StringGrid1->Cells[3][i+1] );
|
||||||
|
QRMemo5->Lines->Add( DViewerF->StringGrid1->Cells[4][i+1] );
|
||||||
|
QRMemo6->Lines->Add( DViewerF->StringGrid1->Cells[5][i+1] );
|
||||||
|
QRMemo7->Lines->Add( DViewerF->StringGrid1->Cells[6][i+1] );
|
||||||
|
QRMemo8->Lines->Add( DViewerF->StringGrid1->Cells[7][i+1] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
DViewer_Print.dfm
Normal file
64
DViewer_Print.h
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#ifndef DViewer_PrintH
|
||||||
|
#define DViewer_PrintH
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#include <vcl\Classes.hpp>
|
||||||
|
#include <vcl\Controls.hpp>
|
||||||
|
#include <vcl\StdCtrls.hpp>
|
||||||
|
#include <vcl\Forms.hpp>
|
||||||
|
#include <vcl\QuickRpt.hpp>
|
||||||
|
#include <vcl\QRCtrls.hpp>
|
||||||
|
#include <Chart.hpp>
|
||||||
|
#include <DBChart.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <QrTee.hpp>
|
||||||
|
#include <TeEngine.hpp>
|
||||||
|
#include <TeeProcs.hpp>
|
||||||
|
#include <Qrctrls.hpp>
|
||||||
|
#include <Series.hpp>
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
class TQuickReport1 : public TQuickRep
|
||||||
|
{
|
||||||
|
__published:
|
||||||
|
TQRBand *QRBand1;
|
||||||
|
TQRBand *QRBand2;
|
||||||
|
TQRChart *ConexionesHora;
|
||||||
|
TQRDBChart *QRDBChart1;
|
||||||
|
TAreaSeries *Series1;
|
||||||
|
TAreaSeries *Series2;
|
||||||
|
TQRChart *TipoConexion;
|
||||||
|
TQRDBChart *QRDBChart2;
|
||||||
|
TPieSeries *Series3;
|
||||||
|
TQRChart *ConexionesEquipos;
|
||||||
|
TQRDBChart *QRDBChart3;
|
||||||
|
TBarSeries *Series4;
|
||||||
|
TBarSeries *Series5;
|
||||||
|
TQRLabel *QRLabel7;
|
||||||
|
TQRLabel *QRNBonos;
|
||||||
|
TQRLabel *QRConexionesR;
|
||||||
|
TQRLabel *QRConexionesF;
|
||||||
|
TQRLabel *QRLabel3;
|
||||||
|
TQRLabel *QRLabel1;
|
||||||
|
TQRLabel *QRLabel2;
|
||||||
|
TQRMemo *QRMemo1;
|
||||||
|
TQRLabel *QRLabel8;
|
||||||
|
TQRLabel *QRRuptura;
|
||||||
|
TQRMemo *QRMemo2;
|
||||||
|
TQRLabel *QRLabel4;
|
||||||
|
TQRMemo *QRMemo3;
|
||||||
|
TQRMemo *QRMemo4;
|
||||||
|
TQRMemo *QRMemo5;
|
||||||
|
TQRMemo *QRMemo6;
|
||||||
|
TQRMemo *QRMemo7;
|
||||||
|
TQRMemo *QRMemo8;
|
||||||
|
TQRLabel *QRLabel5;
|
||||||
|
TQRLabel *QRBonosVendidos;
|
||||||
|
void __fastcall QuickRepStartPage(TCustomQuickRep *Sender);
|
||||||
|
private:
|
||||||
|
public:
|
||||||
|
__fastcall TQuickReport1::TQuickReport1(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
extern TQuickReport1 *QuickReport1;
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
#endif
|
16
DViewer_PrintBonos.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "DViewer_PrintBonos.h"
|
||||||
|
#include "DViewer.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TQRBonos *QRBonos;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TQRBonos::TQRBonos(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
DViewer_PrintBonos.dfm
Normal file
46
DViewer_PrintBonos.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef DViewer_PrintBonosH
|
||||||
|
#define DViewer_PrintBonosH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <QuickRpt.hpp>
|
||||||
|
#include <QRCtrls.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Qrctrls.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TQRBonos : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TQuickRep *QuickRep1;
|
||||||
|
TQRBand *PageFooterBand1;
|
||||||
|
TQRExpr *QRExpr1;
|
||||||
|
TQRBand *ColumnHeaderBand1;
|
||||||
|
TQRBand *DetailBand1;
|
||||||
|
TQRLabel *QRLabel1;
|
||||||
|
TQRExpr *QRExpr2;
|
||||||
|
TQRLabel *QRLabel2;
|
||||||
|
TQRExpr *QRExpr3;
|
||||||
|
TQRLabel *QRLabel3;
|
||||||
|
TQRExpr *QRExpr4;
|
||||||
|
TQRLabel *QRLabel5;
|
||||||
|
TQRExpr *QRExpr6;
|
||||||
|
TQRLabel *QRLabel6;
|
||||||
|
TQRExpr *QRExpr7;
|
||||||
|
TQRBand *QRBand1;
|
||||||
|
TQRLabel *QRLabel4;
|
||||||
|
TQRBand *QRBand2;
|
||||||
|
TQRExpr *QRExpr5;
|
||||||
|
TQRShape *QRShape1;
|
||||||
|
TQRExpr *QRExpr8;
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TQRBonos(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TQRBonos *QRBonos;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
17
DViewer_PrintClientes.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "DViewer_PrintClientes.h"
|
||||||
|
#include "DViewer.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TQRClt *QRClt;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TQRClt::TQRClt(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
DViewer_PrintClientes.dfm
Normal file
46
DViewer_PrintClientes.h
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef DViewer_PrintClientesH
|
||||||
|
#define DViewer_PrintClientesH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <QuickRpt.hpp>
|
||||||
|
#include <QRCtrls.hpp>
|
||||||
|
#include <Db.hpp>
|
||||||
|
#include <DBTables.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Qrctrls.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TQRClt : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TQuickRep *QuickRep1;
|
||||||
|
TQRBand *PageFooterBand1;
|
||||||
|
TQRExpr *QRExpr1;
|
||||||
|
TQRBand *ColumnHeaderBand1;
|
||||||
|
TQRBand *DetailBand1;
|
||||||
|
TQRLabel *QRLabel1;
|
||||||
|
TQRExpr *QRExpr2;
|
||||||
|
TQRLabel *QRLabel2;
|
||||||
|
TQRExpr *QRExpr3;
|
||||||
|
TQRLabel *QRLabel3;
|
||||||
|
TQRExpr *QRExpr4;
|
||||||
|
TQRLabel *QRLabel4;
|
||||||
|
TQRExpr *QRExpr5;
|
||||||
|
TQRLabel *QRLabel6;
|
||||||
|
TQRExpr *QRExpr7;
|
||||||
|
TQRLabel *QRLabel7;
|
||||||
|
TQRExpr *QRExpr8;
|
||||||
|
TQRBand *QRBand1;
|
||||||
|
TQRLabel *QRLabel5;
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TQRClt(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TQRClt *QRClt;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
16
DViewer_PrintHistoric.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "DViewer_PrintHistoric.h"
|
||||||
|
#include "DViewer.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TQRHistoric *QRHistoric;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TQRHistoric::TQRHistoric(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
DViewer_PrintHistoric.dfm
Normal file
42
DViewer_PrintHistoric.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef DViewer_PrintHistoricH
|
||||||
|
#define DViewer_PrintHistoricH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <QuickRpt.hpp>
|
||||||
|
#include <QRCtrls.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Qrctrls.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TQRHistoric : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TQuickRep *QuickRep1;
|
||||||
|
TQRBand *PageFooterBand1;
|
||||||
|
TQRExpr *QRExpr1;
|
||||||
|
TQRBand *ColumnHeaderBand1;
|
||||||
|
TQRBand *DetailBand1;
|
||||||
|
TQRLabel *QRLabel1;
|
||||||
|
TQRExpr *QRExpr2;
|
||||||
|
TQRLabel *QRLabel2;
|
||||||
|
TQRExpr *QRExpr3;
|
||||||
|
TQRLabel *QRLabel3;
|
||||||
|
TQRExpr *QRExpr4;
|
||||||
|
TQRLabel *QRLabel4;
|
||||||
|
TQRExpr *QRExpr5;
|
||||||
|
TQRLabel *QRLabel5;
|
||||||
|
TQRExpr *QRExpr6;
|
||||||
|
TQRLabel *QRLabel6;
|
||||||
|
TQRExpr *QRExpr7;
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TQRHistoric(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TQRHistoric *QRHistoric;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
124
DataViewer.bpr
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.05.03"/>
|
||||||
|
<PROJECT value="DataViewer.exe"/>
|
||||||
|
<OBJFILES value="DataViewer.obj DViewer.obj DViewer_Print.obj DViewer_PrintHistoric.obj
|
||||||
|
DViewer_PrintBonos.obj DViewer_PrintClientes.obj"/>
|
||||||
|
<RESFILES value="DataViewer.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value=""/>
|
||||||
|
<RESDEPEN value="$(RESFILES) DViewer.dfm DViewer_Print.dfm DViewer_PrintHistoric.dfm
|
||||||
|
DViewer_PrintBonos.dfm DViewer_PrintClientes.dfm"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value="TeeUI50.lib TEEQR50.lib TEEDB50.lib QRPT50.lib TEE50.lib VCLX50.lib
|
||||||
|
inet50.lib vclbde50.lib vcldb50.lib vcl50.lib"/>
|
||||||
|
<SPARELIBS value="vcl50.lib vcldb50.lib vclbde50.lib inet50.lib VCLX50.lib TEE50.lib
|
||||||
|
QRPT50.lib TEEDB50.lib TEEQR50.lib TeeUI50.lib"/>
|
||||||
|
<PACKAGES value="vclx50.bpi vcl50.bpi vcldb50.bpi vclbde50.bpi vcldbx50.bpi qrpt50.bpi
|
||||||
|
teeui50.bpi vclsmp50.bpi teedb50.bpi tee50.bpi nmfast50.bpi inetdb50.bpi
|
||||||
|
inet50.bpi"/>
|
||||||
|
<PATHCPP value=".;"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="ilink32"/>
|
||||||
|
<USERDEFINES value=""/>
|
||||||
|
<SYSDEFINES value="NO_STRICT"/>
|
||||||
|
<MAINSOURCE value="DataViewer.cpp"/>
|
||||||
|
<INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl;"..\C++ Builder\VCLs\include""/>
|
||||||
|
<LIBPATH value=""..\C++ Builder\VCLs\include";$(BCB)\lib\obj;$(BCB)\lib;"..\C++ Builder\VCLs\lib""/>
|
||||||
|
<WARNINGS value="-w-par -w-8027 -w-8026"/>
|
||||||
|
<WARNOPTSTR value=""/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-I$(BCB)\include -I$(BCB)\include\vcl -I"..\C++ Builder\VCLs\include"
|
||||||
|
-src_suffix cpp -boa"/>
|
||||||
|
<CFLAG1 value="-O2 -H=c:\PROGRAM\CBUILDER\CBUILD~1\lib\vcl35.csm -Hc -Vx -Ve -Tkh30000
|
||||||
|
-X- -a8 -b- -k- -y -v -vi -c -tW -tWM"/>
|
||||||
|
<CFLAG2 value=""/>
|
||||||
|
<CFLAG3 value=""/>
|
||||||
|
<PFLAGS value="-$YD -$L- -$D- -v -M -JPHNE"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zn"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/>
|
||||||
|
<IFLAGS value=""/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
|
||||||
|
</LINKER>
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=1
|
||||||
|
AutoIncBuild=0
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=0
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=3082
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=JD Soft.
|
||||||
|
FileDescription=Visualizador de Datos
|
||||||
|
FileVersion=1.0.0.0
|
||||||
|
InternalName=DViewer
|
||||||
|
LegalCopyright=JD Soft.
|
||||||
|
LegalTrademarks=JD Soft.
|
||||||
|
OriginalFilename=DataViewer
|
||||||
|
ProductName=CtrlMstr: Visualizador de Datos
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=Permite la visualizacion de los datos, generados por el Control Maestro.
|
||||||
|
|
||||||
|
[HistoryLists\hlIncludePath]
|
||||||
|
Count=2
|
||||||
|
Item0=$(BCB)\include;$(BCB)\include\vcl;..\C++ Builder\VCLs\include
|
||||||
|
Item1=$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlLibraryPath]
|
||||||
|
Count=3
|
||||||
|
Item0=..\C++ Builder\VCLs\include;$(BCB)\lib\obj;$(BCB)\lib;..\C++ Builder\VCLs\lib
|
||||||
|
Item1=$(BCB)\lib\obj;$(BCB)\lib;..\C++ Builder\VCLs\lib
|
||||||
|
Item2=$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
|
||||||
|
[HistoryLists\hlDebugSourcePath]
|
||||||
|
Count=1
|
||||||
|
Item0=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=0
|
||||||
|
LinkDebugVcl=1
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
</PROJECT>
|
38
DataViewer.cpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#include <winuser.h>
|
||||||
|
|
||||||
|
#pragma hdrstop
|
||||||
|
USERES("DataViewer.res");
|
||||||
|
USEFORM("DViewer.cpp", DViewerF);
|
||||||
|
USEFORM("DViewer_Print.cpp", QuickReport1); /* TQuickRep: File Type */
|
||||||
|
USEFORM("DViewer_PrintHistoric.cpp", QRHistoric);
|
||||||
|
USEFORM("DViewer_PrintBonos.cpp", QRBonos);
|
||||||
|
USEFORM("DViewer_PrintClientes.cpp", QRClt);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
WINAPI WinMain(HINSTANCE, HINSTANCE hPrevInstance, LPSTR, int)
|
||||||
|
{
|
||||||
|
AnsiString FsMutex = DateToStr(TDateTime::CurrentDate()) + AnsiString("-mutex-dataviewer");
|
||||||
|
HANDLE FhMutex = OpenMutex(MUTEX_ALL_ACCESS,False, FsMutex.c_str() );
|
||||||
|
if ( FhMutex == 0 ) //it's a first instance
|
||||||
|
{
|
||||||
|
FhMutex = CreateMutex(NULL,false, FsMutex.c_str() );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Application->Initialize();
|
||||||
|
Application->Title = "Visualizador de Datos";
|
||||||
|
Application->CreateForm(__classid(TDViewerF), &DViewerF);
|
||||||
|
Application->Run();
|
||||||
|
}
|
||||||
|
catch (Exception &exception)
|
||||||
|
{
|
||||||
|
Application->ShowException(&exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if ( CloseHandle(FhMutex) ) FhMutex = 0;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
DataViewer.dfm
Normal file
BIN
DataViewer.exe
Normal file
BIN
DataViewer.exe-
Normal file
20
DataViewer.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef DataViewerH
|
||||||
|
#define DataViewerH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TForm1 : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TForm1(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TForm1 *Form1;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
BIN
DataViewer.res
Normal file
BIN
Documentacion/DataViewer.doc
Normal file
BIN
Documentacion/LockIt!.doc
Normal file
BIN
Documentacion/PCD.PUB
Normal file
212
FichasClientes.cpp
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "FichasClientes.h"
|
||||||
|
#include "CtrlPPal.h"
|
||||||
|
#include "ComprarBono.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma link "DigitNum"
|
||||||
|
#pragma link "FormularioREUSABLE"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TFClientes *FClientes;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TFClientes::TFClientes(TComponent* Owner)
|
||||||
|
: TFormREUSABLE(Owner)
|
||||||
|
{
|
||||||
|
SpeedButton1Click(0);
|
||||||
|
SelIndex->ItemIndex = 0;
|
||||||
|
TbBonos->Active = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrCancel;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TFClientes::DBGrid1DblClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
Label1->Visible = false;
|
||||||
|
SelIndex->Visible = false;
|
||||||
|
Edit1->Visible = false;
|
||||||
|
DBGrid1->Visible = false;
|
||||||
|
|
||||||
|
Label2->Visible = true;
|
||||||
|
Label3->Visible = true;
|
||||||
|
Label4->Visible = true;
|
||||||
|
Label5->Visible = true;
|
||||||
|
Label6->Visible = true;
|
||||||
|
DBText1->Visible = true;
|
||||||
|
DBEdit1->Visible = true;
|
||||||
|
DBEdit2->Visible = true;
|
||||||
|
DBEdit3->Visible = true;
|
||||||
|
DBEdit4->Visible = true;
|
||||||
|
Button2->Visible = true;
|
||||||
|
Button3->Visible = true;
|
||||||
|
Dig1->Visible = true;
|
||||||
|
Dig2->Visible = true;
|
||||||
|
Shape1->Visible = true;
|
||||||
|
Shape2->Visible = true;}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::SpeedButton1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
Label2->Visible = false;
|
||||||
|
Label3->Visible = false;
|
||||||
|
Label4->Visible = false;
|
||||||
|
Label5->Visible = false;
|
||||||
|
Label6->Visible = false;
|
||||||
|
DBText1->Visible = false;
|
||||||
|
DBEdit1->Visible = false;
|
||||||
|
DBEdit2->Visible = false;
|
||||||
|
DBEdit3->Visible = false;
|
||||||
|
DBEdit4->Visible = false;
|
||||||
|
Button2->Visible = false;
|
||||||
|
Button3->Visible = false;
|
||||||
|
Dig1->Visible = false;
|
||||||
|
Dig2->Visible = false;
|
||||||
|
Shape1->Visible = false;
|
||||||
|
Shape2->Visible = false;
|
||||||
|
|
||||||
|
Label1->Visible = true;
|
||||||
|
SelIndex->Visible = true;
|
||||||
|
Edit1->Visible = true;
|
||||||
|
DBGrid1->Visible = true;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TFClientes::SpeedButton2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
DBGrid1DblClick(0);
|
||||||
|
CtrlPPal->TbPersonas->Insert();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TFClientes::SelIndexChange(TObject *Sender)
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->IndexFieldNames = SelIndex->Items->Strings[SelIndex->ItemIndex];
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::Edit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( !Edit1->Text.IsEmpty() )
|
||||||
|
CtrlPPal->TbPersonas->Locate( SelIndex->Items->Strings[SelIndex->ItemIndex], Edit1->Text, TLocateOptions() << loCaseInsensitive << loPartialKey );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::Button3Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrOk;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::DsPersonasDataChange(TObject *Sender,
|
||||||
|
TField *Field)
|
||||||
|
{
|
||||||
|
Dig1->Value = CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger;
|
||||||
|
Dig2->Value = CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger;
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::Button2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
// Aun no desarrollado...
|
||||||
|
TCBono *CBono;
|
||||||
|
CBono = new TCBono(this);
|
||||||
|
if ( CBono->ShowModal() == mrOk )
|
||||||
|
{
|
||||||
|
int H, M;
|
||||||
|
H = CBono->Horas->Text.ToInt();
|
||||||
|
M = CBono->Min->Text.ToInt();
|
||||||
|
CtrlPPal->TbPersonas->Edit();
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger = CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger + H + ( CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger + M)/60;
|
||||||
|
CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger = ( CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger + M)%60;
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
TbBonos->InsertRecord(ARRAYOFCONST((CtrlPPal->TbPersonas->FieldByName("CodCliente1")->AsInteger,(Variant)TDateTime::CurrentDateTime(),(Variant)TDateTime::CurrentDate(), H, M, Currency(CBono->CosteBono->Text) )));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::TbBonosBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
if ( !FileExists( TbBonos->TableName ) )
|
||||||
|
{
|
||||||
|
TbBonos -> TableType = ttParadox;
|
||||||
|
|
||||||
|
TbBonos -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
/********************\
|
||||||
|
|* Datos B<>sicos *|
|
||||||
|
\********************/
|
||||||
|
TbBonos -> FieldDefs -> Add("IDcliente", ftInteger, 0, false );
|
||||||
|
TbBonos -> FieldDefs -> Add("FechaCompra", ftDateTime, 0, false );
|
||||||
|
TbBonos -> FieldDefs -> Add("fecha", ftDate, 0, false );
|
||||||
|
TbBonos -> FieldDefs -> Add("Bhoras", ftInteger, 0, false );
|
||||||
|
TbBonos -> FieldDefs -> Add("Bmin", ftInteger, 0, false );
|
||||||
|
TbBonos -> FieldDefs -> Add("coste", ftCurrency, 0, false );
|
||||||
|
TbBonos -> IndexDefs-> Clear();
|
||||||
|
|
||||||
|
TbBonos->IndexDefs->Add("Primary", "IDcliente;FechaCompra", TIndexOptions() << ixPrimary );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbBonos -> CreateTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::DBEdit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
DBEdit2->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::DBEdit2KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
DBEdit3->SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFClientes::DBEdit3KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
DBEdit4->SetFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TFClientes::DBEdit4KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift)
|
||||||
|
{
|
||||||
|
if ( Key == VK_RETURN )
|
||||||
|
{
|
||||||
|
CtrlPPal->TbPersonas->Post();
|
||||||
|
DBEdit1->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
450
FichasClientes.dfm
Normal file
@ -0,0 +1,450 @@
|
|||||||
|
inherited FClientes: TFClientes
|
||||||
|
Left = 378
|
||||||
|
Top = 210
|
||||||
|
ActiveControl = Edit1
|
||||||
|
Caption = 'copia'
|
||||||
|
OldCreateOrder = True
|
||||||
|
PixelsPerInch = 96
|
||||||
|
TextHeight = 13
|
||||||
|
inherited CoolForm1: TCoolForm
|
||||||
|
Mask2 = {
|
||||||
|
3002000020000000010000002100000010020000040000000200000064010000
|
||||||
|
030100001A000000020000004E01000003000000170000000300000051010000
|
||||||
|
0400000015000000040000005301000005000000130000000500000055010000
|
||||||
|
0600000012000000060000005601000007000000100000000700000058010000
|
||||||
|
080000000F0000000800000059010000090000000E000000090000005A010000
|
||||||
|
0A0000000C0000000A0000005C0100000C0000000B0000000C0000005D010000
|
||||||
|
0D0000000A0000000D0000005E0100000E000000090000000E0000005F010000
|
||||||
|
1000000008000000100000006001000011000000070000001100000061010000
|
||||||
|
1300000006000000130000006201000015000000050000001500000063010000
|
||||||
|
18000000040000001800000064010000ED00000005000000ED00000063010000
|
||||||
|
F000000006000000F000000062010000F200000007000000F200000061010000
|
||||||
|
F400000008000000F400000060010000F500000009000000F50000005F010000
|
||||||
|
F70000000A000000F70000005E010000F80000000B000000F80000005D010000
|
||||||
|
F90000000C000000F90000005C010000FB0000000E000000FB0000005A010000
|
||||||
|
FC0000000F000000FC00000059010000FD00000010000000FD00000058010000
|
||||||
|
FE00000012000000FE00000056010000FF00000013000000FF00000055010000
|
||||||
|
0001000015000000000100005301000001010000170000000101000051010000
|
||||||
|
020100001A000000020100004E01000003010000}
|
||||||
|
end
|
||||||
|
object Terminal: TLabel [1]
|
||||||
|
Left = 72
|
||||||
|
Top = 5
|
||||||
|
Width = 209
|
||||||
|
Height = 20
|
||||||
|
Alignment = taCenter
|
||||||
|
AutoSize = False
|
||||||
|
Caption = 'Fichas de Clientes'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clAqua
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label1: TLabel [2]
|
||||||
|
Left = 34
|
||||||
|
Top = 41
|
||||||
|
Width = 62
|
||||||
|
Height = 20
|
||||||
|
Caption = '&Buscar:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object SpeedButton1: TSpeedButton [3]
|
||||||
|
Left = 329
|
||||||
|
Top = 64
|
||||||
|
Width = 23
|
||||||
|
Height = 22
|
||||||
|
Hint = 'Localizar cliente'
|
||||||
|
Flat = True
|
||||||
|
Glyph.Data = {
|
||||||
|
8E030000424D8E03000000000000760000002800000042000000160000000100
|
||||||
|
04000000000018030000C40E0000C40E00001000000010000000010102000000
|
||||||
|
310039393900000063006F006F006C6C6C00000094000000B5000000E9006A00
|
||||||
|
FF006F6FD900800080009400FF00AEAEAE008F8FCF00F3F3F300B2E75BBBBBBB
|
||||||
|
BD2A83DBBBBBBBBBBBBBBBBBBBBBBBBBB2E75BBBBBBBBD2A83DBBB000000B170
|
||||||
|
000000000036063DBBBBBBBBBBBBBBBBBBBBBBBBB170000000000036063DBB00
|
||||||
|
0000B175FFFFFFFFFD365571FBBBBBBBBBBBBBBBBBBBBBBBB175FFFFFFFFFD36
|
||||||
|
5571FB000000B0000000000FFD365B571FBBBB000000000000BBBBBBB0000000
|
||||||
|
000FFD365B571F0000000FFFFFFFFFF0FD000DB280BBB0DDDDDDDDDDDD0BBBBB
|
||||||
|
0FFFFFFFFFF0FD000DB2800000000FDFFFFFDFF0FD5BB5DB28BBB0D000000000
|
||||||
|
0DD0BBBB0FDFFFFFDFF0FD5BB5DB280000000FFFFFFFFFF0FD5B50DBB0BBBB0D
|
||||||
|
0FFFFFF0B0DD0BBB0FFFFFFFFFF0FD5B50DBB0000000B2FFFFFFFFFF2D5D550D
|
||||||
|
BBBBB0000000000F0F0D0BBBB2FFFFFFFFFF2D5D550DBB000000B2FFD2DFD0FF
|
||||||
|
00005BB2FBBBB0FFFFFFFFF0F00D0BBBB2FFD2DFD0FF00005BB2FB000000082F
|
||||||
|
55FF2FFFF174BD50FBBBBB0F00F00FFF0F0D0BBB082F55FF2FFFF174BD50FB00
|
||||||
|
0000800002200500174C60DBBBBBBB0FFFFFFFFF0F0D0BBB800002200500174C
|
||||||
|
60DBBB00000082FD25FD2FDD1739B00DBBBBB000FFFFFFFFF0000BBB82FD25FD
|
||||||
|
2FDD1739B00DBB00000008000220050001736DF2FBBBB0800F00000F00080BBB
|
||||||
|
08000220050001736DF2FB000000BB2F55FF2FFFF0005500FBBBB080FFFFFFFF
|
||||||
|
F0080BBBBB2F55FF2FFFF0005500FB000000BB2FD2DFD0FFF2D5FF50FBBBB000
|
||||||
|
FFFFFFFFF0F00BBBBB2FD2DFD0FFF2D5FF50FB000000BB2FFFFFFFFFF2D5FFF2
|
||||||
|
0FBBBBB0F000F00FF0F0BBBBBB2FFFFFFFFFF2D5FFF20F000000BB2FDDDDDFDF
|
||||||
|
F2FD5FFF2FBBBBB0FFFFFFFFF000BBBBBB2FDDDDDFDFF2FD5FFF2F000000BB2F
|
||||||
|
FFFFFFFFF2FD00000FBBBBB0FFF0000000BBBBBBBB2FFFFFFFFFF2FD00000F00
|
||||||
|
0000BB2FDDDDFFFFF2FD0DBBBBBBBBBB000BBBBBBBBBBBBBBB2FDDDDFFFFF2FD
|
||||||
|
0DBBBB000000BB2FDDDDDFFFF2FF5DBBBBBBBBBBBBBBBBBBBBBBBBBBBB2FDDDD
|
||||||
|
DFFFF2FF5DBBBB000000BB2FFFFFFFFFF0000DBBBBBBBBBBBBBBBBBBBBBBBBBB
|
||||||
|
BB2FFFFFFFFFF0000DBBBB000000BB000000000002BBBBBBBBBBBBBBBBBBBBBB
|
||||||
|
BBBBBBBBBB000000000002BBBBBBBB000000}
|
||||||
|
NumGlyphs = 3
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
OnClick = SpeedButton1Click
|
||||||
|
end
|
||||||
|
object SpeedButton2: TSpeedButton [4]
|
||||||
|
Left = 329
|
||||||
|
Top = 96
|
||||||
|
Width = 23
|
||||||
|
Height = 22
|
||||||
|
Hint = 'Alta de clientes'
|
||||||
|
Flat = True
|
||||||
|
Glyph.Data = {
|
||||||
|
0E0A0000424D0E0A000000000000360400002800000042000000160000000100
|
||||||
|
080000000000D8050000C40E0000C40E00000001000000010000000000000000
|
||||||
|
5500000080000000AA000000D5000000FF00002B0000002B5500002B8000002B
|
||||||
|
AA00002BD500002BFF000055000000555500005580000055AA000055D5000055
|
||||||
|
FF000080000000805500008080000080AA000080D5000080FF0000AA000000AA
|
||||||
|
550000AA800000AAAA0000AAD50000AAFF0000D5000000D5550000D5800000D5
|
||||||
|
AA0000D5D50000D5FF0000FF000000FF550000FF800000FFAA0000FFD50000FF
|
||||||
|
FF005500000055005500550080005500AA005500D5005500FF00552B0000552B
|
||||||
|
5500552B8000552BAA00552BD500552BFF005555000055555500555580005555
|
||||||
|
AA005555D5005555FF005580000055805500558080005580AA005580D5005580
|
||||||
|
FF0055AA000055AA550055AA800055AAAA0055AAD50055AAFF0055D5000055D5
|
||||||
|
550055D5800055D5AA0055D5D50055D5FF0055FF000055FF550055FF800055FF
|
||||||
|
AA0055FFD50055FFFF008000000080005500800080008000AA008000D5008000
|
||||||
|
FF00802B0000802B5500802B8000802BAA00802BD500802BFF00805500008055
|
||||||
|
5500805580008055AA008055D5008055FF008080000080805500808080008080
|
||||||
|
AA008080D5008080FF0080AA000080AA550080AA800080AAAA0080AAD50080AA
|
||||||
|
FF0080D5000080D5550080D5800080D5AA0080D5D50080D5FF0080FF000080FF
|
||||||
|
550080FF800080FFAA0080FFD50080FFFF00AA000000AA005500AA008000AA00
|
||||||
|
AA00AA00D500AA00FF00AA2B0000AA2B5500AA2B8000AA2BAA00AA2BD500AA2B
|
||||||
|
FF00AA550000AA555500AA558000AA55AA00AA55D500AA55FF00AA800000AA80
|
||||||
|
5500AA808000AA80AA00AA80D500AA80FF00AAAA0000AAAA5500AAAA8000AAAA
|
||||||
|
AA00AAAAD500AAAAFF00AAD50000AAD55500AAD58000AAD5AA00AAD5D500AAD5
|
||||||
|
FF00AAFF0000AAFF5500AAFF8000AAFFAA00AAFFD500AAFFFF00D5000000D500
|
||||||
|
5500D5008000D500AA00D500D500D500FF00D52B0000D52B5500D52B8000D52B
|
||||||
|
AA00D52BD500D52BFF00D5550000D5555500D5558000D555AA00D555D500D555
|
||||||
|
FF00D5800000D5805500D5808000D580AA00D580D500D580FF00D5AA0000D5AA
|
||||||
|
5500D5AA8000D5AAAA00D5AAD500D5AAFF00D5D50000D5D55500D5D58000D5D5
|
||||||
|
AA00D5D5D500D5D5FF00D5FF0000D5FF5500D5FF8000D5FFAA00D5FFD500D5FF
|
||||||
|
FF00FF000000FF005500FF008000FF00AA00FF00D500FF00FF00FF2B0000FF2B
|
||||||
|
5500FF2B8000FF2BAA00FF2BD500FF2BFF00FF550000FF555500FF558000FF55
|
||||||
|
AA00FF55D500FF55FF00FF800000FF805500FF808000FF80AA00FF80D500FF80
|
||||||
|
FF00FFAA0000FFAA5500FFAA8000FFAAAA00FFAAD500FFAAFF00FFD50000FFD5
|
||||||
|
5500FFD58000FFD5AA00FFD5D500FFD5FF00FFFF0000FFFF5500FFFF8000FFFF
|
||||||
|
AA00FFFFD5003F3F3F006B6B6B0095959500C0C0C000FFFFFF00F6F6F6F6F6F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F60505050505050505F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F60000F6F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F605050505050505
|
||||||
|
0505050505F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
0000F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F605050505
|
||||||
|
05050505050505050505F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
F6F6F6F6000000000000000000000000000000000000000000000000F6F6F605
|
||||||
|
050505FAFAFAFAFAFAFA0505050505F6F6F60000000000000000000000000000
|
||||||
|
0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
|
||||||
|
F6F605050505FAFAFAFAFAFAFAFAFAFA05050505F6F600FFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFFF00000000FFFF1D1DFFFF1D1DFFFF1D1DFFFF1D1DFF
|
||||||
|
FF1DFF00F6050505050505FAFAFAFAFAFAFAFAFAFA05050505F600FF1DFFFF1D
|
||||||
|
1DFFFF1D1DFFFF1D1DFFFF1D1DFFFF00000000FF1DFFFF1D1DFFFF1D1DFFFF1D
|
||||||
|
1DFFFF1D1DFFFF00F605050505050505FAFA000000000000FAFA050505F600FF
|
||||||
|
FF1D1DFFFF1D1DFFFF1D1DFFFF1D1DFFFF1DFF00000000FFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFFF0000000000FA0505050500FEFEFEFEFEFE00FAFA05
|
||||||
|
050500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0054D254D2000005050505FFFFFF000000
|
||||||
|
0000FA05050500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF
|
||||||
|
FFFFFFFFFF000000000000FFFF0000000000FF00D254D25400FEFE05050505FF
|
||||||
|
FFFFFEFEFEFE0005050500FFFFFFFFFFFF000000000000FFFF0000000000FF00
|
||||||
|
000000FF0505D205FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00D2D2D2D200FFFFFF
|
||||||
|
05050505FF0000000000FA05050500FFD2D229D2FFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFF00000000FF292905FFFF000000FF000000000000FF0000FF00D2D2D2D2
|
||||||
|
000000FFFF05050505FFFEFEFE00FA05050500FF0505D2FFFF000000FF000000
|
||||||
|
000000FF0000FF00000000FF2905D229FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
|
||||||
|
0000000000FAFA00FFFF05050505000000FAFA05050500FF05D22905FFFFFFFF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFFF00000000FF0529D2FFFF0000000000FF0000FF0000
|
||||||
|
0000FF00050505FAFAFAFAFA00FFFF05050505FAFAFAFA05050500FFD20529FF
|
||||||
|
FF0000000000FF0000FF00000000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||||
|
FFFFFFFFFFFFFF00050505FAFAFAFAFAFA0000FF05050505FAFAFA05050500FF
|
||||||
|
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000
|
||||||
|
000000000000000000000000F6050505FAFAFAFAFAFAFA00FF05050505FA0505
|
||||||
|
05F6000000000000000000000000000000000000000000000000F6F6F6F6F6F6
|
||||||
|
F6F600FEFEFEFEFE00F6F6F6F6F6F6F6F605050505FAFAFAFAFAFAFA00000505
|
||||||
|
0505050505F6F6F6F6F6F6F6F6F600FEFEFEFEFE00F6F6F6F6F6F6F60000F6F6
|
||||||
|
F6F6F6F6F6F6F600FE00FE00F6F6F6F6F6F6F6F6F6F605050505FAFAFAFAFAFA
|
||||||
|
FAFAFA0505050505F6F6F6F6F6F6F6F6F6F6F600FE00FE00F6F6F6F6F6F6F6F6
|
||||||
|
0000F6F6F6F6F6F6F6F600FEFEFEFEFE00F6F6F6F6F6F6F6F6F6F60505050505
|
||||||
|
FAFAFAFAFAFA0505050505F6F6F6F6F6F6F6F6F6F6F600FEFEFEFEFE00F6F6F6
|
||||||
|
F6F6F6F60000F6F6F6F6F6F6F6F6F60000000000F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
0505050505050505050505050505F6F6F6F6F6F6F6F6F6F6F6F6F60000000000
|
||||||
|
F6F6F6F6F6F6F6F60000F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
F6F6F6F6F6050505050505050505050505F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F6F60000F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F60505050505050505F6F6F6F6F6F6F6F6F6F6F6F6F6
|
||||||
|
F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F60000}
|
||||||
|
NumGlyphs = 3
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
OnClick = SpeedButton2Click
|
||||||
|
end
|
||||||
|
object Label2: TLabel [5]
|
||||||
|
Left = 34
|
||||||
|
Top = 65
|
||||||
|
Width = 68
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Nombre:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label3: TLabel [6]
|
||||||
|
Left = 34
|
||||||
|
Top = 113
|
||||||
|
Width = 28
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Nif:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label4: TLabel [7]
|
||||||
|
Left = 178
|
||||||
|
Top = 113
|
||||||
|
Width = 31
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Tlf.:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWhite
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Label5: TLabel [8]
|
||||||
|
Left = 34
|
||||||
|
Top = 137
|
||||||
|
Width = 162
|
||||||
|
Height = 20
|
||||||
|
Caption = 'Tiempo RESTANTE:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clYellow
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object Dig1: TDigitNum [9]
|
||||||
|
Left = 44
|
||||||
|
Top = 168
|
||||||
|
Width = 65
|
||||||
|
Height = 55
|
||||||
|
Brush.Style = bsClear
|
||||||
|
LED_OFF = clBlack
|
||||||
|
LED_BRDon = clWhite
|
||||||
|
LED_BRDoff = clBlue
|
||||||
|
Value = 12
|
||||||
|
MaxLength = 2
|
||||||
|
end
|
||||||
|
object Shape2: TShape [10]
|
||||||
|
Left = 109
|
||||||
|
Top = 199
|
||||||
|
Width = 10
|
||||||
|
Height = 10
|
||||||
|
Brush.Color = clRed
|
||||||
|
Pen.Color = clWhite
|
||||||
|
Shape = stCircle
|
||||||
|
end
|
||||||
|
object Shape1: TShape [11]
|
||||||
|
Left = 109
|
||||||
|
Top = 178
|
||||||
|
Width = 10
|
||||||
|
Height = 10
|
||||||
|
Brush.Color = clRed
|
||||||
|
Pen.Color = clWhite
|
||||||
|
Shape = stCircle
|
||||||
|
end
|
||||||
|
object Dig2: TDigitNum [12]
|
||||||
|
Left = 124
|
||||||
|
Top = 168
|
||||||
|
Width = 65
|
||||||
|
Height = 55
|
||||||
|
Brush.Style = bsClear
|
||||||
|
LED_OFF = clBlack
|
||||||
|
LED_BRDon = clWhite
|
||||||
|
LED_BRDoff = clBlue
|
||||||
|
Value = 12
|
||||||
|
MaxLength = 2
|
||||||
|
end
|
||||||
|
object Label6: TLabel [13]
|
||||||
|
Left = 34
|
||||||
|
Top = 41
|
||||||
|
Width = 148
|
||||||
|
Height = 20
|
||||||
|
Caption = 'C<>digo de Cliente:'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clYellow
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
object DBText1: TDBText [14]
|
||||||
|
Left = 208
|
||||||
|
Top = 40
|
||||||
|
Width = 121
|
||||||
|
Height = 25
|
||||||
|
Alignment = taRightJustify
|
||||||
|
DataField = 'CodCliente1'
|
||||||
|
DataSource = DsPersonas
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clLime
|
||||||
|
Font.Height = -16
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
Transparent = True
|
||||||
|
end
|
||||||
|
inherited Button1: TButton
|
||||||
|
TabOrder = 9
|
||||||
|
end
|
||||||
|
object Edit1: TEdit
|
||||||
|
Left = 205
|
||||||
|
Top = 40
|
||||||
|
Width = 121
|
||||||
|
Height = 21
|
||||||
|
TabOrder = 1
|
||||||
|
OnKeyUp = Edit1KeyUp
|
||||||
|
end
|
||||||
|
object DBGrid1: TDBGrid
|
||||||
|
Left = 32
|
||||||
|
Top = 64
|
||||||
|
Width = 294
|
||||||
|
Height = 168
|
||||||
|
DataSource = DsPersonas
|
||||||
|
ReadOnly = True
|
||||||
|
TabOrder = 2
|
||||||
|
TitleFont.Charset = DEFAULT_CHARSET
|
||||||
|
TitleFont.Color = clWindowText
|
||||||
|
TitleFont.Height = -11
|
||||||
|
TitleFont.Name = 'MS Sans Serif'
|
||||||
|
TitleFont.Style = []
|
||||||
|
OnDblClick = DBGrid1DblClick
|
||||||
|
end
|
||||||
|
object SelIndex: TComboBox
|
||||||
|
Left = 98
|
||||||
|
Top = 40
|
||||||
|
Width = 105
|
||||||
|
Height = 21
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -11
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = []
|
||||||
|
ItemHeight = 13
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'Nombre'
|
||||||
|
OnChange = SelIndexChange
|
||||||
|
Items.Strings = (
|
||||||
|
'CodCliente1'
|
||||||
|
'Nombre'
|
||||||
|
'Apellidos'
|
||||||
|
'Telefono 1')
|
||||||
|
end
|
||||||
|
object DBEdit1: TDBEdit
|
||||||
|
Left = 104
|
||||||
|
Top = 64
|
||||||
|
Width = 121
|
||||||
|
Height = 21
|
||||||
|
DataField = 'Nombre'
|
||||||
|
DataSource = DsPersonas
|
||||||
|
TabOrder = 3
|
||||||
|
OnKeyUp = DBEdit1KeyUp
|
||||||
|
end
|
||||||
|
object DBEdit2: TDBEdit
|
||||||
|
Left = 104
|
||||||
|
Top = 88
|
||||||
|
Width = 217
|
||||||
|
Height = 21
|
||||||
|
DataField = 'Apellidos'
|
||||||
|
DataSource = DsPersonas
|
||||||
|
TabOrder = 4
|
||||||
|
OnKeyUp = DBEdit2KeyUp
|
||||||
|
end
|
||||||
|
object DBEdit3: TDBEdit
|
||||||
|
Left = 72
|
||||||
|
Top = 112
|
||||||
|
Width = 97
|
||||||
|
Height = 21
|
||||||
|
DataField = 'DocumentoDNP'
|
||||||
|
DataSource = DsPersonas
|
||||||
|
TabOrder = 5
|
||||||
|
OnKeyUp = DBEdit3KeyUp
|
||||||
|
end
|
||||||
|
object DBEdit4: TDBEdit
|
||||||
|
Left = 208
|
||||||
|
Top = 112
|
||||||
|
Width = 113
|
||||||
|
Height = 21
|
||||||
|
DataField = 'Telefono 1'
|
||||||
|
DataSource = DsPersonas
|
||||||
|
TabOrder = 6
|
||||||
|
OnKeyUp = DBEdit4KeyUp
|
||||||
|
end
|
||||||
|
object Button2: TButton
|
||||||
|
Left = 208
|
||||||
|
Top = 138
|
||||||
|
Width = 113
|
||||||
|
Height = 17
|
||||||
|
Caption = '&Comprar Bono'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -13
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 7
|
||||||
|
OnClick = Button2Click
|
||||||
|
end
|
||||||
|
object Button3: TButton
|
||||||
|
Left = 208
|
||||||
|
Top = 170
|
||||||
|
Width = 113
|
||||||
|
Height = 47
|
||||||
|
Caption = '&USAR BONO'
|
||||||
|
Font.Charset = DEFAULT_CHARSET
|
||||||
|
Font.Color = clWindowText
|
||||||
|
Font.Height = -13
|
||||||
|
Font.Name = 'MS Sans Serif'
|
||||||
|
Font.Style = [fsBold]
|
||||||
|
ParentFont = False
|
||||||
|
TabOrder = 8
|
||||||
|
OnClick = Button3Click
|
||||||
|
end
|
||||||
|
object DsPersonas: TDataSource
|
||||||
|
DataSet = CtrlPPal.TbPersonas
|
||||||
|
OnDataChange = DsPersonasDataChange
|
||||||
|
end
|
||||||
|
object TbBonos: TTable
|
||||||
|
BeforeOpen = TbBonosBeforeOpen
|
||||||
|
TableName = 'datos\bonos.db'
|
||||||
|
Top = 232
|
||||||
|
end
|
||||||
|
end
|
78
FichasClientes.h
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef FichasClientesH
|
||||||
|
#define FichasClientesH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include "CoolForm.hpp"
|
||||||
|
#include <Db.hpp>
|
||||||
|
#include <DBGrids.hpp>
|
||||||
|
#include <DBTables.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
#include <Grids.hpp>
|
||||||
|
#include <Buttons.hpp>
|
||||||
|
#include <DBCtrls.hpp>
|
||||||
|
#include <Mask.hpp>
|
||||||
|
#include "DigitNum.h"
|
||||||
|
#include "FormularioREUSABLE.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TFClientes : public TFormREUSABLE
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TLabel *Terminal;
|
||||||
|
TLabel *Label1;
|
||||||
|
TEdit *Edit1;
|
||||||
|
TDataSource *DsPersonas;
|
||||||
|
TDBGrid *DBGrid1;
|
||||||
|
TSpeedButton *SpeedButton1;
|
||||||
|
TSpeedButton *SpeedButton2;
|
||||||
|
TComboBox *SelIndex;
|
||||||
|
TDBEdit *DBEdit1;
|
||||||
|
TDBEdit *DBEdit2;
|
||||||
|
TLabel *Label2;
|
||||||
|
TLabel *Label3;
|
||||||
|
TDBEdit *DBEdit3;
|
||||||
|
TLabel *Label4;
|
||||||
|
TDBEdit *DBEdit4;
|
||||||
|
TLabel *Label5;
|
||||||
|
TDigitNum *Dig1;
|
||||||
|
TShape *Shape2;
|
||||||
|
TShape *Shape1;
|
||||||
|
TDigitNum *Dig2;
|
||||||
|
TButton *Button2;
|
||||||
|
TButton *Button3;
|
||||||
|
TLabel *Label6;
|
||||||
|
TDBText *DBText1;
|
||||||
|
TTable *TbBonos;
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
void __fastcall DBGrid1DblClick(TObject *Sender);
|
||||||
|
void __fastcall SpeedButton1Click(TObject *Sender);
|
||||||
|
void __fastcall SpeedButton2Click(TObject *Sender);
|
||||||
|
void __fastcall SelIndexChange(TObject *Sender);
|
||||||
|
void __fastcall Edit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall Button3Click(TObject *Sender);
|
||||||
|
void __fastcall DsPersonasDataChange(TObject *Sender,
|
||||||
|
TField *Field);
|
||||||
|
void __fastcall Button2Click(TObject *Sender);
|
||||||
|
void __fastcall TbBonosBeforeOpen(TDataSet *DataSet);
|
||||||
|
void __fastcall DBEdit1KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit2KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit3KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
void __fastcall DBEdit4KeyUp(TObject *Sender, WORD &Key,
|
||||||
|
TShiftState Shift);
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TFClientes(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TFClientes *FClientes;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
23
FormularioREUSABLE.cpp
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "FormularioREUSABLE.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TFormREUSABLE *FormREUSABLE;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TFormREUSABLE::TFormREUSABLE(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TFormREUSABLE::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrCancel;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
1534
FormularioREUSABLE.dfm
Normal file
27
FormularioREUSABLE.h
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef FormularioREUSABLEH
|
||||||
|
#define FormularioREUSABLEH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include "CoolForm.hpp"
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TFormREUSABLE : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TCoolForm *CoolForm1;
|
||||||
|
TButton *Button1;
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TFormREUSABLE(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TFormREUSABLE *FormREUSABLE;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
324
InstalacionControl/ControlMaestro.iwz
Normal file
@ -0,0 +1,324 @@
|
|||||||
|
|
||||||
|
[InstallShield Wizard]
|
||||||
|
iDate=1
|
||||||
|
iTime=1
|
||||||
|
Flag=0
|
||||||
|
ISX.EXE Size=679936
|
||||||
|
ISX.EXE Date=11:21:52 8/4/1999
|
||||||
|
ISX.EXE Ver=2.1.2.62
|
||||||
|
SETUP.EXE Size=45312
|
||||||
|
SETUP.EXE Date=9:12:24 23/3/1999
|
||||||
|
SETUP.EXE Ver=3.0.111.0
|
||||||
|
SETUP.INS Size=81342
|
||||||
|
SETUP.INS Date=11:26:40 8/4/1999
|
||||||
|
SETUP.INS Ver=Not available
|
||||||
|
_INST16.EX_ Size=81342
|
||||||
|
_INST16.EX_ Date=11:26:40 8/4/1999
|
||||||
|
_INST16.EX_ Ver=Not available
|
||||||
|
_INST32I.EX_ Size=294079
|
||||||
|
_INST32I.EX_ Date=9:12:22 23/3/1999
|
||||||
|
_INST32I.EX_ Ver=Not available
|
||||||
|
ISDEPEND.INI Size=6857
|
||||||
|
ISDEPEND.INI Date=13:24:36 27/12/1999
|
||||||
|
ISDEPEND.INI Ver=Not available
|
||||||
|
SWDEPEND.INI Size=9711
|
||||||
|
SWDEPEND.INI Date=13:24:40 27/12/1999
|
||||||
|
SWDEPEND.INI Ver=Not available
|
||||||
|
ICOMP.EXE Size=119808
|
||||||
|
ICOMP.EXE Date=9:12:24 23/3/1999
|
||||||
|
ICOMP.EXE Ver=3.00.062
|
||||||
|
SPLIT.EXE Size=90624
|
||||||
|
SPLIT.EXE Date=9:12:24 23/3/1999
|
||||||
|
SPLIT.EXE Ver=3.00.060
|
||||||
|
PACKLIST.EXE Size=87552
|
||||||
|
PACKLIST.EXE Date=9:12:24 23/3/1999
|
||||||
|
PACKLIST.EXE Ver=3.00.060
|
||||||
|
Version=2.12
|
||||||
|
DevTool=Borland C++Builder 5
|
||||||
|
Platform=Win32
|
||||||
|
DisksBuilt=1
|
||||||
|
DisksDir=CONTRO~2\650MB\
|
||||||
|
TabsVisit=11111111100000011
|
||||||
|
LangNum=0
|
||||||
|
LangDir=
|
||||||
|
|
||||||
|
[VisualDesign]
|
||||||
|
AppName=ControlMaestro
|
||||||
|
AppExe=[Program Files]\ctrlmstr.exe
|
||||||
|
AppExeFile=
|
||||||
|
Version=1.0.0.101
|
||||||
|
Company=JD soft.
|
||||||
|
Title=ControlMaestro
|
||||||
|
TitleType=1
|
||||||
|
BackgrndBmp=
|
||||||
|
BackgrndAlign=4
|
||||||
|
Backgrnd=1
|
||||||
|
BackgrndColor=10
|
||||||
|
Uninstall=1
|
||||||
|
UninstallChecked=1
|
||||||
|
Silent=1
|
||||||
|
SmsMode=0
|
||||||
|
|
||||||
|
[Types]
|
||||||
|
Types=1
|
||||||
|
Type1Components=1
|
||||||
|
Type1Name=Complete
|
||||||
|
Type1ComponentList=1
|
||||||
|
|
||||||
|
[Components]
|
||||||
|
Components=1
|
||||||
|
Component1Groups=6
|
||||||
|
Component1Name=Application Files
|
||||||
|
Component1Description=Application files needed to run the application
|
||||||
|
Component1GroupList=1 2 3 4 5 6
|
||||||
|
|
||||||
|
[Groups]
|
||||||
|
Groups=6
|
||||||
|
Group1Size=1065435
|
||||||
|
Group1Files=2
|
||||||
|
Group1Name=Program Files
|
||||||
|
Group1Dir=<INSTALLDIR>
|
||||||
|
Group1Update=2
|
||||||
|
Group1TargetOS=-1
|
||||||
|
Group1File1=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\CtrlMstr.exe
|
||||||
|
Group1File2=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\DataViewer.exe
|
||||||
|
Group2Size=7808738
|
||||||
|
Group2Files=28
|
||||||
|
Group2Auto=101
|
||||||
|
Group2ID=39001
|
||||||
|
Group2Name=BDE/IDAPI Files
|
||||||
|
Group2Dir=<ProgramFilesDir>\Common Files\Borland Shared\BDE
|
||||||
|
Group2Update=-1
|
||||||
|
Group2TargetOS=-1
|
||||||
|
Group2File1=c:\program\cbuilder\Borland Shared\BDE\IDAPI32.DLL
|
||||||
|
Group2File1Auto=101
|
||||||
|
Group2File2=c:\program\cbuilder\Borland Shared\BDE\IDR20009.DLL
|
||||||
|
Group2File2Auto=101
|
||||||
|
Group2File3=c:\program\cbuilder\Borland Shared\BDE\BLW32.DLL
|
||||||
|
Group2File3Auto=101
|
||||||
|
Group2File4=c:\program\cbuilder\Borland Shared\BDE\BDEADMIN.EXE
|
||||||
|
Group2File4Auto=101
|
||||||
|
Group2File5=c:\program\cbuilder\Borland Shared\BDE\BDEADMIN.HLP
|
||||||
|
Group2File5Auto=101
|
||||||
|
Group2File6=c:\program\cbuilder\Borland Shared\BDE\BDEADMIN.CNT
|
||||||
|
Group2File6Auto=101
|
||||||
|
Group2File7=c:\program\cbuilder\Borland Shared\BDE\BDEADMIN.TOC
|
||||||
|
Group2File7Auto=101
|
||||||
|
Group2File8=c:\program\cbuilder\Borland Shared\BDE\DATAPUMP.HLP
|
||||||
|
Group2File8Auto=101
|
||||||
|
Group2File9=c:\program\cbuilder\Borland Shared\BDE\DATAPUMP.CNT
|
||||||
|
Group2File9Auto=101
|
||||||
|
Group2File10=c:\program\cbuilder\Borland Shared\BDE\IDDR32.DLL
|
||||||
|
Group2File10Auto=101
|
||||||
|
Group2File11=c:\program\cbuilder\Borland Shared\BDE\IDPDX32.DLL
|
||||||
|
Group2File11Auto=101
|
||||||
|
Group2File12=c:\program\cbuilder\Borland Shared\BDE\IDSQL32.DLL
|
||||||
|
Group2File12Auto=101
|
||||||
|
Group2File13=c:\program\cbuilder\Borland Shared\BDE\IDBAT32.DLL
|
||||||
|
Group2File13Auto=101
|
||||||
|
Group2File14=c:\program\cbuilder\Borland Shared\BDE\IDQBE32.DLL
|
||||||
|
Group2File14Auto=101
|
||||||
|
Group2File15=c:\program\cbuilder\Borland Shared\BDE\IDDBAS32.DLL
|
||||||
|
Group2File15Auto=101
|
||||||
|
Group2File16=c:\program\cbuilder\Borland Shared\BDE\IDASCI32.DLL
|
||||||
|
Group2File16Auto=101
|
||||||
|
Group2File17=c:\program\cbuilder\Borland Shared\BDE\IDODBC32.DLL
|
||||||
|
Group2File17Auto=101
|
||||||
|
Group2File18=c:\program\cbuilder\Borland Shared\BDE\IDDAO32.DLL
|
||||||
|
Group2File18Auto=101
|
||||||
|
Group2File19=c:\program\cbuilder\Borland Shared\BDE\IDDA3532.DLL
|
||||||
|
Group2File19Auto=101
|
||||||
|
Group2File20=C:\ARCHIVOS DE PROGRAMA\INSTALLSHIELD\INSTALLSHIELD EXPRESS FOR C++BUILDER 5\redist\IDAPINST.DLL
|
||||||
|
Group2File20Auto=101
|
||||||
|
Group2File21=c:\program\cbuilder\Borland Shared\BDE\BANTAM.DLL
|
||||||
|
Group2File21Auto=101
|
||||||
|
Group2File22=c:\program\cbuilder\Borland Shared\BDE\USA.BTL
|
||||||
|
Group2File22Auto=101
|
||||||
|
Group2File23=c:\program\cbuilder\Borland Shared\BDE\EUROPE.BTL
|
||||||
|
Group2File23Auto=101
|
||||||
|
Group2File24=c:\program\cbuilder\Borland Shared\BDE\CEEUROPE.BTL
|
||||||
|
Group2File24Auto=101
|
||||||
|
Group2File25=c:\program\cbuilder\Borland Shared\BDE\JAPAN.BTL
|
||||||
|
Group2File25Auto=101
|
||||||
|
Group2File26=c:\program\cbuilder\Borland Shared\BDE\OTHER.BTL
|
||||||
|
Group2File26Auto=101
|
||||||
|
Group2File27=c:\program\cbuilder\Borland Shared\BDE\FAREAST.BTL
|
||||||
|
Group2File27Auto=101
|
||||||
|
Group2File28=c:\program\cbuilder\Borland Shared\BDE\CHARSET.CVB
|
||||||
|
Group2File28Auto=101
|
||||||
|
Group3Size=6080
|
||||||
|
Group3Files=1
|
||||||
|
Group3Auto=98
|
||||||
|
Group3ID=38998
|
||||||
|
Group3Name=BDE/IDAPI CNF File
|
||||||
|
Group3Dir=<ProgramFilesDir>\Common Files\Borland Shared\BDE
|
||||||
|
Group3Update=-1
|
||||||
|
Group3TargetOS=-1
|
||||||
|
Group3File1=C:\ARCHIVOS DE PROGRAMA\INSTALLSHIELD\INSTALLSHIELD EXPRESS FOR C++BUILDER 5\redist\IDAPI.CNF
|
||||||
|
Group3File1Auto=98
|
||||||
|
Group4Size=183808
|
||||||
|
Group4Files=1
|
||||||
|
Group4Auto=58
|
||||||
|
Group4ID=38958
|
||||||
|
Group4Name=System Files - WinSysDir
|
||||||
|
Group4Dir=<WINSYSDIR>
|
||||||
|
Group4Update=-1
|
||||||
|
Group4TargetOS=-1
|
||||||
|
Group4File1=C:\WIN98\SYSTEM\BDEADMIN.CPL
|
||||||
|
Group4File1Auto=58
|
||||||
|
Group5Size=77824
|
||||||
|
Group5Files=15
|
||||||
|
Group5Name=datos
|
||||||
|
Group5Dir=<INSTALLDIR>\DATOS
|
||||||
|
Group5Update=3
|
||||||
|
Group5TargetOS=-1
|
||||||
|
Group5File1=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG5
|
||||||
|
Group5File2=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.MB
|
||||||
|
Group5File3=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.PX
|
||||||
|
Group5File4=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG0
|
||||||
|
Group5File5=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG1
|
||||||
|
Group5File6=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG2
|
||||||
|
Group5File7=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG3
|
||||||
|
Group5File8=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG4
|
||||||
|
Group5File9=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.XG5
|
||||||
|
Group5File10=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG0
|
||||||
|
Group5File11=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG1
|
||||||
|
Group5File12=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG2
|
||||||
|
Group5File13=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG3
|
||||||
|
Group5File14=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.YG4
|
||||||
|
Group5File15=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\datos\personas.DB
|
||||||
|
Group6Size=8918528
|
||||||
|
Group6Files=2
|
||||||
|
Group6Name=Ayuda
|
||||||
|
Group6Dir=<INSTALLDIR>\Ayuda
|
||||||
|
Group6Update=0
|
||||||
|
Group6TargetOS=-1
|
||||||
|
Group6File1=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\Documentacion\LockIt!.doc
|
||||||
|
Group6File2=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\Documentacion\DataViewer.doc
|
||||||
|
|
||||||
|
[Sequence]
|
||||||
|
DestinationLocationDir=<ProgramFilesDir>\JD soft.\ControlMaestro
|
||||||
|
DatabaseLocationDir=<INSTALLDIR>\data
|
||||||
|
SelectProgramFolderName=ControlMaestro
|
||||||
|
WelcomeMessage=1
|
||||||
|
WelcomeMessageFile=
|
||||||
|
DestinationLocation=1
|
||||||
|
SelectProgramFolder=1
|
||||||
|
ProgressBar=1
|
||||||
|
SetupComplete=1
|
||||||
|
SetupCompleteExec=[Program Files]\ctrlmstr.exe
|
||||||
|
SetupCompleteExecParam=
|
||||||
|
SetupCompleteExecReadme=
|
||||||
|
|
||||||
|
[RegEntries]
|
||||||
|
Reg1Path=HKEY_CLASSES_ROOT
|
||||||
|
Reg1Val1Type=0
|
||||||
|
Reg1Val1Name=(Default)
|
||||||
|
Reg1Val1Data=(value not set)
|
||||||
|
Reg1Vals=1
|
||||||
|
Reg2Path=HKEY_CURRENT_USER
|
||||||
|
Reg2Val1Type=0
|
||||||
|
Reg2Val1Name=(Default)
|
||||||
|
Reg2Val1Data=(value not set)
|
||||||
|
Reg2Vals=1
|
||||||
|
Reg3Path=HKEY_LOCAL_MACHINE
|
||||||
|
Reg3Val1Type=0
|
||||||
|
Reg3Val1Name=(Default)
|
||||||
|
Reg3Val1Data=(value not set)
|
||||||
|
Reg3Vals=1
|
||||||
|
Reg4Path=HKEY_USERS
|
||||||
|
Reg4Val1Type=0
|
||||||
|
Reg4Val1Name=(Default)
|
||||||
|
Reg4Val1Data=(value not set)
|
||||||
|
Reg4Vals=1
|
||||||
|
Reg5Path=HKEY_CURRENT_CONFIG
|
||||||
|
Reg5Val1Type=0
|
||||||
|
Reg5Val1Name=(Default)
|
||||||
|
Reg5Val1Data=(value not set)
|
||||||
|
Reg5Vals=1
|
||||||
|
Reg6Path=HKEY_DYN_DATA
|
||||||
|
Reg6Val1Type=0
|
||||||
|
Reg6Val1Name=(Default)
|
||||||
|
Reg6Val1Data=(value not set)
|
||||||
|
Reg6Vals=1
|
||||||
|
Regs=6
|
||||||
|
|
||||||
|
[Registry]
|
||||||
|
|
||||||
|
[Icons]
|
||||||
|
Icons=5
|
||||||
|
Icon1Param=
|
||||||
|
Icon1Cmd=[Program Files]\ctrlmstr.exe
|
||||||
|
Icon1Description=Control Maestro
|
||||||
|
Icon1WorkingDir=[Program Files]
|
||||||
|
Icon1IconFile=[Program Files]\CtrlMstr.exe
|
||||||
|
Icon1RealFile=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\CtrlMstr.exe
|
||||||
|
Icon1WhichIcon=0
|
||||||
|
Icon1KeyVirtual=0
|
||||||
|
Icon1KeyFlags=0
|
||||||
|
Icon1StartMenu=3
|
||||||
|
Icon1Window=0
|
||||||
|
Icon2Param=
|
||||||
|
Icon2Cmd=[Program Files]\ctrlmstr.exe
|
||||||
|
Icon2Description=Control Maestro
|
||||||
|
Icon2WorkingDir=[Program Files]
|
||||||
|
Icon2IconFile=[Program Files]\CtrlMstr.exe
|
||||||
|
Icon2RealFile=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\CtrlMstr.exe
|
||||||
|
Icon2WhichIcon=0
|
||||||
|
Icon2KeyVirtual=0
|
||||||
|
Icon2KeyFlags=0
|
||||||
|
Icon2StartMenu=0
|
||||||
|
Icon2Window=0
|
||||||
|
Icon3Param=
|
||||||
|
Icon3Cmd=[Program Files]\DataViewer.exe
|
||||||
|
Icon3Description=DataViewer
|
||||||
|
Icon3WorkingDir=[Program Files]
|
||||||
|
Icon3IconFile=[Program Files]\DataViewer.exe
|
||||||
|
Icon3RealFile=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\DataViewer.exe
|
||||||
|
Icon3WhichIcon=0
|
||||||
|
Icon3KeyVirtual=0
|
||||||
|
Icon3KeyFlags=0
|
||||||
|
Icon3StartMenu=0
|
||||||
|
Icon3Window=0
|
||||||
|
Icon4Param=
|
||||||
|
Icon4Cmd=[Program Files]\LockIt!.doc
|
||||||
|
Icon4Description=LockIt!
|
||||||
|
Icon4WorkingDir=[Program Files]
|
||||||
|
Icon4IconFile=[Ayuda]\LockIt!.doc
|
||||||
|
Icon4RealFile=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\Documentacion\LockIt!.doc
|
||||||
|
Icon4WhichIcon=0
|
||||||
|
Icon4KeyVirtual=0
|
||||||
|
Icon4KeyFlags=0
|
||||||
|
Icon4StartMenu=0
|
||||||
|
Icon4Window=0
|
||||||
|
Icon5Param=
|
||||||
|
Icon5Cmd=[Ayuda]\DataViewer.doc
|
||||||
|
Icon5Description=DataViewer (Ayuda)
|
||||||
|
Icon5WorkingDir=[Ayuda]
|
||||||
|
Icon5IconFile=
|
||||||
|
Icon5RealFile=C:\Mis documentos\Fuentes de Programacion\CtrlMstr\Documentacion\DataViewer.doc
|
||||||
|
Icon5WhichIcon=0
|
||||||
|
Icon5KeyVirtual=0
|
||||||
|
Icon5KeyFlags=0
|
||||||
|
Icon5StartMenu=0
|
||||||
|
Icon5Window=0
|
||||||
|
|
||||||
|
[Autoexec]
|
||||||
|
PathDir=
|
||||||
|
ShareLocks=
|
||||||
|
ShareFiles=
|
||||||
|
Command=
|
||||||
|
|
||||||
|
[CopyToFloppy]
|
||||||
|
DriveOption=
|
||||||
|
DestinationPath=
|
||||||
|
DestinationPathOneFile=
|
||||||
|
Password=
|
||||||
|
|
||||||
|
[ISObjectIDs]
|
||||||
|
nTotal=2
|
||||||
|
ID1=101
|
||||||
|
ID2=58
|
||||||
|
|
||||||
|
[Uninstall]
|
||||||
|
UserUninstall=0
|
47
Instalador.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "Instalador.h"
|
||||||
|
#include <ShellAPI.hpp>
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TForm1 *Form1;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TForm1::TForm1(TComponent* Owner)
|
||||||
|
: TForm(Owner)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TForm1::Image1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
char zFileName[80], zParams[80], zDir[80];
|
||||||
|
ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "http:\\\\www.infdj.com"),
|
||||||
|
StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TForm1::Button2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
char zFileName[80], zParams[80], zDir[80];
|
||||||
|
ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "Guardian.exe"),
|
||||||
|
StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TForm1::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
char zFileName[80], zParams[80], zDir[80];
|
||||||
|
ShellExecute(Application->MainForm->Handle, 0, StrPCopy(zFileName, "Control.exe"),
|
||||||
|
StrPCopy(zParams, ""), StrPCopy(zDir, ""), SW_SHOWNOACTIVATE > 32);
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TForm1::Image2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ShowMessage( "Si necesita crear una distribuci<63>n\ndel Guardian en discos, copie el\nfichero GUARDIAN.EXE manualmente." );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
BIN
Instalador.dfm
Normal file
39
Instalador.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#ifndef InstaladorH
|
||||||
|
#define InstaladorH
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <Classes.hpp>
|
||||||
|
#include <Controls.hpp>
|
||||||
|
#include <StdCtrls.hpp>
|
||||||
|
#include <Forms.hpp>
|
||||||
|
#include <ExtCtrls.hpp>
|
||||||
|
#include <Graphics.hpp>
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
class TForm1 : public TForm
|
||||||
|
{
|
||||||
|
__published: // IDE-managed Components
|
||||||
|
TImage *Image1;
|
||||||
|
TBevel *Bevel1;
|
||||||
|
TLabel *Label1;
|
||||||
|
TLabel *Label2;
|
||||||
|
TBevel *Bevel2;
|
||||||
|
TButton *Button1;
|
||||||
|
TLabel *Label3;
|
||||||
|
TLabel *Label4;
|
||||||
|
TBevel *Bevel3;
|
||||||
|
TButton *Button2;
|
||||||
|
TLabel *Label5;
|
||||||
|
TLabel *Label6;
|
||||||
|
TImage *Image2;
|
||||||
|
void __fastcall Image1Click(TObject *Sender);
|
||||||
|
void __fastcall Button2Click(TObject *Sender);
|
||||||
|
void __fastcall Button1Click(TObject *Sender);
|
||||||
|
void __fastcall Image2Click(TObject *Sender);
|
||||||
|
private: // User declarations
|
||||||
|
public: // User declarations
|
||||||
|
__fastcall TForm1(TComponent* Owner);
|
||||||
|
};
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
extern PACKAGE TForm1 *Form1;
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#endif
|
129
Install.bpr
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.05.03"/>
|
||||||
|
<PROJECT value="Install.exe"/>
|
||||||
|
<OBJFILES value="Install.obj Instalador.obj"/>
|
||||||
|
<RESFILES value="Install.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value=""/>
|
||||||
|
<RESDEPEN value="$(RESFILES) Instalador.dfm"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value="JD_soft.lib CDopping.lib inet50.lib vclbde50.lib vcldb50.lib vcl50.lib
|
||||||
|
vclx50.lib"/>
|
||||||
|
<SPARELIBS value="vclx50.lib vcl50.lib vcldb50.lib vclbde50.lib inet50.lib CDopping.lib
|
||||||
|
JD_soft.lib"/>
|
||||||
|
<PACKAGES value="vclx50.bpi vcl50.bpi vcldb50.bpi vclbde50.bpi vcldbx50.bpi bcbsmp50.bpi
|
||||||
|
dclocx50.bpi qrpt50.bpi teeui50.bpi vclsmp50.bpi teedb50.bpi tee50.bpi
|
||||||
|
ibsmp50.bpi nmfast50.bpi inetdb50.bpi inet50.bpi"/>
|
||||||
|
<PATHCPP value=".;"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="ilink32"/>
|
||||||
|
<USERDEFINES value=""/>
|
||||||
|
<SYSDEFINES value="NO_STRICT"/>
|
||||||
|
<MAINSOURCE value="Install.cpp"/>
|
||||||
|
<INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl;D:\JDsoft\PrjTPVwin\VCLs\include"/>
|
||||||
|
<LIBPATH value="..\prjtpvwin\vcls\lib;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib"/>
|
||||||
|
<WARNINGS value="-w-par -w-8027 -w-8026"/>
|
||||||
|
<WARNOPTSTR value=""/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-src_suffix cpp -I$(BCB)\include -I$(BCB)\include\vcl
|
||||||
|
-ID:\JDsoft\PrjTPVwin\VCLs\include -boa"/>
|
||||||
|
<CFLAG1 value="-Od -H=c:\PROGRAM\CBUILDER\CBUILD~1\lib\vcl35.csm -Hc -Vx -Ve -X- -r- -a8
|
||||||
|
-b- -k -y -v -vi- -c -tW -Tkh30000 -tWM"/>
|
||||||
|
<CFLAG2 value=""/>
|
||||||
|
<CFLAG3 value=""/>
|
||||||
|
<PFLAGS value="-$YD -$W -$O- -v -M -JPHNE"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zd"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/>
|
||||||
|
<IFLAGS value=""/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
|
||||||
|
</LINKER>
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=1
|
||||||
|
AutoIncBuild=0
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=0
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=3082
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=JD Soft
|
||||||
|
FileDescription=Visualizador de ficheros
|
||||||
|
FileVersion=1.0.0.0
|
||||||
|
InternalName=recolector
|
||||||
|
LegalCopyright=JD Soft. 199x-2000
|
||||||
|
LegalTrademarks=JD Soft.
|
||||||
|
OriginalFilename=Recolector.EXE
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=
|
||||||
|
url=http://www.jd.infdj.com
|
||||||
|
e-mail=jd@infdj.com
|
||||||
|
|
||||||
|
[HistoryLists\hlIncludePath]
|
||||||
|
Count=2
|
||||||
|
Item0=$(BCB)\include;$(BCB)\include\vcl;D:\JDsoft\PrjTPVwin\VCLs\include
|
||||||
|
Item1=$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlLibraryPath]
|
||||||
|
Count=3
|
||||||
|
Item0=..\prjtpvwin\vcls\lib;$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item1=$(BCB)\lib\obj;$(BCB)\lib;D:\JDsoft\PrjTPVwin\VCLs\lib
|
||||||
|
Item2=$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
|
||||||
|
[HistoryLists\hlDebugSourcePath]
|
||||||
|
Count=1
|
||||||
|
Item0=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlConditionals]
|
||||||
|
Count=2
|
||||||
|
Item0=_RTLDLL
|
||||||
|
Item1=_RTLDLL;USEPACKAGES
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=0
|
||||||
|
LinkDebugVcl=0
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
</PROJECT>
|
21
Install.cpp
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
USERES("Install.res");
|
||||||
|
USEFORM("Instalador.cpp", Form1);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Application->Initialize();
|
||||||
|
Application->CreateForm(__classid(TForm1), &Form1);
|
||||||
|
Application->Run();
|
||||||
|
}
|
||||||
|
catch (Exception &exception)
|
||||||
|
{
|
||||||
|
Application->ShowException(&exception);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
Install.exe
Normal file
BIN
Install.res
Normal file
9
README.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
#CtrlMstr
|
||||||
|
|
||||||
|
|
||||||
|
*11/12/1999*
|
||||||
|
|
||||||
|
ToDo: wwtcf?
|
||||||
|
|
||||||
|
|
||||||
|

|
127
ReajustarDinero.bpr
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8' ?>
|
||||||
|
<!-- C++Builder XML Project -->
|
||||||
|
<PROJECT>
|
||||||
|
<MACROS>
|
||||||
|
<VERSION value="BCB.05.03"/>
|
||||||
|
<PROJECT value="ReajustarDinero.exe"/>
|
||||||
|
<OBJFILES value="ReajustarDinero.obj Unit2.obj"/>
|
||||||
|
<RESFILES value="ReajustarDinero.res"/>
|
||||||
|
<IDLFILES value=""/>
|
||||||
|
<IDLGENFILES value=""/>
|
||||||
|
<DEFFILE value=""/>
|
||||||
|
<RESDEPEN value="$(RESFILES) Unit2.dfm"/>
|
||||||
|
<LIBFILES value=""/>
|
||||||
|
<LIBRARIES value="JDsoft.lib vclx50.lib QRPT50.lib VCLBDE50.lib VCLDB50.lib VCL50.lib"/>
|
||||||
|
<SPARELIBS value="VCL50.lib VCLDB50.lib VCLBDE50.lib QRPT50.lib vclx50.lib JDsoft.lib"/>
|
||||||
|
<PACKAGES value="VCL50.bpi VCLX50.bpi bcbsmp50.bpi VCLDB50.bpi VCLADO50.bpi ibsmp50.bpi
|
||||||
|
VCLBDE50.bpi VCLDBX50.bpi QRPT50.bpi TEEUI50.bpi TEEDB50.bpi TEE50.bpi
|
||||||
|
DSS50.bpi TEEQR50.bpi VCLIB50.bpi VCLMID50.bpi VCLIE50.bpi INETDB50.bpi
|
||||||
|
INET50.bpi NMFAST50.bpi WEBMID50.bpi bcbie50.bpi dclocx50.bpi
|
||||||
|
bcb2kaxserver50.bpi CoolPack.bpi JDsoft.bpi"/>
|
||||||
|
<PATHCPP value=".;"/>
|
||||||
|
<PATHPAS value=".;"/>
|
||||||
|
<PATHRC value=".;"/>
|
||||||
|
<PATHASM value=".;"/>
|
||||||
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
|
<LINKER value="tlink32"/>
|
||||||
|
<USERDEFINES value="_DEBUG"/>
|
||||||
|
<SYSDEFINES value="NO_STRICT"/>
|
||||||
|
<MAINSOURCE value="ReajustarDinero.cpp"/>
|
||||||
|
<INCLUDEPATH value="$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include"/>
|
||||||
|
<LIBPATH value="C:\VCLs\lib\;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib"/>
|
||||||
|
<WARNINGS value="-w-par"/>
|
||||||
|
</MACROS>
|
||||||
|
<OPTIONS>
|
||||||
|
<IDLCFLAGS value="-src_suffix cpp -D_DEBUG -I$(BCB)\include -I$(BCB)\include\vcl
|
||||||
|
-I..\VCLs\include -boa"/>
|
||||||
|
<CFLAG1 value="-Od -H=$(BCB)\lib\vcl50.csm -Hc -Vx -Ve -X- -r- -a8 -b- -k -y -v -vi- -c
|
||||||
|
-tW -tWM"/>
|
||||||
|
<PFLAGS value="-$YD -$W -$O- -v -JPHNE -M"/>
|
||||||
|
<RFLAGS value=""/>
|
||||||
|
<AFLAGS value="/mx /w2 /zd"/>
|
||||||
|
<LFLAGS value="-D"" -aa -Tpe -x -Gn -v"/>
|
||||||
|
</OPTIONS>
|
||||||
|
<LINKER>
|
||||||
|
<ALLOBJ value="c0w32.obj sysinit.obj $(OBJFILES)"/>
|
||||||
|
<ALLRES value="$(RESFILES)"/>
|
||||||
|
<ALLLIB value="$(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib"/>
|
||||||
|
</LINKER>
|
||||||
|
<IDEOPTIONS>
|
||||||
|
[Version Info]
|
||||||
|
IncludeVerInfo=1
|
||||||
|
AutoIncBuild=1
|
||||||
|
MajorVer=1
|
||||||
|
MinorVer=0
|
||||||
|
Release=0
|
||||||
|
Build=2
|
||||||
|
Debug=0
|
||||||
|
PreRelease=0
|
||||||
|
Special=0
|
||||||
|
Private=0
|
||||||
|
DLL=0
|
||||||
|
Locale=3082
|
||||||
|
CodePage=1252
|
||||||
|
|
||||||
|
[Version Info Keys]
|
||||||
|
CompanyName=JD Soft.
|
||||||
|
FileDescription=
|
||||||
|
FileVersion=1.0.0.2
|
||||||
|
InternalName=
|
||||||
|
LegalCopyright=
|
||||||
|
LegalTrademarks=JD soft.
|
||||||
|
OriginalFilename=
|
||||||
|
ProductName=
|
||||||
|
ProductVersion=1.0.0.0
|
||||||
|
Comments=
|
||||||
|
url=www.infdj.com
|
||||||
|
e-mail=jd@infdj.com
|
||||||
|
|
||||||
|
[Excluded Packages]
|
||||||
|
$(BCB)\Projects\Bpl\Dialup.bpl=RAS Tools
|
||||||
|
|
||||||
|
[HistoryLists\hlIncludePath]
|
||||||
|
Count=2
|
||||||
|
Item0=$(BCB)\include;$(BCB)\include\vcl;..\VCLs\include
|
||||||
|
Item1=$(BCB)\include;$(BCB)\include\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlLibraryPath]
|
||||||
|
Count=3
|
||||||
|
Item0=C:\VCLs\lib\;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib
|
||||||
|
Item1=..\..\..\..\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib;..\VCLs\lib
|
||||||
|
Item2=..\..\..\..\VCLs\lib;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
|
|
||||||
|
[HistoryLists\hlDebugSourcePath]
|
||||||
|
Count=1
|
||||||
|
Item0=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[HistoryLists\hlConditionals]
|
||||||
|
Count=1
|
||||||
|
Item0=_DEBUG
|
||||||
|
|
||||||
|
[Debugging]
|
||||||
|
DebugSourceDirs=$(BCB)\source\vcl
|
||||||
|
|
||||||
|
[Parameters]
|
||||||
|
RunParams=
|
||||||
|
HostApplication=
|
||||||
|
RemoteHost=
|
||||||
|
RemotePath=
|
||||||
|
RemoteDebug=0
|
||||||
|
|
||||||
|
[Compiler]
|
||||||
|
ShowInfoMsgs=0
|
||||||
|
LinkDebugVcl=0
|
||||||
|
LinkCGLIB=0
|
||||||
|
|
||||||
|
[CORBA]
|
||||||
|
AddServerUnit=1
|
||||||
|
AddClientUnit=1
|
||||||
|
PrecompiledHeaders=1
|
||||||
|
|
||||||
|
[Language]
|
||||||
|
ActiveLang=
|
||||||
|
ProjectLang=
|
||||||
|
RootDir=
|
||||||
|
</IDEOPTIONS>
|
||||||
|
</PROJECT>
|
22
ReajustarDinero.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
USERES("ReajustarDinero.res");
|
||||||
|
USEFORM("Unit2.cpp", Form2);
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Application->Initialize();
|
||||||
|
Application->CreateForm(__classid(TForm2), &Form2);
|
||||||
|
Application->Run();
|
||||||
|
}
|
||||||
|
catch (Exception &exception)
|
||||||
|
{
|
||||||
|
Application->ShowException(&exception);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
BIN
ReajustarDinero.exe
Normal file
BIN
ReajustarDinero.res
Normal file
BIN
Status.bmp
Normal file
After Width: | Height: | Size: 46 KiB |
328
TStatus.cpp
Normal file
@ -0,0 +1,328 @@
|
|||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#include <io.h>
|
||||||
|
#include <vcl.h>
|
||||||
|
#pragma hdrstop
|
||||||
|
|
||||||
|
#include "TStatus.h"
|
||||||
|
#include "CtrlPPal.h"
|
||||||
|
|
||||||
|
#include "CtrlElemento.h"
|
||||||
|
#include "FichasClientes.h"
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
#pragma package(smart_init)
|
||||||
|
#pragma link "CoolForm"
|
||||||
|
#pragma link "DigitNum"
|
||||||
|
#pragma link "FormularioREUSABLE"
|
||||||
|
#pragma resource "*.dfm"
|
||||||
|
TStatus *Status;
|
||||||
|
|
||||||
|
#define Comienzo TbElementosCFG->FieldByName("Comienzo")->AsDateTime
|
||||||
|
|
||||||
|
#define pTiempo TbElementosCFG->FieldByName("Tiempo")->AsDateTime
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
__fastcall TStatus::TStatus(TComponent* Owner)
|
||||||
|
: TFormREUSABLE(Owner)
|
||||||
|
{
|
||||||
|
// CtrlPPal->TbElementosCFG->FieldByName("NumElement")->AsString + " --";
|
||||||
|
|
||||||
|
TbPrecios->Active = true;
|
||||||
|
TbHistorial ->Active = true;
|
||||||
|
TbElementosCFG->Active = true;
|
||||||
|
|
||||||
|
// TiempoPedido->DateTime = 0;
|
||||||
|
// TiempoPedido->Time = 0;
|
||||||
|
|
||||||
|
ltime2Click( 0 );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::SetElement( TElemento *Elto )
|
||||||
|
{
|
||||||
|
Elemento = Elto;
|
||||||
|
|
||||||
|
Terminal->Caption = "Terminal n<>mero: -- " + AnsiString( Elemento->NumElemento ) + " --";
|
||||||
|
|
||||||
|
if ( CtrlPPal->ServerHook ) return;
|
||||||
|
|
||||||
|
if ( ! TbElementosCFG->Locate( "NumElement", Elemento->NumElemento, TLocateOptions() << loCaseInsensitive ) )
|
||||||
|
ShowMessage( "ERROR, EL TERMINAL NO SE ENCONTRO!!\nAPPLICATION MALFUNTIONNNN Granted" );
|
||||||
|
|
||||||
|
// if ( ! TbElementosCFG->FieldByName( "Activo" )->AsBoolean )
|
||||||
|
if ( Elemento->StatusCode == FREE )
|
||||||
|
{
|
||||||
|
MasTiempo->Visible = false;
|
||||||
|
|
||||||
|
Label2->Caption = "&Tiempo que pide:";
|
||||||
|
Label4->Caption = "&Tipo de Conexi<78>n:";
|
||||||
|
PrecioAcumulado = 0;
|
||||||
|
ActivarTerminal->Visible = true;
|
||||||
|
ActivarTerminal->Enabled = true;
|
||||||
|
TipoConexion->Enabled = true;
|
||||||
|
|
||||||
|
// TiempoPedido->Enabled = true;
|
||||||
|
Edit1->Enabled = true;
|
||||||
|
Edit2->Enabled = true;
|
||||||
|
SetCliente->Enabled = true;
|
||||||
|
TbElementosCFG->Edit();
|
||||||
|
Comienzo = TDateTime::CurrentTime();
|
||||||
|
TbElementosCFG->Post();
|
||||||
|
} else {
|
||||||
|
// El terminal est<73> ocupado
|
||||||
|
unsigned short Hour, Min, Sec, MSec;
|
||||||
|
Label4->Caption = AnsiString(PrecioAcumulado) + " acumuladas.";
|
||||||
|
pTiempo.DecodeTime( &Hour, &Min, &Sec, &MSec );
|
||||||
|
Edit1->Text = AnsiString( Hour );
|
||||||
|
Edit2->Text = AnsiString( Min );
|
||||||
|
Label3->Caption = Elemento->NCliente;
|
||||||
|
// TiempoPedido->Time = pTiempo;
|
||||||
|
// TiempoPedidoChange( 0 );
|
||||||
|
MasTiempo->Visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::Time1MouseUp(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
ltime1Click( Sender );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::Time2MouseUp(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
ltime2Click( Sender );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::Time3MouseUp(TObject *Sender, TMouseButton Button,
|
||||||
|
TShiftState Shift, int X, int Y)
|
||||||
|
{
|
||||||
|
ltime3Click( Sender );
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::ltime1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
unsigned short nullValue, h, m;
|
||||||
|
Time1 -> Brush -> Color = clRed;
|
||||||
|
Time2 -> Brush -> Color = clBlack;
|
||||||
|
Time3 -> Brush -> Color = clBlack;
|
||||||
|
|
||||||
|
Comienzo.DecodeTime( &h, &m, &nullValue, &nullValue );
|
||||||
|
Dig1->Value = h;
|
||||||
|
Dig2->Value = m;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::ltime2Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TDateTime lleva; unsigned short nullValue, h, m;
|
||||||
|
|
||||||
|
Time1 -> Brush -> Color = clBlack;
|
||||||
|
Time2 -> Brush -> Color = clRed;
|
||||||
|
Time3 -> Brush -> Color = clBlack;
|
||||||
|
|
||||||
|
lleva = TDateTime::CurrentTime() - Comienzo;
|
||||||
|
|
||||||
|
lleva.DecodeTime( &h, &m, &nullValue, &nullValue );
|
||||||
|
Dig1->Value = h;
|
||||||
|
Dig2->Value = m;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::ltime3Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
TDateTime Queda; unsigned short nullValue, h, m;
|
||||||
|
|
||||||
|
Time1 -> Brush -> Color = clBlack;
|
||||||
|
Time2 -> Brush -> Color = clBlack;
|
||||||
|
Time3 -> Brush -> Color = clRed;
|
||||||
|
|
||||||
|
Queda = ( pTiempo + Comienzo ) - TDateTime::CurrentTime();
|
||||||
|
Queda.DecodeTime( &h, &m, &nullValue, &nullValue );
|
||||||
|
Dig1->Value = h;
|
||||||
|
Dig2->Value = m + 1;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::ActivarTerminalClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
int HorasP = Edit1->Text.ToInt();
|
||||||
|
int MinutP = Edit2->Text.ToInt();
|
||||||
|
// Una vez asignado el terminal a una persona, ya no le puede ser reasignado
|
||||||
|
// tiempo, ni puede cambiarse el usuario propietario de <20>l.
|
||||||
|
|
||||||
|
// Abrimos la tabla de ventas de mi otro programa
|
||||||
|
// Insertamos esto como venta: (Cliente | [TipoConexion+Tiempo] | 1und | PrecioConexionTotal)
|
||||||
|
// Cerramos la tabla
|
||||||
|
|
||||||
|
if ( HorasP == 0 && MinutP == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Comprobamos que no se le asigne mas tiempo del que dispone en el bono
|
||||||
|
if ( idCliente > 0 && ClienteUsaBono &&
|
||||||
|
( HorasP > TBonoH ||
|
||||||
|
(HorasP ==TBonoH && MinutP > TBonoM)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ShowMessage ( "Atenci<EFBFBD>n, al cliente: \n" + Label3->Caption + "\nsolo le quedan " + TBonoH +":"+TBonoM + " disponible.\nNo puedo asignar mas tiempo." );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Desactivamos los controles...
|
||||||
|
TipoConexion->Enabled = false;
|
||||||
|
// TiempoPedido->Enabled = false;
|
||||||
|
Edit1->Enabled = false;
|
||||||
|
Edit2->Enabled = false;
|
||||||
|
|
||||||
|
ActivarTerminal->Enabled = false;
|
||||||
|
ActivarTerminal->Visible = false;
|
||||||
|
|
||||||
|
if ( ! CtrlPPal->ServerHook )
|
||||||
|
{
|
||||||
|
// Activamos el terminal
|
||||||
|
TbElementosCFG ->Edit();
|
||||||
|
TbElementosCFG ->FieldByName( "Activo" )->AsBoolean = true;
|
||||||
|
Comienzo = TDateTime::CurrentTime();
|
||||||
|
pTiempo = EncodeTime( HorasP, MinutP, 0, 0 );
|
||||||
|
TbElementosCFG ->Post();
|
||||||
|
}
|
||||||
|
ltime2Click( 0 );
|
||||||
|
|
||||||
|
int idtc;
|
||||||
|
switch ( TipoConexion->ItemIndex )
|
||||||
|
{
|
||||||
|
// Internet
|
||||||
|
case 0: idtc = 0; break;
|
||||||
|
// Juegos
|
||||||
|
case 1: idtc = 1; break;
|
||||||
|
// Otros
|
||||||
|
case 2: idtc = 3; break;
|
||||||
|
// Otros
|
||||||
|
case 3: idtc = 2; break;
|
||||||
|
default: idtc = 2; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////// ACTIVAMOS REALMENTE EL TERMINAL ///////////////////////////////////
|
||||||
|
Currency PrecioConexion;
|
||||||
|
if ( idCliente > 0 && ClienteUsaBono )
|
||||||
|
PrecioConexion = -1;
|
||||||
|
else
|
||||||
|
PrecioConexion = TbPrecios->FieldByName("Precio")->AsCurrency;
|
||||||
|
CtrlPPal->SetActiveTimeElement( Elemento, pTiempo, idCliente, idtc, PrecioConexion );
|
||||||
|
PrecioAcumulado += PrecioConexion;
|
||||||
|
Close();
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::TiempoPedidoChange(TObject *Sender)
|
||||||
|
{
|
||||||
|
TDateTime TiempoPedido;
|
||||||
|
/*
|
||||||
|
if ( TiempoPedido->Time > EncodeTime( 5, 0, 0, 0 ) )
|
||||||
|
TiempoPedido->Time = EncodeTime( 5, 0, 0, 0 );
|
||||||
|
*/
|
||||||
|
try {
|
||||||
|
if ( Edit1->Text.ToInt() < 0 || Edit1->Text.ToInt() > 5 ) Edit1->Text = "0";
|
||||||
|
} catch(...) { Edit1->Text = "0";
|
||||||
|
Edit1->SelStart= 0;
|
||||||
|
Edit1->SelLength= 1;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if ( Edit2->Text.ToInt() < 0 || Edit2->Text.ToInt() >59 ) Edit2->Text = "0";
|
||||||
|
} catch(...) { Edit2->Text = "0";
|
||||||
|
Edit2->SelStart= 0;
|
||||||
|
Edit2->SelLength= 1;
|
||||||
|
}
|
||||||
|
TiempoPedido = EncodeTime( Edit1->Text.ToInt(), Edit2->Text.ToInt(), 0, 0 );
|
||||||
|
|
||||||
|
// Buscamos en la tabla de precios, al 1<> que tenga un tiempo superior o igual
|
||||||
|
// al que nos pide el cliente...
|
||||||
|
TbPrecios->First();
|
||||||
|
while( !TbPrecios->Eof && TbPrecios->FieldByName("Tiempo")->AsDateTime < TiempoPedido )//->Time )
|
||||||
|
TbPrecios->Next();
|
||||||
|
|
||||||
|
// Actualizamos el precio
|
||||||
|
int Number = (TbPrecios->FieldByName("Precio")->AsCurrency)*100;
|
||||||
|
Precio->Value = Number / 100;
|
||||||
|
PrecioDec->Value = Number % 100;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
void __fastcall TStatus::TbPreciosBeforeOpen(TDataSet *DataSet)
|
||||||
|
{
|
||||||
|
// Si la tabla no existe, la creamos
|
||||||
|
if ( access( (TbPrecios -> TableName).c_str(), 0 ) != 0 )
|
||||||
|
{
|
||||||
|
// Usamos la propiedad FielDefs para definir
|
||||||
|
// las columnas que contendr<64> la tabla
|
||||||
|
TbPrecios -> FieldDefs -> Clear();
|
||||||
|
|
||||||
|
TbPrecios -> FieldDefs -> Add("Tiempo", ftTime, 0, false );
|
||||||
|
TbPrecios -> FieldDefs -> Add("Precio", ftCurrency, 0, false );
|
||||||
|
|
||||||
|
TbPrecios -> IndexDefs -> Clear();
|
||||||
|
TbPrecios -> IndexDefs -> Add("Primary", "Tiempo", TIndexOptions() << ixPrimary << ixUnique );
|
||||||
|
|
||||||
|
// Creamos la base...
|
||||||
|
TbPrecios -> CreateTable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
void __fastcall TStatus::SetClienteClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
TFClientes *Ficha;
|
||||||
|
ClienteUsaBono = false;
|
||||||
|
|
||||||
|
Ficha = new TFClientes(this);
|
||||||
|
if ( Ficha -> ShowModal() == mrOk )
|
||||||
|
{
|
||||||
|
idCliente = CtrlPPal->TbPersonas->FieldByName("CodCliente1")->AsInteger;
|
||||||
|
TBonoH = CtrlPPal->TbPersonas->FieldByName("TiempoH")->AsInteger;
|
||||||
|
TBonoM = CtrlPPal->TbPersonas->FieldByName("TiempoM")->AsInteger;
|
||||||
|
Label3->Caption = CtrlPPal->TbPersonas->FieldByName("Nombre")->AsString + " " + CtrlPPal->TbPersonas->FieldByName("Apellidos")->AsString;
|
||||||
|
ClienteUsaBono =((TBonoH > 0) || (TBonoM > 0));
|
||||||
|
} else {
|
||||||
|
idCliente = 0;
|
||||||
|
Label3->Caption = "Anonimo";
|
||||||
|
}
|
||||||
|
delete Ficha;
|
||||||
|
|
||||||
|
if ( ClienteUsaBono )
|
||||||
|
{
|
||||||
|
Precio->Visible = false;
|
||||||
|
PrecioDec->Visible = false;
|
||||||
|
|
||||||
|
UBono1->Visible = true;
|
||||||
|
UBono2->Caption = AnsiString(TBonoH) + " : " + AnsiString(TBonoM);
|
||||||
|
UBono2->Visible = true;
|
||||||
|
} else {
|
||||||
|
Precio->Visible = true;
|
||||||
|
PrecioDec->Visible = true;
|
||||||
|
|
||||||
|
UBono1->Visible = false;
|
||||||
|
UBono2->Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TStatus::Button1Click(TObject *Sender)
|
||||||
|
{
|
||||||
|
ModalResult = mrCancel;
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void __fastcall TStatus::MasTiempoClick(TObject *Sender)
|
||||||
|
{
|
||||||
|
MasTiempo->Visible = false;
|
||||||
|
|
||||||
|
ActivarTerminal->Visible = true;
|
||||||
|
ActivarTerminal->Enabled = true;
|
||||||
|
TipoConexion->Enabled = true;
|
||||||
|
Label2->Caption = "&Tiempo que a<>ade:";
|
||||||
|
Edit1->Enabled = true;
|
||||||
|
Edit2->Enabled = true;
|
||||||
|
SetCliente->Enabled = true;
|
||||||
|
TbElementosCFG->Edit();
|
||||||
|
Comienzo = TDateTime::CurrentTime();
|
||||||
|
TbElementosCFG->Post(); //
|
||||||
|
}
|
||||||
|
//---------------------------------------------------------------------------
|
||||||
|
|