TTprxADODataSet Options FiltroQBEForm
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:

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:

Cuando aplicamos el filtro veremos la grilla filtrada:

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: