| 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 
 
 |  
 
 |