"style" was a lazy word and incomplete way to explain, sorry.
it's been a while, but from what I remember, the advantages of using DISPLAY as a proxy PICK FROM are:
the title bar will have the name of the query.. which looks more professional, rather than "makes selections and continue" or whatever the fixed title bar text is for the PICK FROM dialog
if instances themselves have an edit button, then they can be edited on the fly "cleanly"
..."cleanly" means:
...a.) the Edit button of an instance is clicked and its form opens (if popup output) or the pick from dialog closes and the form opens wherever output is directed
...b.) if edit form opens in popup, when it is saved and closed the pick from dialog query will update and control will return to it allowing the user to resume picking
but if editing an instance on the fly from the PICK FROM dialog, the following happens:
...a.) the Edit button of an instance is clicked and its form opens (if popup output), but if non-popup output, then a system dialog appears asking if you want to abort the current operation = impractical to use it for this purpose
...b) if edit form opens in popup, when it is saved the PICK FROM dialog closes. but the edit form stays open EVEN IF it is set to close following save. if the user clicks Save again, they get a system error message, thus they have to click Cancel to close it. Then they have to click the original button on the form to redisplay the PICK FROM query
something i recalled in relation to using DISPLAY as a proxy PICK FROM, is you can avoid having to work out the JS to close the dialog after the user clicks the process button (which is applicable to multiple items) which updates their selections in a Regular User user attribute for later processing. of course they could always click the Close button after clicking the 'Process Selections' process button, but this is not a good UX.
a JS free and elegant way is:
- the DISPLAY-proxy-pick-from dialog only has a CLOSE button... to close the query. Crucialy it is not labelled 'Cancel' which would suggest selections will be voided. Close implies that inline 'live' changes will be retained.
- don't place a process button on the dialog panel
- instead, add an item operation so each instance has a process button which when clicked runs a process to change the attribute serving as the 'IsSelected' flag
- IF the flag method you're using is not to have a reference attribute in System Settings or Regular User, but having an attribute of the Object itself which is the dedicated flag for the selected status in that particular circumstances, then you can also have an Applicability Condition on the item operation so it doesn't appear when it is selected
4b. there would be a duplicate item operation which does appear when it is selected
4c. the two buttons can be styled so the user sees two distinct buttons for selected or unselected instances
- this technique has the effect of the selections being 'live'/instant and more inline with how selections are made in most applications nowadays. no longer in applications do you click a whole lot of checkboxes, radio buttons , etc. and then click a button to process them.
- if selections are 'live' then it is natural for the user to click Close to close the query
- then the originating process continues and processes instances per the IsSelected attribute of the Object which is specific to the current activity
- if you style the select and unselect buttons, it can work pretty smooth
_____________________________
OR, if using a flag attribute on the object, another way to do it is to display the IsSelected attribute (make it yes/no type) which will display as a dropdown or switch. make the query inline editable and make the IsSelected attribute editable, and the user will be able to click the dropdown and change from blank to Yes. When they leave the attribute the change will be saved.
This saves running a process every time the user clicks an item operation button
OR, you can have an attirbute on the object whose instances are being selected from, whose value is html for a an input tag of type checkbox, which will display a checkbox in the query, which when checked/unchecked a process can run to update the IsSelected flag.
OR, you can just use a Custom Query for complete flexibility.