Для выполнения часто встречающихся задач (выбор имени файла, выбор файла изображения, выбор шрифта, цвета, настройки принтера, поиска и замены) используются системные диалоги, размещенные на вкладке Dialogs палитры компонентов.
Для их использования достаточно поместить компонент на форму и в нужном обработчике с помощью метода Execute показать диалог и выполнить нужные действия.
Операции по выбору имени файла выполняются так часто, что в модуле Dialogs имеется функция PromptForFileName, являющаяся по сути дела удобной оболочкой неявного использования диалога выбора имени файла.
Пример 9.10. Функция PromptForFileName
function PromptForFileName(var AFileName: string; const AFilter: string = ''; const ADefaultExt: string = ''; const ATitle: string = ''; const AInitialDir: string = ''; SaveDialog: Boolean = False): Boolean; var Dialog: TOpenDialog; begin if SaveDialog then begin Dialog := TSaveDialog.Create(nil); Dialog.Options := Dialog.Options + [ofOverwritePrompt]; end else Dialog := TOpenDialog.Create(nil); with Dialog do try Title := ATitle; DefaultExt := ADefaultExt; if AFilter = '' then Filter := SDefaultFilter else Filter := AFilter; InitialDir := AInitialDir; FileName := AFileName; Result := Execute; if Result then AFileName := FileName; finally Free; end; end;
В том случае, когда необходимо предоставить пользователю какие-либо дополнительные настройки при работе с диалогом, разрабатывают системный диалог, наследуемый от стандартного, но обладающий какими-либо дополнительными элементами управления.
Ярким примером такого диалога является TOpenPictureDialog, который в отличие от диалога TOpenDialog снабжен панелью предварительного просмотра файла.