TTprxADODataSet Options FiltroIncrementalForm

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

Descripción

El form TTprxADODataSet_Options_FiltroIncrementalForm (Filtro incremental F1) permite filtrar una grilla (sobre una columna) con dos opciones:

  • Ingreso de texto incremental posicionando el cursor sobre el primer registro que comienza con esas letras:
Búsqueda incremental.
  • Ingreso de texto y filtrando por los registros que incluyen ese texto (hay que marcar el campo "Conteniendo"):
Filtrado.

El form se invoca picando la tecla F1 sobre la columna de la grilla TfvsDGBrid que queremos filtrar.

Identidad

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

Declaración

type
  TTprxADODataSet_Options_FiltroIncrementalForm = class(TTfvsForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    ComboBox_COLUMNAS: TComboBox;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Panel11: TPanel;
    Button1: TButton;
    EditTEXTO: TEdit;
    CheckBox_Conteniendo: TCheckBox;
    ButtonRESET: TButton;
    procedure FormShow(Sender: TObject);
    procedure EditTEXTOKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure EditTEXTOChange(Sender: TObject);
    procedure CheckBox_ConteniendoClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure ComboBox_COLUMNASSelect(Sender: TObject);
    procedure ButtonRESETClick(Sender: TObject);
  private
    FGrid: TDBGrid;
    FColumn: TColumn;

    Fdataset_filtered: Boolean;
    Fdataset_filter: String;

    FADOFilter: TprxADODataSet_Options_Busqueda;
    FRefreshing: Boolean;
  protected
    function    SelectedColumn: TColumn;

    property    dataset_filtered: Boolean read Fdataset_filtered write Fdataset_filtered;
    property    dataset_filter: String read Fdataset_filter write Fdataset_filter;
    property    ADOFilter: TprxADODataSet_Options_Busqueda read FADOFilter write FADOFilter;

    property    Refreshing: Boolean read FRefreshing write FRefreshing;
    property    Column: TColumn read FColumn write FColumn;
  public
    property    Grid: TDBGrid read FGrid write FGrid;
  end;

property Grid: TDBGrid read FGrid write FGrid;

Inicializado con la grilla que llamó al form.

function SelectedColumn: TColumn

Retorna la columna seleccionada.

Implementación

procedure EditTEXTOChange(Sender: TObject)

Cada vez que se cambia el texto del control de edición:

  • Si estamos haciendo una búsqueda incremental intenta localizar un registro en la grilla que comience con el texto ingresado, el comando es:
if (Trim(EditTEXTO.Text) <> '') and (CheckBox_Conteniendo.Checked = False) then
    begin
    Grid.DataSource.DataSet.Locate(Column.FieldName, EditTEXTO.Text, [loPartialKey]);
    end
  • Si estamos filtrando lo hace con:
else
if Trim(EditTEXTO.Text) <> '' then
   begin
   if Grid.DataSource.DataSet.Filtered then
      Grid.DataSource.DataSet.Filtered := False;

   Grid.DataSource.DataSet.Filter   := Column.FieldName + ' LIKE ' + Q('%' + EditTEXTO.Text + '%');
   Grid.DataSource.DataSet.Filtered := True;
   end

Uso

Este filtro se usa en: