unit uEditorAlbaranDevProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorAlbaranProveedor, dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, uViewTotales, ComCtrls, JvExComCtrls, JvStatusBar, uViewIncidencias, uViewDetallesBase, uViewDetallesDTO, uViewDetallesArticulos, uViewDetallesAlbaranProveedor, uCustomView, uViewBase, uViewAlbaranProveedor, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorAlbaranDevProveedor, uDAInterfaces, StdCtrls; type TfEditorAlbaranDevProveedor = class(TfEditorAlbaranProveedor, IEditorAlbaranDevProveedor) procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean); protected //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo procedure AsignarVista; override; procedure GuardarInterno; override; procedure EliminarInterno; override; public procedure PonerTitulos(const ATitulo: string = ''); override; end; implementation {$R *.dfm} uses cxControls, uDataTableUtils, uDialogUtils, uViewAlbaranDevProveedor; { TfEditorAlbaranDevProveedor } procedure TfEditorAlbaranDevProveedor.AsignarVista; var AViewAlbaranDevProveedor: TfrViewAlbaranDevProveedor; begin AViewAlbaranDevProveedor := TfrViewAlbaranDevProveedor.create(Self); with AViewAlbaranDevProveedor do begin Parent := pagGeneral; Align := alClient; dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1; end; ViewAlbaran := AViewAlbaranDevProveedor; end; procedure TfEditorAlbaranDevProveedor.EliminarInterno; begin //inherited; <- No descomentar. No hacer la parte del padre (por el mensaje) if (Application.MessageBox('¿Desea borrar esta orden de devolución?', 'Atención', MB_YESNO) = IDYES) then begin FController.Eliminar(FAlbaran); inherited end end; procedure TfEditorAlbaranDevProveedor.GuardarInterno; var bEsNuevo : Boolean; begin //inherited; <- No descomentar. No hacer la parte del padre (por el mensaje) bEsNuevo := False; ShowHourglassCursor; // frViewDetallesAlbaranProveedor1.SaveGridStatus; frViewDetallesAlbaranProveedor1.BeginUpdate; try bEsNuevo := FAlbaran.EsNuevo; FController.Guardar(FAlbaran); finally frViewDetallesAlbaranProveedor1.EndUpdate; // frViewDetallesAlbaranProveedor1.RestoreGridStatus; HideHourglassCursor; end; if bEsNuevo then ShowInfoMessage('La orden de devolución se ha dado de alta con el código ' + FAlbaran.REFERENCIA); Modified := False; end; procedure TfEditorAlbaranDevProveedor.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean); begin // inherited; <- No descomentar. No quiero hacer la parte del padre if (not Assigned(FAlbaran)) or (FAlbaran.ID_PROVEEDOR = ID_NULO) then begin ShowWarningMessage('Antes de introducir conceptos debe elegir un proveedor para esta orden de devolución'); AllowChange := False; end; end; procedure TfEditorAlbaranDevProveedor.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := ATitulo; if (FTitulo = '') and Assigned(FAlbaran) then begin if FAlbaran.EsNuevo then FTitulo := 'Nueva orden de devolución de proveedor' else FTitulo := 'Orden de devolución de proveedor' + ' - ' + FAlbaran.Proveedor.Nombre; end; inherited PonerTitulos(FTitulo); end; end.