You can make several enhancements to the Selector form, depending on how you want to use it. You could allow the user to select more than one record at a time in the result grid. In that case, you would want to modify the flxResults_DblClick event handler so it sent data from all of the selected rows to the RecordSelected event handler.
You might allow the user to click on the result grid's column headers to sort the list by the values in that column. You can use the MSFlexGrid's MouseUp event to tell when to sort the values. Use its Sort property to make the control sort the values.
Another enhancement I have made in some projects is to save the form's latest configuration information in the Registry. When the user closes the form, you save the form's size and position in the Registry. When the form loads, you restore those values so the form appears where the user left it.
You can also save and restore the field names, operators, and values entered in the form's Query Values area. If you save and the result grid's column widths, you can restore them in case the user resizes some of the columns. These additions are particularly useful if the users typically perform the same query day after day.
In one application I built, the table being queried contained so many fields that it was hard to see them all at the same time in the result grid. To make viewing the data easier, I added a configuration form in which the users could select and order the fields displayed in the grid. Then, they saw only the fields they thought were the most important and the rest were hidden.
For large databases, you might want to limit the number of items displayed in the list. You don't want to display every record if the query finds a million matches. That would take a long time, might use up all of your computer's memory, and wouldn't be very useful to the user anyway.
If you do display only a fraction of the records selected, you'll have to modify your sorting method if you provide one. You cannot let the grid control do the sorting because the first records in one order might not make the cut in another order. In this case, you might want to give the user more explicit control over the form's ORDER BY clause.