unit uViewAgenteObjetivosAlbaranes; 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 TfrViewAgenteObjetivosAlbaranes = 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, DateUtils; { TfrViewAgenteObjetivosAlbaranes } procedure TfrViewAgenteObjetivosAlbaranes.CustomViewDestroy(Sender: TObject); begin FController := NIL; if Assigned(FListaAnos) then FlistaAnos.Free; inherited; end; procedure TfrViewAgenteObjetivosAlbaranes.CustomViewShow(Sender: TObject); var i: Integer; Ano: String; begin Ano := IntToStr(YearOf(Date)); cbxListaAnos.OnChange := OnListaAnosChange; //OJO SIEMPRE ANTES DEL INHERITED inherited; cbxListaAnos.ItemIndex := FListaAnos.IndexOfName(Ano); end; function TfrViewAgenteObjetivosAlbaranes.GetController: IAgentesController; begin Result := FController; end; function TfrViewAgenteObjetivosAlbaranes.GetListaAnos: TStringList; begin Result := FListaAnos; end; procedure TfrViewAgenteObjetivosAlbaranes.OnListaAnosChange(Sender: TObject; const Text: string); begin dsDetalles.DataTable.Filter := 'ANO = ''' + Text + ''''; dsDetalles.DataTable.Filtered :=True; end; procedure TfrViewAgenteObjetivosAlbaranes.Refrescar; begin //Volvemos a cargar los aņos de los albaranes if Assigned(FController) then ListaAnos := FController.DarListaAnosObjetivosAlbaranesAgente(dsDetalles.DataTable.FieldByName(fld_Agentes_Objetivos_albaranesID_AGENTE).AsInteger); cbxListaAnos.ItemIndex := 0; end; procedure TfrViewAgenteObjetivosAlbaranes.SetController(const Value: IAgentesController); begin FController := Value; if Assigned(FController) then ListaAnos := FController.DarListaAnosObjetivosAlbaranesAgente(dsDetalles.DataTable.FieldByName(fld_Agentes_Objetivos_albaranesID_AGENTE).AsInteger); end; procedure TfrViewAgenteObjetivosAlbaranes.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.