{ =============================================================================== Copyright (©) 2006. 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: 22-05-2006 Versión actual: 1.0.0 Fecha versión actual: 22-05-2006 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uEditorReferencias; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, uIEditorReferencias, uBizReferencias, uReferenciasController, DB, uDADataTable, ActnList, Grids, DBGrids, StdCtrls, ComCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxTextEdit, uDAInterfaces; type TfEditorReferencias = class(TForm, IEditorReferencias) ActionList1: TActionList; dsReferencias: TDADataSource; actAceptar: TAction; actCancelar: TAction; bAceptar: TButton; bCancelar: TButton; actCerrar: TAction; PageControl1: TPageControl; TabSheet1: TTabSheet; Label1: TLabel; ListaReferencias: TcxGrid; ListaReferenciasView: TcxGridDBTableView; ListaReferenciasViewCODIGO: TcxGridDBColumn; ListaReferenciasViewDESCRIPCION: TcxGridDBColumn; ListaReferenciasViewVALOR: TcxGridDBColumn; ListaReferenciasLevel: TcxGridLevel; ListaReferenciasViewID: TcxGridDBColumn; procedure FormShow(Sender: TObject); procedure actAceptarExecute(Sender: TObject); procedure actCancelarExecute(Sender: TObject); procedure actCerrarExecute(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ListaReferenciasViewVALORPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); protected FReferencias: IBizReferencia; FController: IReferenciasController; function GetReferencias: IBizReferencia; procedure SetReferencias(const Value: IBizReferencia); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Referencias: IBizReferencia read GetReferencias write SetReferencias; end; implementation {$R *.dfm} { TfEditorReferencias } uses uDialogUtils, Dialogs, uDataTableUtils; function TfEditorReferencias.GetReferencias: IBizReferencia; begin Result := FReferencias; end; procedure TfEditorReferencias.ListaReferenciasViewVALORPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin // Showmessage('Validar'); No es necesario porque si no pone número lo pone el servidor end; procedure TfEditorReferencias.SetReferencias(const Value: IBizReferencia); begin FReferencias := Value; dsReferencias.DataTable := FReferencias.DataTable; dsReferencias.DataTable.Open; end; constructor TfEditorReferencias.Create(AOwner: TComponent); begin inherited; FController := TReferenciasController.Create; end; destructor TfEditorReferencias.Destroy; begin FReferencias := NIL; FController := NIL; inherited; end; procedure TfEditorReferencias.actAceptarExecute(Sender: TObject); begin try if (Referencias.DataTable.State in dsEditModes) then Referencias.DataTable.Post; Referencias.DataTable.ApplyUpdates; except on E : Exception do begin Referencias.DataTable.CancelUpdates; ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); Exit; end; end; actCerrar.Execute; end; procedure TfEditorReferencias.actCancelarExecute(Sender: TObject); begin Referencias.DataTable.CancelUpdates; actCerrar.Execute; end; procedure TfEditorReferencias.actCerrarExecute(Sender: TObject); begin Close; end; procedure TfEditorReferencias.FormCloseQuery(Sender: TObject; var CanClose: Boolean); var Respuesta: Integer; begin Respuesta := IDNO; if (DataTableModified(dsReferencias.DataTable)) then Respuesta := ShowConfirmMessage('Atención', 'Se han producido cambios', '¿Desea guardar los cambios que se han producido antes de cerrar?', [TDlgButton_SI, TDlgButton_NO, TDlgButton_CANCELAR]); case Respuesta of IDYES : actAceptar.Execute; IDNO : actCancelar.Execute; else CanClose := False; end; end; procedure TfEditorReferencias.FormShow(Sender: TObject); begin if not FReferencias.DataTable.Active then FReferencias.DataTable.Active := true; ListaReferencias.SetFocus; ListaReferenciasView.DataController.GotoFirst; end; end.