{ =============================================================================== 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 uEditorContactoObra; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorDBItem, dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewGrid, ToolWin, JvComponentBase, uViewDatosYSeleccionContacto, uBizObra, uViewPresupuestosContacto, uCustomView, uViewBase, uBizContacto, cxGridCustomTableView; type IEditorContactoObra = interface(IEditorDBItem) ['{37D8A488-2B72-479C-93FD-70053CBDC9D5}'] end; TfEditorContactoObra = class(TfEditorDBItem, IEditorContactoObra) frViewContactoObra: TfrViewDatosYSeleccionContacto; pnlViewGrid: TPanel; frViewPresupuestosContacto: TfrViewPresupuestosContacto; procedure frViewPresupuestosContactoactAnadirExecute(Sender: TObject); procedure frViewPresupuestosContactoactEliminarExecute(Sender: TObject); procedure frViewPresupuestosContactoactEliminarTodoExecute(Sender: TObject); procedure frViewPresupuestosContactoactEditarExecute(Sender: TObject); procedure actGuardarExecute(Sender: TObject); procedure actGuardarCerrarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure actEliminarUpdate(Sender: TObject); procedure dsDataTableDataChange(Sender: TObject; Field: TField); procedure frViewPresupuestosContactocxGridViewCellDblClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure frViewPresupuestosContactocxGridView2CellDblClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); private FContactosObra: IBizContactosObra; FPresupuestosContacto: IViewPresupuestosContacto; function GetContactosObra: IBizContactosObra; procedure SetContactosObra(const Value: IBizContactosObra); protected function GetModified: Boolean; override; public property ContactosObra: IBizContactosObra read GetContactosObra write SetContactosObra; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; var fEditorContactoObra: TfEditorContactoObra; implementation {$R *.dfm} uses uExceptions, LiteralesObras, uEditorUtils, schObrasClient_Intf, uEditorBase, uEditorDBBase; function ShowEditorContactoObra (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorContactoObra; begin AEditor := TfEditorContactoObra.Create(Application); try AEditor.ContactosObra := (ABizObject as IBizContactosObra); Result := AEditor.ShowModal; finally AEditor.Release; end; end; { TfEditorContactoObra } function TfEditorContactoObra.GetContactosObra: IBizContactosObra; begin Result := FContactosObra; end; procedure TfEditorContactoObra.SetContactosObra(const Value: IBizContactosObra); begin FContactosObra := Value; if Assigned(FContactosObra) then begin dsDataTable.DataTable := FContactosObra.DataTable; frViewContactoObra.Contacto := FContactosObra.Contacto; FPresupuestosContacto.PresupuestosContacto := FContactosObra.Presupuestos; end else begin dsDataTable.DataTable := Nil; frViewContactoObra.Contacto := Nil; FPresupuestosContacto.PresupuestosContacto := Nil; end; end; procedure TfEditorContactoObra.frViewPresupuestosContactoactEditarExecute(Sender: TObject); begin inherited; FPresupuestosContacto.DesactivarFiltros; ContactosObra.Presupuestos.Show; FPresupuestosContacto.ActivarFiltros; FPresupuestosContacto.RefreshGrid; end; procedure TfEditorContactoObra.frViewPresupuestosContactoactAnadirExecute(Sender: TObject); begin inherited; //Orden importante no tocar FPresupuestosContacto.DesactivarFiltros; ContactosObra.Presupuestos.Insert; if FPresupuestosContacto.ClasePresupuesto = CLASE_PRESUPUESTO then ContactosObra.Presupuestos.CLASE := CLASE_PRESUPUESTO else ContactosObra.Presupuestos.CLASE := CLASE_TRABAJO; ContactosObra.Presupuestos.Contacto := ContactosObra.Contacto; ContactosObra.Presupuestos.Show; FPresupuestosContacto.ActivarFiltros; FPresupuestosContacto.RefreshGrid; end; procedure TfEditorContactoObra.frViewPresupuestosContactoactEliminarExecute(Sender: TObject); var Cadena : String; begin if FPresupuestosContacto.ClasePresupuesto = CLASE_PRESUPUESTO then Cadena := msgLitBorrarP else Cadena := msgLitBorrarT; if (MessageDlg(Cadena, mtConfirmation, [mbYes, mbNo], 0) = mrNo) then Exit; ContactosObra.Presupuestos.Delete; FPresupuestosContacto.RefreshGrid; Modified := True; end; procedure TfEditorContactoObra.frViewPresupuestosContactoactEliminarTodoExecute(Sender: TObject); var Cadena: String; begin if FPresupuestosContacto.ClasePresupuesto = CLASE_PRESUPUESTO then Cadena := msgLitBorrarTodosP else Cadena := msgLitBorrarTodosT; if (MessageDlg(Cadena, mtConfirmation, [mbYes, mbNo], 0) = mrNo) then Exit; with ContactosObra.Presupuestos do begin DataTable.DisableControls; DataTable.First; while not DataTable.EOF do begin if CLASE = FPresupuestosContacto.ClasePresupuesto then DataTable.Delete else DataTable.Next; end; DataTable.EnableControls; end; FPresupuestosContacto.RefreshGrid; Modified := True; end; procedure TfEditorContactoObra.actGuardarExecute(Sender: TObject); begin //No hacemos nada en ContactosObra // inherited; end; procedure TfEditorContactoObra.actGuardarCerrarExecute(Sender: TObject); begin //No hacemos nada solo cerramos // inherited; actCerrar.Execute; end; procedure TfEditorContactoObra.actEliminarExecute(Sender: TObject); begin // inherited; //Eliminamos el contacto seleccionado. ContactosObra.Delete; actCerrar.Execute; end; procedure TfEditorContactoObra.actEliminarUpdate(Sender: TObject); begin // inherited; //No quitar ya que no queremos que se lance el del padre end; constructor TfEditorContactoObra.Create(AOwner: TComponent); begin inherited; FPresupuestosContacto := frViewPresupuestosContacto; end; destructor TfEditorContactoObra.Destroy; begin FPresupuestosContacto := Nil; inherited; end; procedure TfEditorContactoObra.dsDataTableDataChange(Sender: TObject; Field: TField); begin inherited; if Assigned(FContactosObra) and (not (FContactosObra.DataTable.Fetching) or not (FContactosObra.DataTable.Opening) or not (FContactosObra.DataTable.Closing)) then begin if Length(FContactosObra.NOMBRE) = 0 then JvNavPanelHeader.Caption := msgLitContactosObraNuv else JvNavPanelHeader.Caption := msgContactosObra + FContactosObra.NOMBRE; Self.Caption := JvNavPanelHeader.Caption; end; end; procedure TfEditorContactoObra.frViewPresupuestosContactocxGridViewCellDblClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin inherited; frViewPresupuestosContactoactEditarExecute(Self); end; procedure TfEditorContactoObra.frViewPresupuestosContactocxGridView2CellDblClick( Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin inherited; frViewPresupuestosContactoactEditarExecute(Self); end; function TfEditorContactoObra.GetModified: Boolean; begin //Para que no pregunte nunca Result := False; end; initialization RegisterEditor(IBizContactosObra, ShowEditorContactoObra, etItem); end.