Navigation:  Операторы создания пользовательского интерфейса >

FILEDIALOG - Выбор файла

Previous pageReturn to chapter overviewNext page

Выбрать файл:

 filedialog [заголовок] ,файл [,расширения] [,индекс] [,флаг(и)]

  заголовок        - Строковая константа с текстом заголовка, который будет размещен в диалоге. Если параметр опущен, то заголовок по умолчанию заимствуется у Windows.

  файл                - Метка строковой переменной, которая получит выбранное имя (имена) файла (файлов).

  расширения        - Строковая константа, в которой для «List Files of Type» выпадающего окна списка - указываются желаемые расширения файлов. Если параметр опущен, то расширение по умолчанию - все файлы (*.*).

  индекс                - Знаковая целочисленная переменная используемая для выбора отличного от расширения по умолчанию, заданного номером индекса.

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

 

 

Процедура FILEDIALOG выводит на экран стандартное Windows-окно выбора файла и возвращает имя выбранного пользователем файла в переменной, указанной параметром файл. Значение параметра файл устанавливает выбор файла по умолчанию, предоставляемый пользователю в окне выбора.

FILEDIALOG выводит или стандартное для Windows окно Open... или стандартное окно Save... . По умолчанию открывается окно Open... , если такой файл не существует, пользователю выдается предупреждение и файл не открывается. В случае открытия окна Save... пользователь предупреждается о том, что такой файл уже есть и файл не сохраняется.

В строке параметра расширения должно присутствовать описание файла, за которым следует его маска. Элементы строки отделяются друг от друга символом вертикальной черты (|). Например, строка расширения:

'All Files | *.* | Clarion Source | *.CLW;*.INC;*.EQU;*.INT | Clarion Templates|*.TPL;*.TPW'

указывает три варианта выбора для окна списка List Files of Type. Первое указанное в строке расширения расширение файла будет расширением по умолчанию. Несколько расширений разделяются точкой с запятой (;).

 

Параметр флаг представляет собой битовый массив, в котором обозначаются действия, которые следует выполнить с файлом (см. мнемонические имена соответствия дли них в файле EQUATES.CLW. Для бита номер:

0        Если ноль (0000b),открывается диалог Open... .

1        Если единица (0001b), открывается диалог Save... .

2        Если два (0010b), сохраняется и восстанавливается путь к текущей директории.

4        Если 4 (0100b), сообщение об ошибке не появляется, если файл присутствует в Save... или не присутствует Open....

8        Если 8 (1000b), возвращение множественных выбранных значений, если пользователь выбирает несколько файлов. Когда используется диалог с длинными имена файлов, возвращается строка с разделенными вертикальной чертой (|) именами файлов (с полным путем в начале строки, если выбран не один файл, тогда как при выборе только одного файла возвращается имя файла с полным путем). При использовании диалога с короткими именами, имена файлов в строке разделяются пробелами. Не допустимо при использовании File:Save или File:Directory.

16        Если 16 (10000b), использование диалогов с длинными именами файлов в 32-битных программах.

32        Если 32 (100000b), вывод диалога выбора директории для выбора пути.

64        Если 64 (1000000b), и указанное или набранное имя файла не существует, диалог отображает подсказку для создания нового имени файла с данным именем. Если пользователь выбирает создание файла, FILEDIALOG завершает работу и возвращает набранное имя файла, в противном случае окно диалога остается открытым. Этот флаг не может быть указан совместно с флагом FILE:Directory.

128        Если 128 (10000000b), и указанное имя файла набрано без расширения, добавляется расширение по умолчанию. Расширение по умолчанию берется из первой маски для первой пары фильтра. При использовании мета-символов (* или ?) в расширении по умолчанию, флаг игнорируется. Флаг также игнорируется, если используются флаги FILE:Multi и FILE:Directory или оба вместе. Чтобы к имени файла не добавлялось расширение, при указании FILE:AddExtension, имя файла должно быть заключено в двойные кавычки (т.е. "myfile"). Из-за ограничения Windows, если расширение по умолчанию указано длиной более 3-х символов, то к имени файла добавляется только 3 первых символа.

 

 

Ниже представлен исчерпывающий пример этих флагов упрощенных до меток соответствия ( полный список  См.в EQUATES.CLW):

FILE:Save                EQUATE(1)

FILE:KeepDir                EQUATE(2)

FILE:NoError                EQUATE(4)

FILE:Multi                EQUATE(8)

FILE:LongName        EQUATE(10H)

FILE:Directory                EQUATE(20H)

FILE:CreatePrompt        EQUATE(40H)

FILE:AddExtension        EQUATE(80H)

 

Наконец, параметр индекс – знаковое целое используется для указания отличного от значения по умолчанию расширения в списке расширений. Например:

 

'All Files | *.* | Clarion Source | *.CLW;*.INC;*.EQU;*.INT | Clarion Templates|*.TPL;*.TPW'

 

Строка расширений содержит пары: <описание>|<маска> и параметр индекса указывающий такие пары. Поэтому, в примере выше, значение 2 индекса отобразит описание 'Clarion Source' и соответствующее расширение, значение 3 индекса отобразит 'Clarion Templates' и т.д.

 

FILEDIALOG устанавливает код ошибки в переменной [:FILEERRORCODE:], если в окне выбора пользователем была нажата кнопка Cancel, и сбрасывает код ошибки, если была нажата кнопка Ok. Если пользователь изменил путь к файлу, использованный в диалоговом окне, то текущий для ваше прикладной программы каталог тоже изменится (если только не установлен флаг FILE:KeepDir). Это свойство операционной системы Windows. Если нужно, чтобы пользователь мог просматривать другие каталоги и при этом текущий каталог прикладной программы не изменялся, сохраните перед выполнением процедуры FILEDIALOG путь к текущему каталогу с помощью функции PATH, а после выполнения FILEDIALOG снова восстановите его оператором SETPATH или установите флаг FILE:KeepDir.

 

Пример:

         FILEDIALOG 'Choose File to View',FileName,'Text|*.TXT|Source|*.CLW',FILE:LongName,FILE:KeepDir

 

 

См. также: PATH, SETPATH