Работа с контролата CommonDialog
Контролът CommonDialog позволява на разработчиците на приложения да доближат дизайна и интерфейса на своята програма до стила, използван в Windows.
Тъй като често трябваше да се справям с проблем, свързан с използването и работата на контролата CommonDialog и наскоро получих редица писма с въпроси относно използването му, реших да споделя това, което знам с всички. Ще се опитам да дам отделни отзиви за използването на всеки диалогов прозорец.
Преди да започнете, изберете контролата Microsoft Common Dialog Control 6.0 от менюто Project Components. В лентата с инструменти ще се появи икона за имейл. CommonDialog контроли.
Като поставите имейл във формуляра си. контрол CommonDialog, получавате възможността да извиквате прозорци като:
1. Отворете диалогов прозорец;
2. диалогов прозорец Запазване като;
3. Цветен диалогов прозорец;
4.Диалогов прозорец за шрифтове;
5. Диалогов прозорец за печат;
Изборът на един или друг тип диалогов прозорец става чрез задаване на подходящата стойност на свойството Action или чрез използване на подходящия метод.
Отворете диалогов прозорец
За да извикате диалоговия прозорец Open, трябва да зададете свойството CommonDialog 1. Action на 1 или да използвате метода ShowOpen. Но преди да се появи пълноценен прозорец на Windows пред вас Open, трябва да зададете редица свойства.
1. Задайте първоначалната директория, която ще се отваря при извикване на CommonDialog 1 -a.
CommonDialog1.InitDir = "C:\Моите документи"
Ако не зададете това свойство, последно използваната от вас директория ще се отвори по подразбиране.
2. Задайте типа на файловете, които диалоговият прозорец за отваряне ще показва. За да направим това, ние декларираме низова променлива strFileType и я присвояваменеобходими стойности.
Dim strFileType като низ
strFileType = "Всички файлове (*.*)*.*"
strFileType = StrFileType & " Документи на Word ( *.doc )*.doc "
strFileType = StrFileType & „Текстови файлове (*.txt)*.txt“
След това присвояваме стойността на свойството Filter, CommonDialog, на променливата strFileType.
Забележка. Не включвайте интервали преди и след разделителите, в противен случай няма да получите посочените от вас файлове.
Задайте филтъра по подразбиране, като изберете Word Documents за това.
CommonDialog 1.FilterIndex = 2
Когато отворите диалоговия прозорец Отваряне в текстовото поле „Файлове от тип“, ще видите Word Documents (*.doc).
3. Накрая показваме диалоговия прозорец Отваряне.
CommonDialog 1. ShowOpen
Естествено, тъй като сте извикали диалоговия прозорец Отваряне, трябва да го използвате по предназначение, т.е. изберете желания файл и го отворете. Изборът на файл става по същия начин, както при Windows - e , но за да продължите да работите, трябва да прехвърлите пътя и името на избрания от вас файл в програмата. За тази цел има две свойства на CommonDialog 1-a:
CommonDialog 1. FileTitle - връща името на избрания файл с разширение (напр. " Hello . doc " );
CommonDialog 1. FileName - връща пътя до избрания файл (напр. "C:\My Documents\Hello.doc" );
Познавайки тези данни, можете да извършите съответните операции върху избраните файлове.
Сега е необходимо да защитите програмата от нежелани потребителски действия.
Какво може да направи потребителят?
1. Въведете несъществуващ файл или произволни символи и натиснете клавиша Отвори;
2. Без да избирате файл, натиснете клавиша Отвори;
За да предотвратите подобни действия, свойството Flagsзадайте необходимата константа.
cdlOFNFileMustExist Указва, че потребителят може да въвежда само съществуващи имена на файлове, ако флагът е зададен и потребителят въведе невалидно име на файл, се показва предупреждение. Този флаг автоматично задава флага cdlOFNPathMustExist.
Внимание. Диалоговият прозорец Отваряне съдържа квадратче за отметка, за да активирате опцията „Отваряне само за четене“. Няма да обмисляме да работим с този флаг, така че ще добавим още една константа, която ще го премахне от панела на диалоговия прозорец.
cdlOFNHideReadOnly - Прави радио бутона само за четене невидим.
И сега свойството Flags ще изглежда така.
CommonDialog1.Flags = CdlOFNFileMustExist или CdlOFNHideReadOnly
3. Без да избирате файл, натиснете клавиша Отказ;
4. Изберете файла и натиснете клавиша Отказ;
За да предотвратим възникването на грешка по време на тези потребителски действия, ние допълваме горния код с манипулатор на грешки. Трябва да се отбележи, че самият диалогов прозорец трябва да генерира грешка, за това задайте свойството CommonDialog 1. CancelError на True. Сега натискането на клавиша Отказ ще генерира грешка 32755 - Избран е Отказ.
CommonDialog 1. CancelError = True
Сега нека компилираме всичко по-горе в подреден код:
Частен под mnuOpen_Click()
„Декларирайте низова променлива, за да присвоите типове файлове
Dim strFileType като низ
„Ако възникне грешка, т.е. потребителят натисне клавиша Отказ,
'отидете до манипулатора на грешки - ErrorHandler
При грешка GoTo ErrorHandler
„Осигурете генериране на грешка
CommonDialog 1. CancelError = True
„Инициализиране на низова променлива strFileType
strFileType = "Всички файлове (*.*)*.*"
strFileType = StrFileType & „Документи на Word (*.doc) *.doc“
strFileType = StrFileType & „Текстови файлове (*.txt)*.txt“
„Присвоете го на свойството Filter
CommonDialog 1. Филтър = strFileType
'Задайте необходимия индекс
CommonDialog 1.FilterIndex = 2
'Присвояване на началната директория на свойството InitDir
„Осигуряваме защита срещу неправилно въведен файл или директория, както и скриваме флаговете Само за четене
CommonDialog1.Flags = cdlOFNFileMustExist или cdlOFNH >
'Извикайте диалоговия прозорец Отваряне
CommonDialog1.Action = 1 'Или CommonDialog1.ShowOpen
„Вашият код се намира тук. (не забравяйте, че сте прочели пътя до избрания файл от свойството FileName)
„Обработка на прихванати грешки
Ако ErrNumber = 32755 Тогава
Диалоговият прозорец за отваряне вече е напълно работещ.
Ако искате да експериментирате с диалоговия прозорец Отваряне, ето константите, които можете да присвоите на свойството Flags.
Указва поле със списък с имена на файлове, позволява множество селекции. Потребителят може да избере повече от един файл. Имената на избраните файлове се връщат от свойството FileName на низовата променлива и са разделени с интервали. Забележка. Не се поддържат дълги имена на файлове (само 8 букви)
Указва, че диалоговият прозорец подканва потребителя да създаде файл, който в момента не съществува. Този флаг автоматично задава флаговете cdlOFNFileMustExist и cdlOFNPathMustExist.
Указва, че потребителят може да въвежда имена само на съществуващи файлове, ако флагът е зададен и потребителят въведе невалидно име на файл, се показва предупреждение. Този флаг автоматично задава флагаcdlOFNPathMustExist.
Указва, че потребителят може да въведе само валиден път, ако флагът е зададен и потребителят въведе невалиден път, се показва съобщение.
Указва, че разширението на върнатия файл (когато е записано) е различно от разширението, указано в свойството DefaultExt. Флагът не е зададен, ако свойството DefaultExt е Null (празно), ако разширенията съвпадат или ако файлът няма разширение. Стойността на флага може да се провери след затваряне на диалоговия прозорец.
Прави радиобутона Само за четене невидим.
Указва, че върнатият файл няма да има атрибути ReadOnly и няма да бъде защитен от запис.
Кара бутона за избор само за четене да бъде отметнат, когато диалоговият прозорец е отворен.Флагът също така показва състоянието на бутона за избор само за четене, когато диалоговият прозорец е затворен.
Принуждава диалоговия прозорец да зададе текущата директория на тази, в която е била при последното отваряне.
Указва, че диалоговият прозорец позволява невалидни знаци в името на върнатия файл.
Кара диалоговия прозорец Запиши като да генерира блок съобщение, ако избраният файл вече съществува, потребителят трябва да потвърди, за да презапише стария с новия файл.
Указва, че грешките при нарушаване на споделянето ще бъдат игнорирани.
Кара диалоговия прозорец да покаже бутон за помощ.
Указва външния вид на диалоговия прозорец, подобен на Windows 95 Explorer (само за Windows 95)
Прави необратими икони (връзки за повикване). (само за Windows 95)
Позволява на потребителя да използва дълги имена на файлове. (само за Windows 95)