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 WriteLn('File : '+openDialog.FileName)
else WriteLn('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 WriteLn('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
|
|