unit uEditorMontajes; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uViewMontajes, uBizMontajes, ActnList, DBActns, uViewGrid, Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, uViewBarraSeleccion, JvComponentBase, pngimage; type IEditorMontajes = interface(IEditorGrid) ['{607F821D-E790-4F80-B095-CE1C34B42E3A}'] function GetMontajes: IBizMontaje; procedure SetMontajes(const Value: IBizMontaje); property Montajes: IBizMontaje read GetMontajes write SetMontajes; function GetSelectionBarVisible: Boolean; procedure SetSelectionBarVisible(const Value: Boolean); property SelectionBarVisible : Boolean read GetSelectionBarVisible write SetSelectionBarVisible; end; TfEditorMontajes = class(TfEditorGrid, IEditorMontajes) frViewBarraSeleccion: TfrViewBarraSeleccion; procedure FormShow(Sender: TObject); procedure actNuevoExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure frViewBarraSeleccionactSeleccionarExecute(Sender: TObject); procedure OnListaAnosChange(Sender: TObject; const Text: string); private FMontajes: IBizMontaje; protected function GetMontajes: IBizMontaje; virtual; procedure SetMontajes(const Value: IBizMontaje); virtual; procedure SetViewGrid(const Value: IViewGrid); override; function GetSelectionBarVisible: Boolean; virtual; procedure SetSelectionBarVisible(const Value: Boolean); virtual; public property SelectionBarVisible : Boolean read GetSelectionBarVisible write SetSelectionBarVisible; property Montajes: IBizMontaje read GetMontajes write SetMontajes; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uCustomEditor, uDataModuleMontajes, uDBSelectionList, uEditorMontaje, uEditorDBBase, uEditorUtils, cxGrid, cxGridCustomTableView, uBizPresupuestosCliente, uDataModulePresupuestos; {$R *.dfm} function ShowEditorMontajes (ABizObject : TDADataTableRules): TModalResult; var AEditor: TfEditorMontajes; begin AEditor := TfEditorMontajes.Create(Application); try AEditor.Montajes := (ABizObject as IBizMontaje); Result := AEditor.ShowModal; finally AEditor.Release; end; end; function ShowSelectEditorMontajes (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorMontajes; begin AEditor := TfEditorMontajes.Create(Application); try AEditor.Montajes := (ABizObject as IBizMontaje); AEditor.SelectionBarVisible := True; Result := AEditor.ShowModal; finally AEditor.Release; end; end; { ****************************** TfEditorMontajes ******************************* } procedure TfEditorMontajes.FormShow(Sender: TObject); begin ListaAnos := dmMontajes.DarListaAnosMontajes; cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Montajes) then raise Exception.Create('No hay ningún Montaje asignado'); Montajes.DataTable.Active := True; end; function TfEditorMontajes.GetMontajes: IBizMontaje; begin Result := FMontajes; end; procedure TfEditorMontajes.SetMontajes(const Value: IBizMontaje); begin FMontajes := Value; dsDataTable.DataTable := FMontajes.DataTable; if Assigned(ViewGrid) then (ViewGrid as IViewMontajes).Montajes := Montajes; end; procedure TfEditorMontajes.actNuevoExecute(Sender: TObject); var APresupuesto : IBizPresupuestos; begin inherited; APresupuesto := dmPresupuestos.GetPresupuestosSinMontaje; try if APresupuesto.ShowForSelect = mrOK then begin APresupuesto := dmPresupuestos.GetItemsSeleccionados(APresupuesto); APresupuesto.DataTable.Active := True; dmMontajes.NuevoMontaje(Montajes, APresupuesto); Montajes.Show; end; finally APresupuesto := NIL; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; end; procedure TfEditorMontajes.actModificarExecute(Sender: TObject); begin inherited; Montajes.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorMontajes.SetViewGrid(const Value: IViewGrid); begin inherited; if Assigned(ViewGrid) and Assigned(Montajes) then (ViewGrid as IViewMontajes).Montajes := Montajes; end; destructor TfEditorMontajes.Destroy; begin FMontajes := NIL; inherited; end; function TfEditorMontajes.GetSelectionBarVisible: Boolean; begin Result := frViewBarraSeleccion.Visible end; procedure TfEditorMontajes.SetSelectionBarVisible(const Value: Boolean); begin frViewBarraSeleccion.Visible := True; ViewGrid.OnDblClick := frViewBarraSeleccion.actSeleccionar.OnExecute; end; procedure TfEditorMontajes.frViewBarraSeleccionactSeleccionarExecute( Sender: TObject); begin inherited; ViewGrid.SyncFocusedRecordsFromGrid; ModalResult := mrOK; end; constructor TfEditorMontajes.Create(AOwner: TComponent); begin inherited; ViewGrid := CreateView(TfrViewMontajes) as IViewMontajes; end; procedure TfEditorMontajes.actEliminarExecute(Sender: TObject); begin if (MessageDlg('¿Desea borrar este montaje?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin inherited; ViewGrid.RefreshGrid; end; end; procedure TfEditorMontajes.OnListaAnosChange(Sender: TObject; const Text: string); var aAux : ISelectedRowList; begin dmMontajes.FiltrarAno(Montajes, WhereDataTable, Text); if Montajes.DataTable.Active then actRefrescar.Execute; // Quitar las selecciones que hubiera anteriormente porque ya no valen if Supports(Montajes, ISelectedRowList, aAux) then if (aAux.SelectedRows.Count > 0) then aAux.SelectedRows.Clear; end; initialization RegisterEditor(IBizMontaje, ShowEditorMontajes, etItems); RegisterEditor(IBizMontaje, ShowSelectEditorMontajes, etSelectItems); end.