In light of the Utility function being deprecated (as mentioned in this post) I was recently asked where the CHOOSEFILE and CHOOSEDIR methods had ended up. There was some discussion about this as the aforementioned article cited that they were moved to the SYSTEM object, and a case was made for moving them to the FILESYSTEM object instead.
In the end it was decided to move them to the FILESYSTEM object (as feedback indicated that was where they were expected to be), but to expose them from the SYSTEM object as well, meaning that we wouldn’t have to alter any existing code.
For future reference here are the official details of both methods:
FILESYSTEM CHOOSEDIR method
This method displays the common “Choose Folder” dialog box to allow a user to select a folder. It takes two arguments:
- The name of an owner window
- A @fm-delimited array of initialization data
<1> Dialog text <2> Initial folder to select <3> HideNewFolder flag: If TRUE$ then hide the "New Folder" button <4> ShowFiles flag: If TRUE$ then show files in the dialog as well as folders
The CHOOSEDIR method is basically a wrapper around the Windows SHBrowseForFolderfunction.
Example:
dlgOptions = "" dlgOptions<1> = "Please select the destination RDK folder" dlgOptions<2> = "c:\RevSoft\RDK" dlgOptions<3> = FALSE$ ; * // allow new folders dlgOptions<4> = FALSE$ ; * // don't show files folderName = Exec_Method( "FILESYSTEM", "CHOOSEDIR", @window, dlgOptions ) // This works too... folderName = Exec_Method( "SYSTEM", "CHOOSEDIR", @window, dlgOptions )
FILESYSTEM CHOOSEDIR method
This method displays the common “Choose File” dialog box to allow a user to open a folder. It takes two arguments:
- The name of an owner window
- A @fm-delimited array of initialization data
<1> Mode: If FALSE$ then show an "Open File" dialog, if TRUE$ then show a "Save As" dialog instead. <2> Filters: contains an "/" delimited list of filter items in the format: <displayText> "/" <filter> "/" Where <displayText> is the string to show in the filter dropdown list and <filter> is the string to apply to the selected folder. <3> Filter Index: Specifies the index of the filters in <2> to be displayed. <4> Default file name <5> OFN (OpenFileName) flags. This is a bitmask number specifying the flags to apply to the dialog. They are defined in the following insert record: MsWin_GetOpenFileName_Equates <6> Initial folder to select <7> Default extension: This is appended to the file name if the user fails to type an extension. This string can be any length, but only the first three characters are appended. The string should not contain a period (.). <8> Dialog title
The CHOOSEFILE method is a basically wrapper around the Windows GetOpenFileNamefunction.
Example:
$insert msWin_GetOpenFileName_Equates * // Create a filter string for common image files filters = "Bitmap Files (*.bmp;*.rle;*.dib)/*.bmp;*.rle;*.dib/" | : "GIF Files (*.gif)/*.gif/" | : "JPeg Files (*.jpg,*jpeg,*.jpe)/*.jpg;*jpeg;*.jpe/" | : "PNG Files (*.png)/*.png/" | : "All Files (*.*)/*.*/" * // Create a bitmask of flags ofnFlags = OFN_READONLY$ ofnFlags = bitOr( ofnFlags, OFN_HIDEREADONLY$ ) ofnFlags = bitor( ofnFlags, OFN_FILEMUSTEXIST$ ) dlgOptions = "" dlgOptions<1> = FALSE$ ;* // "Open" dlgOptions<2> = filters dlgOptions<3> = 4 ; * // Pre-select the PNG filter dlgOptions<4> = "example.png" dlgOptions<5> = ofnFlags dlgOptions<6> = ".\images" dlgoptions<7> = "" dlgOptions<8> = "Please select an Image" imageName = Exec_Method( "FILESYSTEM", "CHOOSEFILE", @window, dlgOptions ) * // This works too ... imageName = Exec_Method( "SYSTEM", "CHOOSEFILE", @window, dlgOptions )
(Disclaimer: This article is based on preliminary information and may be subject to change in the final release version of OpenInsight 10).