unit uViewAgenteObjetivosFacturas; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewDetallesGenerico, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, ImgList, PngImageList, uDAInterfaces, uDADataTable, ComCtrls, ToolWin, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxSpinEdit, cxCurrencyEdit, TB2ExtItems, TBXExtItems, TB2Item, TB2Dock, TB2Toolbar, TBX, uAgentesController; type TfrViewAgenteObjetivosFacturas = class(TfrViewDetallesGenerico) cxGridViewID_AGENTE: TcxGridDBColumn; cxGridViewANO: TcxGridDBColumn; cxGridViewMES: TcxGridDBColumn; cxGridViewUNIDADES_OBJETIVO: TcxGridDBColumn; cxGridViewIMPORTE_OBJETIVO: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; tbxFiltro: TTBXToolbar; lblAno: TTBXLabelItem; cbxListaAnos: TTBXComboBoxItem; procedure OnListaAnosChange(Sender: TObject; const Text: string); procedure CustomViewShow(Sender: TObject); procedure CustomViewDestroy(Sender: TObject); protected FListaAnos: TStringList; FController : IAgentesController; function GetListaAnos: TStringList; procedure SetListaAnos(const Value: TStringList); function GetController : IAgentesController; virtual; procedure SetController (const Value : IAgentesController); virtual; public property Controller : IAgentesController read GetController write SetController; property ListaAnos: TStringList read GetListaAnos write SetListaAnos; procedure Refrescar; end; implementation {$R *.dfm} uses schContactosClient_Intf; { TfrViewAgenteObjetivosFacturas } procedure TfrViewAgenteObjetivosFacturas.CustomViewDestroy(Sender: TObject); begin FController := NIL; if Assigned(FListaAnos) then FlistaAnos.Free; inherited; end; procedure TfrViewAgenteObjetivosFacturas.CustomViewShow(Sender: TObject); begin cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED inherited; cbxListaAnos.ItemIndex := 0; end; function TfrViewAgenteObjetivosFacturas.GetController: IAgentesController; begin Result := FController; end; function TfrViewAgenteObjetivosFacturas.GetListaAnos: TStringList; begin Result := FListaAnos; end; procedure TfrViewAgenteObjetivosFacturas.OnListaAnosChange(Sender: TObject; const Text: string); begin dsDetalles.DataTable.Filter := 'ANO = ''' + Text + ''''; dsDetalles.DataTable.Filtered :=True; end; procedure TfrViewAgenteObjetivosFacturas.Refrescar; begin //Volvemos a cargar los aņos de los objetivos if Assigned(FController) then ListaAnos := FController.DarListaAnosObjetivosFacturasAgente(dsDetalles.DataTable.FieldByName(fld_Agentes_Objetivos_facturasID_AGENTE).AsInteger); cbxListaAnos.ItemIndex := 0; end; procedure TfrViewAgenteObjetivosFacturas.SetController(const Value: IAgentesController); begin FController := Value; if Assigned(FController) then ListaAnos := FController.DarListaAnosObjetivosFacturasAgente(dsDetalles.DataTable.FieldByName(fld_Agentes_Objetivos_facturasID_AGENTE).AsInteger); end; procedure TfrViewAgenteObjetivosFacturas.SetListaAnos(const Value: TStringList); var i: Integer; AStringAnterior: String; begin AStringAnterior := ''; if Assigned(FListaAnos) and (FListaAnos.Count > 0) then begin AStringAnterior := FListaAnos.ValueFromIndex[cbxListaAnos.ItemIndex]; FListaAnos.Free; end; //Se asigna el nuevo TStringList FListaAnos := Value; if Assigned(FListaAnos) then begin cbxListaAnos.Strings.BeginUpdate; cbxListaAnos.Strings.Clear; for i := 0 to FListaAnos.Count - 1 do cbxListaAnos.Strings.Append(FListaAnos.Names[i]); //Se posiciona en el elemento que habia anteriormente if Length(AStringAnterior) > 0 then begin if FListaAnos.IndexOfName(AStringAnterior) <> -1 then cbxListaAnos.ItemIndex := FListaAnos.IndexOfName(AStringAnterior) else cbxListaAnos.ItemIndex := 0; end; cbxListaAnos.Strings.EndUpdate; end; end; end.