` Dynamic filtering on browse (Jerry Norman) - Icetips Article
Icetips - Templates, Tools & Utilities for Clarion Developers

Templates, Tools and Utilities
for Clarion Developers

Icetips Article

Back to article list   Search Articles     Add Comment     Printer friendly     Direct link  

ABC: Dynamic filtering on browse
1998-08-08 -- Jerry Norman
 
Newsgroups: comp.lang.clarion >I am using C4 with the ABC templates. I have a list box that displays >all employees to begin with. At the top of the list box (actually on >the window) I have two sets of radio buttons taht allows the user to >select All, Employees or Subcontractors (LOC:Type) and (second >selection) Active, Inactive, and Terminated (LOC:Status). When either >one of these options are changed the list box stays the same. > >In C4 with the Legacy templates when one of the options was selected I >would Set the filter variable (LOC:Type and LOC:Status) to the correct >value, ForceRefresh = True, Do RefreshWindow, and Select(?Browse:1). I >would put all of the necessary code in the Validate-Filter Routine to >process each record against the settings of the local variables. If the >filter was false I would exit out of the Validate-Filter Routine and the >record would not be displayed. If the filter was true the record would >be displayed. > >How do I accomplish this in C4 with the ABC templates. Or is there a >better way to do this? It took me a while to figure this out but here's what is working very well for me. I had problems getting the radio buttons to work (C4b bug?) so I created my own alternative using three checkboxes with icons. For each check box I have true value = 1 and false = 0. In the Accessed embed for each check box I have code like this: Loc:WhseNoFltBurl=0 !Unlatches this unselected "radio button" Loc:WhseNoFltFlue=0 !Unlatches this unselected "radio button" BRW3.ApplyFilter ThisWindow.Reset(1) In the ApplyFilter embed for the browse I am filtering I have the following code: IF Loc:WhseNoFltAll=1 THEN BRW3.SetFilter('','2WhseNo') END IF Loc:WhseNoFltFlue=1 THEN BRW3.SetFilter('BUS:WAREHOUSE_NO >= ''10000'' AND BUS:WAREHOUSE_NO <<= ''10999''','2WhseNo') END IF loc:WhseNoFltBurl=1 THEN BRW3.SetFilter('BUS:WAREHOUSE_NO > ''30999'' AND BUS:WAREHOUSE_NO << ''32000''','2WhseNo') END On this same browse I also have two other standard check boxes for additional filters, Xplore for changing sort order and Query Wizard for additional adhoc queries. Using this technique they all work together perfectly in any combination. I also use GETINI and PUTINI to persist the filter settings between sessions. HTH.


Today is November 21, 2024, 3:55 am
This article has been viewed 35387 times.
Google search has resulted in 34 hits on this article since January 25, 2004.



Back to article list   Search Articles   Add Comment   Printer friendly

Login

User Name:

Password: