Mega Code Archive

 
Categories / Delphi / Types
 

Topendialog - displays a file selection dialog

type TOpenDialog; Description The TOpenDialog is a visual component. It is used to allow a user to select one or more files to open. It can be defined by dragging the open dialog icon from the Dialogs tab in Delphi, or by defining a TOpenDialog variable. The TOpenDialog can be configured to suit your needs. When using it, you would proceed along the following steps: Creating the dialog object You define a TOpenDialog variable, and then assign a new TOpenDialog object to it: var openDialog : TOpenDialog; begin openDialog := TOpenDialog.Create(self); Note that the dialog must have an anchor - here we provide the current object - self - as the anchor. Setting options Before displaying the dialog, you are likely to configure it to your needs by setting the dialog properties. Here are the main properties: Title property Used to set the caption for the dialog. FileName property Gives a default file name to open. (Otherwise, the file name field is blank). When returning from the dialog, if the user has hit OK, this property will contain the (first) selected file name, including its full path (see the first example). Filter property This allows only certain file types to be displayed and selectable. The filter text is displayed in a drop down below the file name field. The following example selects for text files only: openDialog.Filter := 'Text files only|*.txt'; The drop down dialog shows the description before the | separator. After the separator, you define a mask that selects the files you want. openDialog.Filter := 'Text and Word files only|*.txt;*.doc'; Above we have allowed two different file types, separated by a ;. openDialog.Filter := 'Text files|*.txt|Word files|*.doc'; Above we have allowed text and Word files as two options in the drop down list. FilterIndex property Defines which (starting at 1) of the drop down filter choices will be displayed first. InitialDir property Sets the starting directory in the dialog. Options property This is a set of TOpenOptions flags. These are quite extensive. The key values are: ofReadOnly Opens the file for read only ofFileMustExist Only existing file may be opened ofAllowMultiSelect User can select 2 or more files Displaying the dialog We now call a method of TOpenDialog: if openDialog.Execute then ... Execute returns true if the user selected a file and hit OK. You can then use the selected file: Finishing with the dialog The selected file or files are obtained using the following properties: FileName property This holds the full path plus file name of the selected file Files property This holds the full path plus file name of the a multiple file selection. The file names are held in the returned TStrings value (see the TStringList for more on string lists). Finally, we must free the dialog object: openDialog.free; Related commands Append Open a text file to allow appending of text to the end AssignFile Assigns a file handle to a binary or text file PromptForFileName Shows a dialog allowing the user to select a file Reset Open a text file for reading, or binary file for read/write TSaveDialog Displays a dialog for selecting a save file name TStringList Holds a variable length list of strings Example code : Illustrating single file selection var openDialog : TOpenDialog; // Open dialog variable begin // Create the open dialog object - assign to our open dialog variable openDialog := TOpenDialog.Create(self); // Set up the starting directory to be the current one openDialog.InitialDir := GetCurrentDir; // Only allow existing files to be selected openDialog.Options := [ofFileMustExist]; // Allow only .dpr and .pas files to be selected openDialog.Filter := 'Delphi project files|*.dpr|Delphi pascal files|*.pas'; // Select pascal files as the starting filter type openDialog.FilterIndex := 2; // Display the open file dialog if openDialog.Execute then ShowMessage('File : '+openDialog.FileName) else ShowMessage('Open file was cancelled'); // Free up the dialog openDialog.Free; end; Show full unit code An open file dialog is displayed with two drop down filter choices: Delphi project files Delphi pascal files - this is displayed at the start The dialog is positioned to the current directory (which will be the Delphi project directory if running the code from within Delphi). If you select a file, such as 'Unit1.pas' then it is displayed in the ShowMessage dialog like this: File : C:\Program Files\Borland\Delphi7\Projects\Unit1.pas Example code : Selecting multiple files var openDialog : TOpenDialog; // Open dialog variable i : Integer; begin // Create the open dialog object - assign to our open dialog variable openDialog := TOpenDialog.Create(self); // Set up the starting directory to be the current one openDialog.InitialDir := GetCurrentDir; // Allow multiple files to be selected - of any type openDialog.Options := [ofAllowMultiSelect]; // Display the open file dialog if not openDialog.Execute then ShowMessage('Open file was cancelled') else begin // Display the selected file names for i := 0 to openDialog.Files.Count-1 do ShowMessage(openDialog.Files[i]); end; // Free up the dialog openDialog.Free; end; Show full unit code An open file dialog is displayed. Select a few files using mouse drag or CTRL-click. When you press OK, the selected files are shown. Like this: C:\Program Files\Borland\Delphi7\Projects\Unit1.dcu C:\Program Files\Borland\Delphi7\Projects\Unit1.pas