3. Системные диалоги

3.1. Общие сведения

Для выполнения часто встречающихся задач (выбор имени файла, выбор файла изображения, выбор шрифта, цвета, настройки принтера, поиска и замены) используются системные диалоги, размещенные на вкладке Dialogs палитры компонентов.

Для их использования достаточно поместить компонент на форму и в нужном обработчике с помощью метода Execute показать диалог и выполнить нужные действия.

Пример 9.9.

  if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);

Операции по выбору имени файла выполняются так часто, что в модуле 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;

3.2. Модификация существующего диалога

В том случае, когда необходимо предоставить пользователю какие-либо дополнительные настройки при работе с диалогом, разрабатывают системный диалог, наследуемый от стандартного, но обладающий какими-либо дополнительными элементами управления.

Ярким примером такого диалога является TOpenPictureDialog, который в отличие от диалога TOpenDialog снабжен панелью предварительного просмотра файла.

Рис. 5. Диалог открытия графических файлов

Рис. 9.5. Рис. 5. Диалог открытия графических файлов