This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Modulos/Articulos/Cliente/uViewArticulosAlmacen.pas
2007-06-21 16:02:50 +00:00

214 lines
7.0 KiB
ObjectPascal

unit uViewArticulosAlmacen;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewGrid, uViewPreview, frxClass, frxPreview, cxStyles,
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
cxDBData, ActnList, uDADataTable, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, StdCtrls, ExtCtrls, cxLabel, dxPSGlbl, dxPSUtl,
dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns,
dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, cxImage,
cxImageComboBox, ImgList, PngImageList, cxTextEdit, Grids, DBGrids, uBizArticulos,
cxDBLookupComboBox, cxButtonEdit, uViewFiltroBase;
type
IViewArticulosAlmacen = interface(IViewGrid)
['{DDB60E80-F34F-42D7-AD44-10AEF3068078}']
function GetArticulosAlmacen: IBizArticulosAlmacen;
procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write
SetArticulosAlmacen;
end;
TfrViewArticulosAlmacen = class(TfrViewGrid, IViewArticulosAlmacen)
cxGridDBTableView1: TcxGridDBTableView;
cxGridViewCODIGO: TcxGridDBColumn;
cxGridViewCODIGOALMACEN: TcxGridDBColumn;
cxGridViewDESCRIPCION: TcxGridDBColumn;
cxGridViewCODIGOMONTAJE: TcxGridDBColumn;
cxGridViewCODIGOPEDIDO: TcxGridDBColumn;
PngImageList: TPngImageList;
cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn;
cxGridViewALMACEN: TcxGridDBColumn;
cxGridViewICONO: TcxGridDBColumn;
cxStyleArticuloReservado: TcxStyle;
cxGridViewCLIENTE: TcxGridDBColumn;
procedure SelectionChanged(Sender: TcxCustomGridTableView); override;
procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel:
TcxGridLevel);
procedure cxGridViewCODIGOCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var
ADone: Boolean);
procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView;
ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; out
AStyle: TcxStyle);
private
//Filtros relativos a la vista
procedure AnadirFiltroAlmacen;
protected
FNivelFiltrado : TcxFilterCriteriaItemList;
FArticulosAlmacen: IBizArticulosAlmacen;
function GetArticulosAlmacen: IBizArticulosAlmacen;
procedure SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
procedure AnadirOtrosFiltros; override;
public
property ArticulosAlmacen: IBizArticulosAlmacen read GetArticulosAlmacen write
SetArticulosAlmacen;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
var
frViewArticulosAlmacen: TfrViewArticulosAlmacen;
implementation
uses uDataModuleArticulos, schArticulosClient_Intf, uDBSelectionList,
uBizAlmacenes, uDataModuleAlmacenes;
{$R *.dfm}
constructor TfrViewArticulosAlmacen.Create(AOwner: TComponent);
begin
inherited;
Self.MultiSelection := True;
end;
procedure TfrViewArticulosAlmacen.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel);
begin
inherited;
RefrescarFiltro;
end;
procedure TfrViewArticulosAlmacen.cxGridViewCODIGOCustomDrawCell(Sender:
TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo:
TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
R: TRect;
begin
inherited;
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
if Length(AViewInfo.Text) = 0 then
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0)
else
ACanvas.DrawImage(PngImageList, R.Left, R.Top, 1);
ADone := True;
end;
procedure TfrViewArticulosAlmacen.cxGridViewStylesGetContentStyle(Sender:
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
TcxCustomGridTableItem; out AStyle: TcxStyle);
var
IndiceCol: Integer;
AMontaje: string;
begin
inherited;
if Assigned(ARecord) then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName(fld_ARTICULOSREFERENCIAMONTAJE).Index;
AMontaje := VarToStr(ARecord.DisplayTexts[IndiceCol]);
if (Length(AMontaje) > 0) then
AStyle := cxStyleArticuloReservado;
end;
end;
destructor TfrViewArticulosAlmacen.Destroy;
begin
inherited;
end;
function TfrViewArticulosAlmacen.GetArticulosAlmacen: IBizArticulosAlmacen;
begin
Result := FArticulosAlmacen;
end;
procedure TfrViewArticulosAlmacen.SetArticulosAlmacen(const Value: IBizArticulosAlmacen);
var
Nivel: TcxGridLevel;
i: Integer;
AAlmacenes: IBizAlmacen;
begin
FArticulosAlmacen := Value;
if Assigned(FArticulosAlmacen) then
begin
DADataSource.DataTable := FArticulosAlmacen.DataTable;
try
AAlmacenes := dmAlmacenes.GetItems;
AAlmacenes.DataTable.Active := True;
AAlmacenes.First;
while not AAlmacenes.EOF do
begin
Nivel := cxGrid.Levels.Add;
Nivel.Caption := AAlmacenes.NOMBRE;
Nivel.Tag := AAlmacenes.CODIGO;
AAlmacenes.Next;
end;
finally
AAlmacenes := Nil;
end;
end;
end;
procedure TfrViewArticulosAlmacen.SelectionChanged(Sender: TcxCustomGridTableView);
var
ABookmark : Pointer;
i, pos: Integer;
begin
inherited;
pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('CODIGO').Index;
if FArticulosAlmacen <> NIL then
begin
FArticulosAlmacen.DataTable.DisableControls;
ABookmark := FArticulosAlmacen.DataTable.GetBookMark;
(FArticulosAlmacen as ISelectedRowList).SelectedRows.Clear;
for i:=0 to Sender.Controller.SelectedRecordCount-1 do
begin
FArticulosAlmacen.DataTable.Locate('CODIGO', Sender.Controller.SelectedRecords[i].Values[pos],[]);
(FArticulosAlmacen as ISelectedRowList).SelectedRows.CurrentRowSelected := True;
end;
(FArticulosAlmacen as ISelectedRowList).SelectedRows.Count;
FArticulosAlmacen.DataTable.GotoBookmark(ABookmark);
FArticulosAlmacen.DataTable.FreeBookmark(ABookmark);
FArticulosAlmacen.DataTable.EnableControls;
end;
end;
procedure TfrViewArticulosAlmacen.AnadirFiltroAlmacen;
var
CodigoAlmacen: String;
FFiltro : TcxFilterCriteriaItemList;
begin
cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare];
FFiltro := AddFilterGrid(fboAnd);
CodigoAlmacen := IntToStr(cxGrid.Levels.Items[cxGrid.ActiveLevel.Index].Tag);
if CodigoAlmacen <> '-1' then
FFiltro.AddItem(cxGridViewCODIGOALMACEN, foEqual, CodigoAlmacen, CodigoAlmacen);
end;
procedure TfrViewArticulosAlmacen.AnadirOtrosFiltros;
begin
inherited;
AnadirFiltroAlmacen;
//Finalmente activamos el filtro si tenemos algo
if cxGridView.DataController.Filter.IsEmpty
then cxGridView.DataController.Filter.Active := False
else cxGridView.DataController.Filter.Active := True;
cxGrid.ActiveLevel.GridView := cxGridView;
end;
end.