MultiFiltro/InfoProveedores.cpp
2021-09-12 22:14:03 +02:00

250 lines
7.1 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "InfoProveedores.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TInfoProv *InfoProv;
//---------------------------------------------------------------------------
__fastcall TInfoProv::TInfoProv(TComponent* Owner)
: TForm(Owner)
{
TbProv->Active = true;
TbProv2Act->Active = true;
TbAct->Active = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::DsProvDataChange(TObject *Sender, TField *Field)
{
char BarraEstado[80];
// Indicador de FichaActual / Num.Fichas
if ( DsProv -> DataSet -> RecNo > 0 )
sprintf( BarraEstado, "%d / %d", DsProv -> DataSet -> RecNo, DsProv -> DataSet -> RecordCount );
else
sprintf( BarraEstado, "¿Nuevo? / %d", DsProv -> DataSet -> RecordCount );
StatusBar1->Panels->Items[2]->Text = BarraEstado;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RB1Click(TObject *Sender)
{
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RB2Click(TObject *Sender)
{
Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RB3Click(TObject *Sender)
{
Edit3->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RB4Click(TObject *Sender)
{
Edit4->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RB5Click(TObject *Sender)
{
Edit5->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit1Enter(TObject *Sender)
{
RB1->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit2Enter(TObject *Sender)
{
RB2->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit3Enter(TObject *Sender)
{
RB3->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit4Enter(TObject *Sender)
{
RB4->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit5Enter(TObject *Sender)
{
RB5->Checked = true;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::SpeedButton1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit1KeyPress(TObject *Sender, char &Key)
{
Edit2->Text = "";
Edit3->Text = "";
Edit4->Text = "";
Edit5->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit2KeyPress(TObject *Sender, char &Key)
{
Edit1->Text = "";
Edit3->Text = "";
Edit4->Text = "";
Edit5->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit3KeyPress(TObject *Sender, char &Key)
{
Edit1->Text = "";
Edit2->Text = "";
Edit4->Text = "";
Edit5->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit4KeyPress(TObject *Sender, char &Key)
{
Edit1->Text = "";
Edit2->Text = "";
Edit3->Text = "";
Edit5->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::Edit5KeyPress(TObject *Sender, char &Key)
{
Edit1->Text = "";
Edit2->Text = "";
Edit3->Text = "";
Edit4->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::TabSheet2Enter(TObject *Sender)
{
PageControl2->ActivePage = TabSheet4;
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::SpeedButton2Click(TObject *Sender)
{
// Si no tiene ya esta actividad...
if ( ! ( TbProv2Act -> Locate( "ID_ACTIVIDAD", TbAct->FieldByName( "ID_ACTIVIDAD" )->Value, TLocateOptions() << loCaseInsensitive ) ) )
// Añadimos esta actividad al proveedor actualmente señalado...
TbProv2Act -> InsertRecord( ARRAYOFCONST(
(
TbProv->FieldByName( "ID_PROVEEDOR" )->Value,
TbAct->FieldByName( "ID_ACTIVIDAD" )->Value
) ) );
else
ShowMessage( "Este proveedor ya tiene asignada, la actividad que intenta agregar" );
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::SpeedButton3Click(TObject *Sender)
{
AnsiString MSG;
MSG = "Seguro que desea eliminar la actividad de: \n"+TbProv2Act->FieldByName("NombreActividad")->AsString+"\n del proveedor actual: \n" + TbProv->FieldByName( "Nombre" )->AsString;
switch( MessageDlg( MSG, mtWarning, TMsgDlgButtons() << mbNo << mbYes, 0 ) )
{
case mrYes:
TbProv2Act->Delete();
break;
default:
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::RefiltrarDatos(TObject *Sender)
{
AnsiString Aqui, BuscarEsto;
// SI no hay actividades seleccionadas
// Tenemos que dejar las propiedades MAESTRO-DETALLE:
//
// TbProv2Act ---> TbProv
//
// // Filter contendrá el 'multi-filtro' (Esto puede parecer un poco tosco), pero realmente funciona... ).
// ! NOTA: NO LLAMAR A ESTA FUNCION DESDE NINGUN SITIO SIN ASEGURARSE
// ! QUE EL OBJETO CONTIENE UN EDIT VALIDO...
// !
if ( RB1->Checked ) Aqui = "ID_PROVEEDOR";
if ( RB2->Checked ) Aqui = "Nombre";
if ( RB3->Checked ) Aqui = "CIF";
if ( RB4->Checked ) Aqui = "Direccion";
if ( RB5->Checked ) Aqui = "CP";
// Obtenemos el valor del campo concreto que esta señalado...
BuscarEsto = ((TEdit *) Sender )->Text;
{ // Some non-indexed field.
AnsiString BuscarCota;
BuscarCota = BuscarEsto + "Z";
TbProv->FilterOptions = TbBusquedas->FilterOptions << foCaseInsensitive;
TbProv->Filter = "( ([" + Aqui + "] >= '" + BuscarEsto + "') AND [" + Aqui + "] < '" + BuscarCota + "')";
TbProv->Filtered = true;
}
TbBusquedas->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TInfoProv::SpeedButton4Click(TObject *Sender)
{
if ( TbProv->Filtered )
{
SpeedButton4->Caption = "Pulse aqui para ACTIVAR FILTRO";
TbProv->Filtered = false;
TbProv2Act -> Active = false;
TbProv2Act -> MasterSource = DsProv;
TbProv2Act -> IndexFieldName = "ID_PROVEEDOR";
TbProv2Act -> MasterFields = "ID_PROVEEDOR";
TbProv2Act -> MasterSource = DsProv;
} else {
SpeedButton4->Caption = "Pulse aqui para DEJAR de FILTRAR"
TbProv->Filtered = true;
}
}
//---------------------------------------------------------------------------