{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 23-11-2002 Versión actual: 1.0.0 Fecha versión actual: 23-11-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit ImprimirClientes; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RDXFRAME, StdCtrls, RdxComboBox, RdxBotones, RdxCampos, ExtCtrls, RdxBarras, RdxTitulos, InformesClientes, Grids, DBGrids, RdxPaneles, RdxRadioButton; type TfrImprimirClientes = class(TRdxFrame) eInformacion: TLabel; Panel: TRdxPanel; eCodigoIni: TLabel; eCodigoFin: TLabel; rbTodos: TRdxRadioButton; rbCodigos: TRdxRadioButton; NombreIni: TRdxEdit; CodigoIni: TRdxEdit; CodigoFin: TRdxEdit; NombreFin: TRdxEdit; brOperacion: TRdxBarraInferior; bImprimir: TRdxBoton; bCancelar: TRdxBoton; bVistaPrevia: TRdxBoton; pnlTitulo: TRdxPanelTituloOperacion; rbCliente: TRdxRadioButton; Label3: TLabel; CodCli: TRdxEdit; NomCli: TRdxEdit; procedure bCancelarClick(Sender: TObject); procedure rbTodosClick(Sender: TObject); procedure rbCodigosClick(Sender: TObject); procedure CodigoIniButtonClick(Sender: TObject); procedure CodigoFinButtonClick(Sender: TObject); procedure CodigoIniExit(Sender: TObject); procedure CodigoFinExit(Sender: TObject); procedure rbClienteClick(Sender: TObject); procedure CodCliButtonClick(Sender: TObject); procedure RdxFrameShow(Sender: TObject); procedure CodCliExit(Sender: TObject); procedure bVistaPreviaClick(Sender: TObject); private FCodigoClienteAux : Variant; FCodCliente : Variant; FCodClienteIni : Variant; FCodClienteFin : Variant; FInformeCliente : TdmInformesClientes; procedure ActivarPorCliente; procedure ActivarPorCodigos; procedure DesactivarPorCliente; procedure DesactivarPorCodigos; function DarNombreCliente(Value : string) : string; procedure SetCodCliente (Value : Variant); procedure SetCodClienteIni (Value : Variant); procedure SetCodClienteFin (Value : Variant); protected procedure FreeContenido; override; public constructor Create(AOwner : TComponent); override; published property CodCliente : Variant read FCodCliente write SetCodCliente; property CodClienteIni : Variant read FCodClienteIni write SetCodClienteIni; property CodClienteFin : Variant read FCodClienteFin write SetCodClienteFin; end; var frImprimirClientes: TfrImprimirClientes; implementation {$R *.DFM} uses Variants, RdxFrameClientes, Entidades, Clientes, TablaClientes, Mensajes, StrFunc; resourcestring msgNoExisteCodigo = 'No existe un cliente con el código %s.'; msgCodigoIniMenor = 'El código de cliente inicial debe ser menor que el código de cliente final'; msgCodigoIncorrecto = '%s no es un código correcto para un cliente. Cambie el codigo por otro e inténtelo de nuevo.'; msgFaltanCodigos = 'Falta indicar o completar el intervalo de códigos de cliente para el listado.'; constructor TfrImprimirClientes.Create(AOwner : TComponent); begin inherited Create(AOwner); FCodCliente := NULL; FCodClienteIni := NULL; FCodClienteFin := NULL; end; procedure TfrImprimirClientes.bCancelarClick(Sender: TObject); begin CloseFrame; end; procedure TfrImprimirClientes.ActivarPorCodigos; begin CodigoIni.Enabled := True; NombreIni.Enabled := True; CodigoIni.VerBoton := True; CodigoFin.Enabled := True; NombreFin.Enabled := True; CodigoFin.VerBoton := True; CodigoIni.SetFocus; end; procedure TfrImprimirClientes.DesactivarPorCodigos; begin CodigoIni.Enabled := False; CodigoIni.VerBoton := False; CodigoFin.Enabled := False; CodigoFin.VerBoton := False; NombreIni.Enabled := False; NombreFin.Enabled := False; end; procedure TfrImprimirClientes.rbTodosClick(Sender: TObject); begin DesactivarPorCliente; DesactivarPorCodigos; end; procedure TfrImprimirClientes.rbCodigosClick(Sender: TObject); begin DesactivarPorCliente; ActivarPorCodigos; end; procedure TfrImprimirClientes.CodigoIniButtonClick(Sender: TObject); begin ContenidoModal := TfrClientes.Create(Self); CodClienteIni := FCodigoClienteAux; end; procedure TfrImprimirClientes.CodigoFinButtonClick(Sender: TObject); begin ContenidoModal := TfrClientes.Create(Self); CodClienteFin := FCodigoClienteAux; end; procedure TfrImprimirClientes.CodigoIniExit(Sender: TObject); begin CodClienteIni := CodigoIni.Text; end; procedure TfrImprimirClientes.CodigoFinExit(Sender: TObject); begin CodClienteFin := CodigoFin.Text; end; procedure TfrImprimirClientes.FreeContenido; begin if (ContenidoModal is TRdxFrameClientes) then FCodigoClienteAux := (ContenidoModal as TRdxFrameClientes).CodigoCliente; inherited FreeContenido; end; function TfrImprimirClientes.DarNombreCliente(Value: string): string; var DatosCliente : TDatosCliente; begin Result := ''; DatosCliente := TDatosCliente.Create; with DatosCliente do begin Codigo := Value; try if dmTablaClientes.DarDatosCliente(DatosCliente) then Result := Nombre else raise Exception.CreateFmt(msgNoExisteCodigo, [Value]); finally DatosCliente.Free; end; end; end; procedure TfrImprimirClientes.SetCodCliente(Value: Variant); begin if EsCadenaVacia(Value) then Exit; FCodCliente := Value; if (dmTablaClientes.ValidarCodigo(FCodCliente)) then begin FCodCliente := dmTablaClientes.FormatearCodigo(FCodCliente); if (not dmTablaClientes.ExisteCodigo(FCodCliente)) then begin VerMensajeFmt(msgNoExisteCodigo, [FCodCliente]); CodCli.SetFocus; Exit; end; CodCli.Text := FCodCliente; NomCli.Text := DarNombreCliente(FCodCliente); end else begin VerMensajeFmt(msgCodigoIncorrecto, [FCodCliente]); CodCli.SetFocus; Exit; end; end; procedure TfrImprimirClientes.rbClienteClick(Sender: TObject); begin ActivarPorCliente; DesactivarPorCodigos; end; procedure TfrImprimirClientes.ActivarPorCliente; begin CodCli.Enabled := True; CodCli.VerBoton := True; NomCli.Enabled := True; CodCli.SetFocus; end; procedure TfrImprimirClientes.DesactivarPorCliente; begin CodCli.Enabled := False; CodCli.VerBoton := False; NomCli.Enabled := False; end; procedure TfrImprimirClientes.CodCliButtonClick(Sender: TObject); begin ContenidoModal := TfrClientes.Create(Self); CodCliente := FCodigoClienteAux; end; procedure TfrImprimirClientes.RdxFrameShow(Sender: TObject); begin CodigoIni.Text := dmTablaClientes.DarClienteMin; CodigoFin.Text := dmTablaClientes.DarClienteMax; end; procedure TfrImprimirClientes.SetCodClienteFin(Value: Variant); begin if EsCadenaVacia(Value) then Exit; FCodClienteFin := Value; if (dmTablaClientes.ValidarCodigo(FCodClienteFin)) then begin FCodClienteFin := dmTablaClientes.FormatearCodigo(FCodClienteFin); if (not dmTablaClientes.ExisteCodigo(FCodClienteFin)) then begin VerMensajeFmt(msgNoExisteCodigo, [FCodClienteFin]); CodigoFin.SetFocus; Exit; end; CodigoFin.Text := FCodClienteFin; NombreFin.Text := DarNombreCliente(FCodClienteFin); end else begin VerMensajeFmt(msgCodigoIncorrecto, [FCodClienteFin]); CodigoFin.SetFocus; Exit; end; end; procedure TfrImprimirClientes.SetCodClienteIni(Value: Variant); begin if EsCadenaVacia(Value) then Exit; FCodClienteIni := Value; if (dmTablaClientes.ValidarCodigo(FCodClienteIni)) then begin FCodClienteIni := dmTablaClientes.FormatearCodigo(FCodClienteIni); if (not dmTablaClientes.ExisteCodigo(FCodClienteIni)) then begin VerMensajeFmt(msgNoExisteCodigo, [FCodClienteIni]); CodigoIni.SetFocus; Exit; end; CodigoIni.Text := FCodClienteIni; NombreIni.Text := DarNombreCliente(FCodClienteIni); end else begin VerMensajeFmt(msgCodigoIncorrecto, [FCodClienteIni]); CodigoIni.SetFocus; Exit; end; end; procedure TfrImprimirClientes.CodCliExit(Sender: TObject); begin CodCliente := CodCli.Text; end; procedure TfrImprimirClientes.bVistaPreviaClick(Sender: TObject); begin FInformeCliente := TdmInformesClientes.Create(Self); FInformeCliente.Generar; end; end.