Jump to content

UniDbGrid - Clean Title Filter Columns from Button


TSeba

Recommended Posts

Hi:

 

I need to delete from the OnClick event of a TUniButton filters the columns of a UniDbGrid.

I'm using Tokyo 10.2. The grid with data I can restore it without filters but I can't delete the texts entered in the filters of the columns.

 

Thank you in advance for your help.

Link to comment
Share on other sites

Hi, 

I hope I can clarify what I need

I'm using a UniFormGrilla. When loading the grid that is associated with an advantage table, filters are automatically generated for each column by executing the following procedure:

 

Var

  I: Integer;

  VTUniEdtTemp: TUniEdit;

Begin

  For I: = 0 to UniDbGdDatos.Columns.Count - 1 of

  Begin

    If (UniDbGdDatos.Columns .FieldName <> 'Company') then

    Begin

        VTUniEdtTemp: = TUniEdit.Create (Self);

        VTUniEdtTemp.Parent: = UniHiPnFilters;

        VTUniEdtTemp.EmptyText: = UniDbGdDatos.Columns .FieldName + '...';

        VTUniEdtTemp.Name: = 'UniEdt' + UniDbGdDatos.Columns .FieldName;

        UniDbGdDatos.Columns .Filtering.Editor: = vTUniEdtTemp;

        UniDbGdDatos.Columns .Filtering.Enabled: = true;

    End

    Else

      Begin

       UniDbGdDatos.Columns .Visible: = false;

      End;

  End;

End;

 

In summary, I need to be able to simulate at runtime the JS function that is executed by pressing the button dgFilterCrearButton but from another Button?.

 

Regards.
Link to comment
Share on other sites

Hi, 

 

It is correct what I say but that does not delete the filters that is what I am missing.
I tested by adding the following inside the Clean Button:
 
UniSession.AddJS (UniDbGdDatos.JSName + '.store.clear ();');
 
But at runtime I get the error "XXXX.store.clear is not a function". That JS code is what I'm missing seems to me.
 
Regards.
  • Upvote 1
Link to comment
Share on other sites

Yes, I saw that example and to see if I can be clearer I copy the procedure to clean the filters:

 

Procedure TMainForm.UniDBGrid1ClearFilters (Sender: TObject);

Var

  I: Integer;

Begin

  If UniMainModule.ADOQuery1.Active then

  Begin

    For I: = 0 to UniMainModule.ADOQuery1.Parameters.Count-1

      UniMainModule.ADOQuery1.Parameters .Value: = '%%';

 

    UniMainModule.ADOQuery1.Requery;

  End;

End;

 

Suppose I comment on the whole procedure:

 

Procedure TMainForm.UniDBGrid1ClearFilters (Sender: TObject);

Var

  I: Integer;

Begin

  {If UniMainModule.ADOQuery1.Active then

  Begin

    For I: = 0 to UniMainModule.ADOQuery1.Parameters.Count-1

      UniMainModule.ADOQuery1.Parameters .Value: = '%%';

 

    UniMainModule.ADOQuery1.Requery;

  End; }

End;

 

When you press the delete button on the left, and as the procedure is commented, the grid information is obviously not restored, but the texts entered in the columns are deleted. This behavior, the one to delete the texts of the columns, is what I have to replicate from a TButton.

 

I think it has nothing to do but I am not using Querys but I use AdsTables.

 

Regards.

Link to comment
Share on other sites

Hi. I was able to clean the filter from a TButton by simple iterate over them and set the text to ''. But a strange things happen.

 

Lets say I filter the first column with the value 1. Works like a charm. Now, I use the UniButton to clear all the filter and refresh the grid. Also Works like a charm. The issue begin when I want to set the filter to the first column again, if I put a value different from the original value I entered (1 in this case) it works, but if I use 1 again, it doesn't work until I type another value.

 

Is like the filter keep remembering the original value and the event doesn't get executed.

Link to comment
Share on other sites

Hi, 

 

I've change the GridsFilter demo.

You can add a button, and put the next code on the OnClick event:

 



procedure TUniGridsFilter.UniButton2Click(Sender: TObject);
begin
UniDBGrid1ClearFilters(self);
UniEdit1.Text := '';
end;


 

of course, this will only work with the first filter.

 

After you run the project, filter the first column, let's say with the letter "Z". 

 

The filter works.

 

Click on the new button, and the filter will disappear. 

 

If you put "Z" again on the first filter it will not work.

 

 

By the way, another related question. ¿It is posible to call the dgFilterClearButton event with Javascript?

 

Regards

Link to comment
Share on other sites

  • 5 years later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...