Diferencia entre revisiones de «TTprxADODataSet Options FiltroIncrementalForm»
Ir a la navegación
Ir a la búsqueda
Sin resumen de edición |
|||
| Línea 8: | Línea 8: | ||
El form se invoca picando la tecla F1 sobre la columna de la grilla [[TfvsDGBrid]] que queremos filtrar. | El form se invoca picando la tecla F1 sobre la columna de la grilla [[TfvsDGBrid]] que queremos filtrar. | ||
=[[QUEESESTO/IDENTIDAD|Identidad]]= | =[[QUEESESTO/IDENTIDAD|Identidad]]= | ||
[[Category:MANUAL/PROGRAMADOR]] | [[Category:MANUAL/PROGRAMADOR]] | ||
| Línea 15: | Línea 14: | ||
*Carpeta: C:\DevelopPrx\library | *Carpeta: C:\DevelopPrx\library | ||
*Archivo: prxADODataSet_Options_FiltroIncrementalForm.pas | *Archivo: prxADODataSet_Options_FiltroIncrementalForm.pas | ||
=Declaración= | |||
<pre> | |||
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; | |||
</pre> | |||
===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: | |||
<pre> | |||
if (Trim(EditTEXTO.Text) <> '') and (CheckBox_Conteniendo.Checked = False) then | |||
begin | |||
Grid.DataSource.DataSet.Locate(Column.FieldName, EditTEXTO.Text, [loPartialKey]); | |||
end | |||
</pre> | |||
*Si estamos filtrando lo hace con: | |||
<pre> | |||
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 | |||
</pre> | |||
Revisión del 19:18 29 may 2025
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:

- Ingreso de texto y filtrando por los registros que incluyen ese texto (hay que marcar el campo "Conteniendo"):

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