ProGestion/Modulos/Obras/Cliente/uEditorObras.pas
2007-06-21 16:12:43 +00:00

228 lines
6.9 KiB
ObjectPascal

{
===============================================================================
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 uEditorObras;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent,
JvNavigationPane, uViewObras, uBizObra, ActnList, DBActns, uViewGrid,
Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX,
TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable,
uCustomView, uViewBase, uViewBarraSeleccion, StdCtrls,
dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, JvFormPlacement,
ExtCtrls, JvComponentBase, dxLayoutControl, cxControls,
uViewProyectosObra, cxSplitter;
type
IEditorObras = interface(IEditorGrid)
['{B011F957-6251-4425-A950-15DC49DEB563}']
function GetObras: IBizObra;
procedure SetObras(const Value: IBizObra);
property Obras: IBizObra read GetObras write SetObras;
end;
TfEditorObras = class(TfEditorGrid, IEditorObras)
N3: TMenuItem;
PopupMenu1: TPopupMenu;
frViewProyectosObra: TfrViewProyectosObra;
paginas: TPageControl;
pagProyectos: TTabSheet;
frViewObras: TfrViewObras;
Splitter1: TSplitter;
procedure actEliminarExecute(Sender: TObject);
procedure actModificarExecute(Sender: TObject);
procedure actNuevoExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure frViewProyectosObraactAnadirExecute(Sender: TObject);
procedure frViewProyectosObraactAnadirUpdate(Sender: TObject);
procedure frViewProyectosObraactModificarExecute(Sender: TObject);
procedure frViewProyectosObraactEliminarExecute(Sender: TObject);
procedure frViewProyectosObracxGridViewDataControllerDataChanged(Sender: TObject);
procedure frViewProyectosObraactEliminarTodoExecute(Sender: TObject);
private
FObras: IBizObra;
protected
function GetObras: IBizObra; virtual;
procedure SetObras(const Value: IBizObra); virtual;
procedure SetViewGrid(const Value: IViewGrid); override;
procedure DblClickAction(Sender: TObject);
public
property Obras: IBizObra read GetObras write SetObras;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uCustomEditor, uDataModuleObras, LiteralesObras;
{$R *.dfm}
{
****************************** TfEditorObras *******************************
}
procedure TfEditorObras.actEliminarExecute(Sender: TObject);
begin
if (MessageDlg(msgLitBorrar, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
inherited;
ViewGrid.RefreshGrid;
end;
end;
procedure TfEditorObras.actModificarExecute(Sender: TObject);
begin
inherited;
Obras.Show;
ViewGrid.RefreshGrid;
ViewGrid.SyncFocusedRecordsFromDataSet;
end;
procedure TfEditorObras.actNuevoExecute(Sender: TObject);
begin
inherited;
Obras.Insert;
Obras.Show;
ViewGrid.RefreshGrid;
ViewGrid.SyncFocusedRecordsFromDataSet;
end;
procedure TfEditorObras.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(ViewGrid) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Obras) then
raise Exception.Create('No hay ningún obra asignado');
if not Obras.DataTable.Active then
Obras.DataTable.Active := True;
end;
function TfEditorObras.GetObras: IBizObra;
begin
Result := FObras;
end;
procedure TfEditorObras.SetObras(const Value: IBizObra);
begin
FObras := Value;
dsDataTable.DataTable := FObras.DataTable;
if Assigned(ViewGrid) then
begin
(ViewGrid as IViewObras).Obras := Obras;
frViewProyectosObra.DADataSource.DataTable := FObras.Proyectos.DataTable;
end
end;
destructor TfEditorObras.Destroy;
begin
FObras := NIL;
inherited;
end;
constructor TfEditorObras.Create(AOwner: TComponent);
begin
inherited;
ViewGrid := frViewObras;
end;
procedure TfEditorObras.SetViewGrid(const Value: IViewGrid);
begin
inherited;
if Assigned(ViewGrid) and Assigned(Obras) then
begin
(ViewGrid as IViewObras).Obras := Obras;
end;
end;
procedure TfEditorObras.DblClickAction(Sender: TObject);
begin
actModificar.Execute;
end;
procedure TfEditorObras.frViewProyectosObraactAnadirExecute(Sender: TObject);
begin
inherited;
FObras.Proyectos.Insert;
FObras.Proyectos.Show;
ViewGrid.RefreshGrid;
ViewGrid.SyncFocusedRecordsFromDataSet;
end;
procedure TfEditorObras.frViewProyectosObraactModificarExecute(Sender: TObject);
begin
ViewGrid.SyncFocusedRecordsFromGrid;
FObras.Proyectos.Show;
ViewGrid.RefreshGrid;
ViewGrid.SyncFocusedRecordsFromDataSet;
end;
procedure TfEditorObras.frViewProyectosObraactEliminarExecute(Sender: TObject);
begin
if (MessageDlg(msgLitBorrarProyecto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
FObras.Proyectos.Delete;
FObras.Proyectos.DataTable.ApplyUpdates;
end;
end;
procedure TfEditorObras.frViewProyectosObraactAnadirUpdate(Sender: TObject);
begin
inherited;
if Assigned(dsDataTable.DataTable) then
(Sender as TAction).Enabled := not dsDataTable.DataTable.IsEmpty
else
(Sender as TAction).Enabled := False;
end;
procedure TfEditorObras.frViewProyectosObracxGridViewDataControllerDataChanged(Sender: TObject);
begin
inherited;
if Assigned(FObras) and (not (FObras.DataTable.Fetching) or
not (FObras.DataTable.Opening) or not (FObras.DataTable.Closing)) then
frViewProyectosObra.JvNavPanelHeader.Caption := msgLitListaProyectos + Obras.NOMBRE;
end;
procedure TfEditorObras.frViewProyectosObraactEliminarTodoExecute(Sender: TObject);
begin
inherited;
if (MessageDlg(msgLitBorrarTProyecto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
Obras.Proyectos.DataTable.ClearRows;
Obras.Proyectos.DataTable.ApplyUpdates;
end;
end;
end.