{ =============================================================================== 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: 01-10-2001 Versión actual: 1.0.2 Fecha versión actual: 01-05-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 13-11-2001 No se comprobaban correctamente los campos inicial y final para intervalos por código de material y por familias. 01-05-2004 p274. Actualización del informe a FastReport. =============================================================================== } unit ListarArticulos; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ListadoBase, cxDropDownEdit, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, RdxRadioButton, ExtCtrls, StdCtrls, RdxTitulos, RdxPaneles, TablaArticulos; type TfrListarArticulos = class(TfrListadoBase) rbTodos: TRdxRadioButton; rbArticulos: TRdxRadioButton; DescripcionIni: TcxButtonEdit; DescripcionFin: TcxButtonEdit; rbFamilias: TRdxRadioButton; cbFamiliaIni: TcxComboBox; cbFamiliaFin: TcxComboBox; Label1: TLabel; procedure rbTodosClick(Sender: TObject); procedure rbArticulosClick(Sender: TObject); procedure rbFamiliasClick(Sender: TObject); procedure DescripcionIniPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure DescripcionFinPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure DescripcionFinPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure DescripcionIniPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure cbFamiliaIniPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure cbFamiliaFinPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure RdxFrameShow(Sender: TObject); private FCodigoArticuloAux : Variant; FArticuloIni : TDatosArticulo; FArticuloFin : TDatosArticulo; procedure ActivarNombres; procedure ActivarFamilias; procedure DesactivarNombres; procedure DesactivarFamilias; procedure RefrescarInforme; override; protected procedure FreeContenido; override; public constructor Create(AOwner : TComponent); override; destructor Destroy; override; end; var frListarArticulos: TfrListarArticulos; implementation {$R *.DFM} uses Articulos, Familias, TablaFamilias, InformeListadoMateriales, Mensajes, StrFunc, Configuracion, RdxFrameArticulos, Literales; { TfrListarArticulos } constructor TfrListarArticulos.Create(AOwner : TComponent); var DescripcionAux : String; begin inherited Create(AOwner); ConfigurarFrame(Self, Self.Entidad); FArticuloIni := TDatosArticulo.Create; FArticuloFin := TDatosArticulo.Create; FCodigoArticuloAux := NULL; DescripcionAux := dmTablaArticulos.DarArticuloMin; FArticuloIni.Codigo := ''; FArticuloIni.Descripcion := DescripcionAux; DescripcionIni.EditingText := FArticuloIni.Descripcion; DescripcionAux := dmTablaArticulos.DarArticuloMax; FArticuloFin.Codigo := ''; FArticuloFin.Descripcion := DescripcionAux; DescripcionFin.EditingText := FArticuloFin.Descripcion; cbFamiliaIni.Properties.Items := dmTablaFamilias.darFamilias; cbFamiliaIni.Properties.Items.Delete(0); //Borro el item en blanco. cbFamiliaIni.ItemIndex := 0; cbFamiliaFin.Properties.Items := dmTablaFamilias.darFamilias; cbFamiliaFin.Properties.Items.Delete(0); //Borro el item en blanco. cbFamiliaFin.ItemIndex := cbFamiliaFin.Properties.Items.Count - 1; FInforme := TdmInformeListadoMateriales.Create(Self); FInforme.Preview := FVistaPrevia.Preview; RefrescarInforme; end; procedure TfrListarArticulos.ActivarNombres; begin DescripcionIni.Enabled := True; DescripcionIni.SetFocus; DescripcionFin.Enabled := True; end; procedure TfrListarArticulos.ActivarFamilias; begin cbFamiliaIni.Enabled := True; cbFamiliaIni.SetFocus; cbFamiliaFin.Enabled := True; end; procedure TfrListarArticulos.DesactivarNombres; begin DescripcionIni.Enabled := False; DescripcionFin.Enabled := False; end; procedure TfrListarArticulos.DesactivarFamilias; begin cbFamiliaIni.Enabled := False; cbFamiliaFin.Enabled := False; end; procedure TfrListarArticulos.rbTodosClick(Sender: TObject); begin DesactivarNombres; DesactivarFamilias; RefrescarInforme; end; procedure TfrListarArticulos.rbArticulosClick(Sender: TObject); begin ActivarNombres; DesactivarFamilias; RefrescarInforme; end; procedure TfrListarArticulos.rbFamiliasClick(Sender: TObject); begin ActivarFamilias; DesactivarNombres; RefrescarInforme; end; procedure TfrListarArticulos.FreeContenido; begin if (ContenidoModal is TRdxFrameArticulos) then FCodigoArticuloAux := (ContenidoModal as TRdxFrameArticulos).CodigoArticulo; inherited FreeContenido; end; procedure TfrListarArticulos.DescripcionIniPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, DescripcionFin.Text) > 0 then begin ErrorText := msgInfArticuloIniMayor; Error := True; Exit; end; FArticuloIni.Descripcion := DisplayValue; FArticuloIni.Codigo := ''; RefrescarInforme; end; procedure TfrListarArticulos.DescripcionIniPropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrArticulos.Create(Self); if not VarIsNull(FCodigoArticuloAux) then begin FArticuloIni.Codigo := FCodigoArticuloAux; dmTablaArticulos.DarDatosArticulo(FArticuloIni); DescripcionIni.EditingText := FArticuloIni.Descripcion; PostMessage(DescripcionIni.Handle, WM_KEYDOWN, VK_RETURN, 0); end; end; procedure TfrListarArticulos.DescripcionFinPropertiesButtonClick( Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrArticulos.Create(Self); if not VarIsNull(FCodigoArticuloAux) then begin FArticuloFin.Codigo := FCodigoArticuloAux; dmTablaArticulos.DarDatosArticulo(FArticuloFin); DescripcionFin.EditingText := FArticuloFin.Descripcion; PostMessage(DescripcionFin.Handle, WM_KEYDOWN, VK_RETURN, 0); end; end; procedure TfrListarArticulos.DescripcionFinPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, DescripcionIni.Text) < 0 then begin ErrorText := msgInfArticuloIniMayor; Error := True; Exit; end; FArticuloFin.Descripcion := DisplayValue; FArticuloFin.Codigo := ''; RefrescarInforme; end; destructor TfrListarArticulos.Destroy; begin FreeAndNil(FArticuloIni); FreeAndNil(FArticuloFin); // El informe se destruye en el padre inherited; end; procedure TfrListarArticulos.RdxFrameShow(Sender: TObject); begin DesactivarNombres; DesactivarFamilias; rbTodos.SetFocus; end; procedure TfrListarArticulos.cbFamiliaIniPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, cbFamiliaFin.Text) > 0 then begin ErrorText := msgInfFamiliaIniMayor; Error := True; Exit; end; RefrescarInforme; end; procedure TfrListarArticulos.cbFamiliaFinPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin if AnsiCompareText(DisplayValue, cbFamiliaIni.Text) < 0 then begin ErrorText := msgInfFamiliaIniMayor; Error := True; Exit; end; RefrescarInforme; end; procedure TfrListarArticulos.RefrescarInforme; begin with (FInforme as TdmInformeListadoMateriales) do begin if rbTodos.Checked then begin DescripcionIni := NULL; DescripcionFin := NULL; FamiliaIni := NULL; FamiliaFin := NULL; end else begin if rbArticulos.Checked then begin DescripcionIni := FArticuloIni.Descripcion; DescripcionFin := FArticuloFin.Descripcion; FamiliaIni := NULL; FamiliaFin := NULL; end else begin DescripcionIni := NULL; DescripcionFin := NULL; FamiliaIni := cbFamiliaIni.Text; FamiliaFin := cbFamiliaFin.Text; end; end; Previsualizar; end; end; end.