Diferencia entre revisiones de «TTprxADOBandFilter»

De Pragma Wiki
Ir a la navegación Ir a la búsqueda
Sin resumen de edición
Sin resumen de edición
Línea 69: Línea 69:
===Deshabilitar filtro===
===Deshabilitar filtro===
Deshabilita el filtrado en esta pantalla, la pantalla traerá todos los registros existentes en la base de datos.
Deshabilita el filtrado en esta pantalla, la pantalla traerá todos los registros existentes en la base de datos.
=Declaración=
<pre>
type
  TprxADOBandFilter = class(TComponent)
  private
    FQuery: TprxADOQuery;
    FQuerySQL: TStringList;
    FClientPanel: TPanel;
    FClientBevel: TBevel;
    FDataSet: TDataSet;
    FDataSet_Argumentos: TprxADOQuery;
    FInitialHeight: Integer;
    FFullMode: Boolean;
    FTraducir_OpcionesFiltrado_Text: String;
    FTraducir_Agregar_Text: String;
    FTraducir_AgregarOperador_Text: String;
    FTraducir_CerrarParentesis_Text: String;
    FTraducir_VerCondicion_Text: String;
    FTraducir_CargarConfiguracion: String;
    FTraducir_GuardarConfiguracion: String;
    FTraducir_EliminarConfiguracion: String;
    FTraducir_DeshabilitarFiltro: String;
    FTraducir_HabilitarFiltro: String;
    FPanelOPERADOR_Visible: Boolean;
    FConfigOptions: Boolean;
    FCondition: String;
    FListaComprobantes: TStringList;
    FListaCampos: TStringList;
    FEnabled: Boolean;
  protected
    procedure  Set_DataSet(aValue: TDataSet);
    procedure  Add_Band_Click(Sender: TObject);
    procedure  Delete_Band_Click(Sender: TObject);
    procedure  Band_Show(aBand: TTprxADOBandFilter_Band);
    procedure  GetConditionClick(Sender: TObject);
    procedure  CargarConfiguracionClick(Sender: TObject);
    procedure  GuardarConfiguracionClick(Sender: TObject);
    procedure  EliminarConfiguracionClick(Sender: TObject);
    procedure  DeshabilitarFiltroClick(Sender: TObject);
    procedure  HabilitarFiltroClick(Sender: TObject);
    function    Field_DisplayLabel(aFieldName: String): String;
    property    Query: TprxADOQuery read FQuery write FQuery;
    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;
    property    FullMode: Boolean read FFullMode write FFullMode;
    property    Traducir_OpcionesFiltrado_Text: String read FTraducir_OpcionesFiltrado_Text;
    property    Traducir_Agregar_Text: String read FTraducir_Agregar_Text;
    property    Traducir_AgregarOperador_Text: String read FTraducir_AgregarOperador_Text;
    property    Traducir_CerrarParentesis_Text: String read FTraducir_CerrarParentesis_Text;
    property    Traducir_VerCondicion_Text: String read FTraducir_VerCondicion_Text;
    property    Traducir_CargarConfiguracion: String read FTraducir_CargarConfiguracion;
    property    Traducir_GuardarConfiguracion: String read FTraducir_GuardarConfiguracion;
    property    Traducir_EliminarConfiguracion: String read FTraducir_EliminarConfiguracion;
    property    Traducir_DeshabilitarFiltro: String read FTraducir_DeshabilitarFiltro;
    property    Traducir_HabilitarFiltro: String read FTraducir_HabilitarFiltro;
    property    ListaCampos: TStringList read FListaCampos write FListaCampos;
    property    Enabled: Boolean read FEnabled write FEnabled;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    function    BandCount: Integer;
    procedure  GetPopupOptions(Sender: TprxPopupMenu);
    procedure  xxCargarConfiguracion(var aHandled: Boolean);
    procedure  SelectXtd(var aHandled: Boolean);
    procedure  prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure  prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure  prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure  prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); overload;
    procedure  prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: Variant); overload;
    procedure  GetCondition(aList: TStringList; aFullFieldName: Boolean = True); overload;
    function    GetCondition(aFullFieldName: Boolean = True): String; overload;
    function    DataSet_Argumentos_Select: Boolean;
    function    GetConditionForQBE: String;
    function    GetConditionForSELECT: String;
    function    ListaComprobantes_Refresh(aDataSet: TDataSet; aFieldName: String; aFieldValue: String): Boolean;
    procedure  SetFieldValue(aFieldName: String; aFieldValue: String);
    property    ClientPanel: TPanel read FClientPanel write FClientPanel;
    property    ClientBevel: TBevel read FClientBevel write FClientBevel;
    property    DataSet: TDataSet read FDataSet write Set_DataSet;
    property    InitialHeight: Integer read FInitialHeight write FInitialHeight;
    property    DataSet_Argumentos: TprxADOQuery read FDataSet_Argumentos write FDataSet_Argumentos;
    property    PanelOPERADOR_Visible: Boolean read FPanelOPERADOR_Visible write FPanelOPERADOR_Visible;
    property    ConfigOptions: Boolean read FConfigOptions write FConfigOptions;
    property    Condition: String read FCondition write FCondition;
    property    ListaComprobantes: TStringList read FListaComprobantes write FListaComprobantes;
  published
  end;
</pre>
=Implementación=
===procedure Delete_Band_Click(Sender: TObject)===
Elimina una banda.
===procedure xxCargarConfiguracion(var aHandled: Boolean)===
Carga la configuración desde [[FILTROS/CONFIGURACION]].
===procedure GuardarConfiguracionClick(Sender: TObject)===
Guarda la configuración.
===procedure EliminarConfiguracionClick(Sender: TObject)===
Elimina la configuración.
===procedure DeshabilitarFiltroClick(Sender: TObject)===

Revisión del 16:55 5 jun 2025

Descripción

El objeto TTprxADOBandFilter (Criterios de filtrado) permite filtrar registros de clases (no aplica a las consultas) usando criterios aplicados sobre cada campo.

Los criterios aplicados son para el usuario y la pantalla.

Identidad

  • Ancestro: TComponent
  • Carpeta: C:\DevelopPrx\library\filters
  • Archivo: prxADOBandFilter.pas

Pantalla

Los criterios de filtrado solo se usan en Implementa grilla para clases (TTfvsDBClientFrameGridClases), esta grilla se vería como:

Criterios de filtrado.
  • El botón "Criterios de filtrado" es donde se muestran los criterios elegidos, picado ese botón aparece el menú que contiene los campos de la clase y las opciones adicionales.
  • Los "campos de la clase" son todos los campos de la tabla que estamos consultando, podemos elegir cualquier campo para agregarlo a los criterios.
  • Las "opciones adicionales" permiten, por ejemplo: guardar la selección para que esté disponible la próxima vez que abramos la pantalla.

Modo de uso

Selección de un campo

Para agregar un campo a los criterios de filtrado tenemos que picar el botón "Criterios de filtrado" y en la lista de campos elegir el que queremos, por ejemplo:

Elegir campo categoria.

Cuando elijamos el campo "Categoria" se agregará al panel de criterios de selección de la siguiente manera:

Campo agregado a los criterios.

Cuando agregamos un campo a los criterios de filtrado lo estamos haciendo a una "banda" descripta en TTprxADOBandFilter_Band.

La banda contiene:

  • "Sin uso" no está habilitado, si se agregan más campos siempre dirá "AND".
  • "Nombre del campo" muestra el nombre del campo agregado a la banda.
  • "Operador" permite indicar qué podemos hacer con ese campo (descripto apenas más abajo),
  • "Valor para el filtro" es el valor que queremos buscar.
  • "Quita el campo del filtro elimina la banda.

Operadores

Los operadores habilitados son:

  • "=" buscará registros donde el valor del campo sea igual al ingresado.
  • "LIKE" buscará registros donde el valor del campo contenga el valor ingresado.
  • ">" buscará registros donde el valor del campo sea mayor al ingresado.
  • ">=" buscará registros donde el valor del campo sea mayor o igual al ingresado.
  • "<" buscará registros donde el valor del campo sea menor al ingresado.
  • "<=" buscará registros donde el valor del campo sea menor o igual al ingresado.
  • "<>" buscará registros donde el valor del campo sea distinto al ingresado.

Aplicar el filtro

Una vez que hayamos ingresado todos los criterios que necesitamos podemos picar el botón de refrescar de la grilla para filtrar los registros, por ejemplo:

Filtro aplicado.

Agregar más campos

Para agregar más campos al filtro simplemente repetimos la operación ya descripta, por ejemplo:

Agregar otro campo al filtro.

En este caso agregamos un filtro sobre el campo "Ancestro" indicando que debe contener el texto "DataSetMaster", una vez agregado picamos sobre el botón de refrescar en la grilla y se aplicará el filtro sobre todos los registros.

Opciones adicionales

Ver condición

Permite ver la condición SQL armada según los criterios ingresados, por ejemplo:

Ver condición SQL.

Guardar configuración

Permite guardar los criterios seleccionados para que cuando volvamos a abrir la pantalla éstos aparezcan tal como los hemos definido.

Eliminar configuración

Elimina la configuración guardada previamente.

Deshabilitar filtro

Deshabilita el filtrado en esta pantalla, la pantalla traerá todos los registros existentes en la base de datos.

Declaración

type
  TprxADOBandFilter = class(TComponent)
  private
    FQuery: TprxADOQuery;
    FQuerySQL: TStringList;
    FClientPanel: TPanel;
    FClientBevel: TBevel;

    FDataSet: TDataSet;

    FDataSet_Argumentos: TprxADOQuery;

    FInitialHeight: Integer;
    FFullMode: Boolean;

    FTraducir_OpcionesFiltrado_Text: String;
    FTraducir_Agregar_Text: String;
    FTraducir_AgregarOperador_Text: String;
    FTraducir_CerrarParentesis_Text: String;
    FTraducir_VerCondicion_Text: String;
    FTraducir_CargarConfiguracion: String;
    FTraducir_GuardarConfiguracion: String;
    FTraducir_EliminarConfiguracion: String;

    FTraducir_DeshabilitarFiltro: String;
    FTraducir_HabilitarFiltro: String;

    FPanelOPERADOR_Visible: Boolean;
    FConfigOptions: Boolean;
    FCondition: String;
    FListaComprobantes: TStringList;
    FListaCampos: TStringList;

    FEnabled: Boolean;
  protected
    procedure   Set_DataSet(aValue: TDataSet);

    procedure   Add_Band_Click(Sender: TObject);
    procedure   Delete_Band_Click(Sender: TObject);

    procedure   Band_Show(aBand: TTprxADOBandFilter_Band);

    procedure   GetConditionClick(Sender: TObject);

    procedure   CargarConfiguracionClick(Sender: TObject);
    procedure   GuardarConfiguracionClick(Sender: TObject);
    procedure   EliminarConfiguracionClick(Sender: TObject);
    procedure   DeshabilitarFiltroClick(Sender: TObject);
    procedure   HabilitarFiltroClick(Sender: TObject);

    function    Field_DisplayLabel(aFieldName: String): String;

    property    Query: TprxADOQuery read FQuery write FQuery;
    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;
    property    FullMode: Boolean read FFullMode write FFullMode;

    property    Traducir_OpcionesFiltrado_Text: String read FTraducir_OpcionesFiltrado_Text;
    property    Traducir_Agregar_Text: String read FTraducir_Agregar_Text;
    property    Traducir_AgregarOperador_Text: String read FTraducir_AgregarOperador_Text;
    property    Traducir_CerrarParentesis_Text: String read FTraducir_CerrarParentesis_Text;
    property    Traducir_VerCondicion_Text: String read FTraducir_VerCondicion_Text;
    property    Traducir_CargarConfiguracion: String read FTraducir_CargarConfiguracion;
    property    Traducir_GuardarConfiguracion: String read FTraducir_GuardarConfiguracion;
    property    Traducir_EliminarConfiguracion: String read FTraducir_EliminarConfiguracion;

    property    Traducir_DeshabilitarFiltro: String read FTraducir_DeshabilitarFiltro;
    property    Traducir_HabilitarFiltro: String read FTraducir_HabilitarFiltro;
    property    ListaCampos: TStringList read FListaCampos write FListaCampos;
    property    Enabled: Boolean read FEnabled write FEnabled;
  public
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;

    function    BandCount: Integer;

    procedure   GetPopupOptions(Sender: TprxPopupMenu);

    procedure   xxCargarConfiguracion(var aHandled: Boolean);

    procedure   SelectXtd(var aHandled: Boolean);

    procedure   prxADOBandFilter_Band_Operator_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure   prxADOBandFilter_Band_Enumeration_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure   prxADOBandFilter_Band_FK_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String);
    procedure   prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: String); overload;
    procedure   prxADOBandFilter_Band_Primitives_Add(aOperator: String; aFieldName: String; aOperation: String; aFieldValue: Variant); overload;

    procedure   GetCondition(aList: TStringList; aFullFieldName: Boolean = True); overload;
    function    GetCondition(aFullFieldName: Boolean = True): String; overload;

    function    DataSet_Argumentos_Select: Boolean;

    function    GetConditionForQBE: String;
    function    GetConditionForSELECT: String;

    function    ListaComprobantes_Refresh(aDataSet: TDataSet; aFieldName: String; aFieldValue: String): Boolean;

    procedure   SetFieldValue(aFieldName: String; aFieldValue: String);

    property    ClientPanel: TPanel read FClientPanel write FClientPanel;
    property    ClientBevel: TBevel read FClientBevel write FClientBevel;

    property    DataSet: TDataSet read FDataSet write Set_DataSet;
    property    InitialHeight: Integer read FInitialHeight write FInitialHeight;
    property    DataSet_Argumentos: TprxADOQuery read FDataSet_Argumentos write FDataSet_Argumentos;

    property    PanelOPERADOR_Visible: Boolean read FPanelOPERADOR_Visible write FPanelOPERADOR_Visible;

    property    ConfigOptions: Boolean read FConfigOptions write FConfigOptions;

    property    Condition: String read FCondition write FCondition;

    property    ListaComprobantes: TStringList read FListaComprobantes write FListaComprobantes;
  published
  end;

Implementación

procedure Delete_Band_Click(Sender: TObject)

Elimina una banda.

procedure xxCargarConfiguracion(var aHandled: Boolean)

Carga la configuración desde FILTROS/CONFIGURACION.

procedure GuardarConfiguracionClick(Sender: TObject)

Guarda la configuración.

procedure EliminarConfiguracionClick(Sender: TObject)

Elimina la configuración.

procedure DeshabilitarFiltroClick(Sender: TObject)