{ =============================================================================== Copyright (©) 2001. 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: 12-10-2002 Versión actual: 1.0.1 Fecha versión actual: 01-05-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 19-11-2003 p268. Cambiar funcion ImprimirListadoCli, ExportarListadoCli, bImprimirClick y bExportarClick para validar intervalo y en lugar por codigo se realice por nombre alfabetico. 01-05-2004 p274. Actualización del informe a FastReport. =============================================================================== } unit ListarClientes; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ListadoBase, ExtCtrls, StdCtrls, RdxTitulos, RdxPaneles, TablaClientes, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, RdxRadioButton; type TfrListarClientes = class(TfrListadoBase) ClienteIni: TcxButtonEdit; ClienteFin: TcxButtonEdit; rbTodos: TRdxRadioButton; rbArticulos: TRdxRadioButton; Label1: TLabel; procedure ClienteIniPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ClienteFinPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ClienteIniPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure ClienteFinPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure rbTodosClick(Sender: TObject); procedure rbArticulosClick(Sender: TObject); procedure RdxFrameShow(Sender: TObject); private FClienteIni : TDatosCliente; FClienteFin : TDatosCliente; FCodigoClienteAux : Variant; procedure ActivarIntervalo; procedure DesactivarIntervalo; procedure RefrescarInforme; override; protected procedure FreeContenido; override; public constructor Create(AOwner : TComponent); override; destructor Destroy; override; end; var frListarClientes: TfrListarClientes; implementation {$R *.DFM} { TfrListarClientes } uses RdxFrameClientes, Configuracion, InformeListadoClientes, Clientes, Literales; constructor TfrListarClientes.Create(AOwner: TComponent); var NombreAux : String; begin inherited Create(AOwner); ConfigurarFrame(Self, Self.Entidad); FClienteIni := TDatosCliente.Create; FClienteFin := TDatosCliente.Create; FCodigoClienteAux := NULL; FClienteIni.Codigo := dmTablaClientes.DarClienteMin; dmTablaClientes.DarDatosCliente(FClienteIni); ClienteIni.EditingText := FClienteIni.Nombre; FClienteFin.Codigo := dmTablaClientes.DarClienteMax; dmTablaClientes.DarDatosCliente(FClienteFin); ClienteFin.EditingText := FClienteFin.Nombre; FInforme := TdmInformeListadoClientes.Create(Self); FInforme.Preview := FVistaPrevia.Preview; RefrescarInforme; end; destructor TfrListarClientes.Destroy; begin FreeAndNil(FClienteIni); FreeAndNil(FClienteFin); // El informe se destruye en el padre inherited; end; procedure TfrListarClientes.ClienteIniPropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrClientes.Create(Self); if not VarIsNull(FCodigoClienteAux) then begin FClienteIni.Codigo := FCodigoClienteAux; dmTablaClientes.DarDatosCliente(FClienteIni); ClienteIni.EditingText := FClienteIni.Nombre; PostMessage(ClienteIni.Handle, WM_KEYDOWN, VK_RETURN, 0); end; end; procedure TfrListarClientes.ClienteFinPropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrClientes.Create(Self); if not VarIsNull(FCodigoClienteAux) then begin FClienteFin.Codigo := FCodigoClienteAux; dmTablaClientes.DarDatosCliente(FClienteFin); ClienteFin.EditingText := FClienteFin.Nombre; PostMessage(ClienteFin.Handle, WM_KEYDOWN, VK_RETURN, 0); end; end; procedure TfrListarClientes.FreeContenido; begin if (ContenidoModal is TRdxFrameClientes) then FCodigoClienteAux := (ContenidoModal as TRdxFrameClientes).CodigoCliente; inherited; end; procedure TfrListarClientes.ClienteIniPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, ClienteFin.Text) > 0 then begin ErrorText := msgInfClienteIniMayor; Error := True; Exit; end; FClienteIni.Nombre := DisplayValue; FClienteIni.Codigo := ''; RefrescarInforme; end; procedure TfrListarClientes.ClienteFinPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, ClienteIni.Text) < 0 then begin ErrorText := msgInfClienteIniMayor; Error := True; Exit; end; FClienteFin.Nombre := DisplayValue; FClienteFin.Codigo := ''; RefrescarInforme; end; procedure TfrListarClientes.ActivarIntervalo; begin ClienteIni.Enabled := True; ClienteIni.SetFocus; ClienteFin.Enabled := True; end; procedure TfrListarClientes.DesactivarIntervalo; begin ClienteIni.Enabled := False; ClienteFin.Enabled := False; end; procedure TfrListarClientes.rbTodosClick(Sender: TObject); begin DesactivarIntervalo; RefrescarInforme; end; procedure TfrListarClientes.rbArticulosClick(Sender: TObject); begin ActivarIntervalo; RefrescarInforme; end; procedure TfrListarClientes.RefrescarInforme; begin with (FInforme as TdmInformeListadoClientes)do begin if rbTodos.Checked then begin NombreIni := NULL; NombreFin := NULL; end else begin NombreIni := FClienteIni.Nombre; NombreFin := FClienteFin.Nombre; end; Previsualizar; end; end; procedure TfrListarClientes.RdxFrameShow(Sender: TObject); begin DesactivarIntervalo; rbTodos.SetFocus; end; end.