TTprxADODataSet Options FiltroQBEForm

De Pragma Wiki
Ir a la navegación Ir a la búsqueda

Descripción

El form TTprxADODataSet_Options_FiltroQBEForm (Selección F7) permite filtrar los registros de una grilla usando el registro activo como ejemplo, es decir que toma los valores de ese registro y busca registros coincidentes.

El form se instancia exclusivamente presionando F7 sobre una grilla.

Al aparecer el form veremos la lista de campos de la grilla, con los valores correspondientes al registro que estaba activo:

Antes de filtrar.

Podemos marcar con un check los valores que queremos usar para el filtro. Por ejemplo, queremos buscar todos los registros donde la Categoria sea igual a DATASETS/IMPLEMENTED:

Filtro marcado.

Cuando aplicamos el filtro veremos la grilla filtrada:

Filtro aplicado.

Para quitar el filtro hay que presionar nuevamente F7 y picar el botón "Resetear".

Identidad

  • Ancestro: TfvsForm
  • Carpeta: C:\DevelopPrx\library
  • Archivo: prxADODataSet_Options_FiltroQBEForm.pas

Declaración

type
  TTprxADODataSet_Options_FiltroQBEForm = class(TTfvsForm)
    PageControl1: TPageControl;
    TabSheetSTANDARD: TTabSheet;
    Panel1: TPanel;
    Panel2: TPanel;
    ButtonRESETEAR: TButton;
    Button_APLICAR: TButton;
    Button_CERRAR: TButton;
    Panel3: TPanel;
    prxCheckListBoxCAMPOS: TprxCheckListBox;
    procedure FormShow(Sender: TObject); //override;
    procedure prxButtonCerrarClick(Sender: TObject);
    procedure prxButtonAplicarClick(Sender: TObject);
    procedure prxDBFiltradorTreeView1EscapePressed(Sender: TObject);
    procedure ButtonRESETEARClick(Sender: TObject);
    procedure prxCheckListBoxCAMPOSKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    FDataSet: TDataSet;
    FFieldList: TStringList;

    FInFilter_FieldName_List: TStringList;
    FInFilter_Operation_List: TStringList;
    FInFilter_FieldValue_List: TStringList;
  protected
    procedure   FilterDecode;
    procedure   PrintFields(Sender: TObject);

    property    FieldList: TStringList read FFieldList write FFieldList;
    property    InFilter_FieldName_List: TStringList read FInFilter_FieldName_List write FInFilter_FieldName_List;
    property    InFilter_Operation_List: TStringList read FInFilter_Operation_List write FInFilter_Operation_List;
    property    InFilter_FieldValue_List: TStringList read FInFilter_FieldValue_List write FInFilter_FieldValue_List;
  public
    property    DataSet: TDataSet read FDataSet write FDataSet;
  end;

Implementación

procedure FormShow(Sender: TObject)

Si la grilla estaba filtrada decodifica el filtro usando FilterDecode.

Además, imprime la lista de campos con PrintFields.

procedure FilterDecode

Si la grilla estaba filtrada decodifica el filtro.

procedure PrintFields(Sender: TObject)

Imprimie los campos del dataset de la grilla.

procedure prxButtonCerrarClick(Sender: TObject)

Cierra el form.

procedure prxButtonAplicarClick(Sender: TObject)

Llamado cuando presionan el botón de Aplicar, arma el filtro en una variable S y lo aplica al dataset con:

DataSet.Filtered := False;
DataSet.Filter   := S;

if Trim(DataSet.Filter) <> '' then
   DataSet.Filtered := True
else
   DataSet.Filtered := False;
end;

procedure prxDBFiltradorTreeView1EscapePressed(Sender: TObject)

Captura el ESCAPE en el teclado y cierra el form.

procedure ButtonRESETEARClick(Sender: TObject)

Ejecutado cuando presionan el botón de Resetear desmarca todos los campos.

Uso

Tiene un solo uso, en TfvsDBGrid.LocalOnKeyDown:

var
  vF: TTprxADODataSet_Options_FiltroQBEForm;
begin
  inherited;
  if Key = VK_F7 then
     begin
     vF         := TTprxADODataSet_Options_FiltroQBEForm.Create(Self);
     vF.DataSet := DataSource.DataSet;
     vF.ShowModal;
     vF.Release;
     end

Uso

Este filtro se usa en: