If you want to reuse the RecordSet for filtering in RecordGrid, what you need will just create your own RecordFilter and apply it to RecordGrid.records, which is a RecordView generated from RecordGrid.record-source internally.
Here is a sample for you:
{curl 5.0, 6.0 applet}
{let people:RecordSet =
{RecordSet
{RecordFields
{RecordField
"First", caption = "first name", domain = String
},
{RecordField
"Last", caption = "last name", domain = String
},
{RecordField
"Age", caption = "age", domain = int
}
},
{RecordData First = "John", Last = "Smith", Age = 25},
{RecordData First = "Jane", Last = "Smith", Age = 29},
{RecordData First = "Jane", Last = "Jones", Age = 28},
{RecordData First = "Ben" , Last = "Abrams", Age = 5},
{RecordData First = "Sam" , Last = "Jones", Age = 6},
{RecordData First = "Nigel" , Last = "Stevens", Age = 7},
{RecordData First = "Bert" , Last = "Stevens", Age = 8},
{RecordData First = "Pat" , Last = "Linden", Age = 9},
{RecordData First = "Mat" , Last = "Abrams", Age = 10},
{RecordData First = "John" , Last = "Rogers", Age = 11},
{RecordData First = "Dan" , Last = "Abrams", Age = 12},
{RecordData First = "Chris" , Last = "Abrams", Age = 13},
{RecordData First = "Glenn" , Last = "Abrams", Age = 14},
{RecordData First = "Doug" , Last = "Jones", Age = 15},
{RecordData First = "Susan" , Last = "Rogers", Age = 16},
{RecordData First = "Joan" , Last = "Smith", Age = 17},
{RecordData First = "Tom" , Last = "Frankel", Age = 18},
{RecordData First = "Sarah" , Last = "Frankel", Age = 19},
{RecordData First = "John" , Last = "Jones", Age = 20},
{RecordData First = "Pam" , Last = "Frankel", Age = 21}
}
}
{let rg:RecordGrid =
{RecordGrid
record-source = people, height = 5cm, width = 16cm,
column-selection-enabled? = true
,
filter-menu-proc =
{proc {array:{Array-of MenuItem}, cell:RecordGridCell}:{Array-of MenuItem}
{array.clear}
{array.append
{MenuAction
label = "customized-filter",
{on Action do
{let fld-name:DropdownList = {DropdownList "First", "Last"}}
{let filter-cond:TextField = {TextField}}
{popup-message
{VBox
{HBox "Field Name", fld-name},
{HBox "data containing this string:", filter-cond}
}
}
let rf:RecordFilter =
{RecordFilter
{proc {r:Record}:bool
{if {r[http://fld-name.value|http://fld-name.value].find-string
filter-cond.value} != -1 then
{return true}
else
{return false}
}
}
}
{set rg.records.filter = rf}
}
}
}
{return array}
}
}
}
{VBox
rg
}
Message was edited by: tdeng