Робота з елементом управління CommonDialog
Елемент управління CommonDialog дозволяє розробникам додатків максимально наблизити розробку інтерфейсу своєї програми до стилю застосовуваного в Windows.
Так, як мені часто доводилося стикатися з проблемою пов'язаної із застосуванням і роботою елемента управління CommonDialog і останнім часом отримував багато листів із запитаннями про його застосування, то вирішив поділитися з усіма тим, що знаю. Застосування кожного вікна діалогу постараюся дати окремими оглядами.
Перш ніж почати роботу виберіть в меню Project | Components керуючий елемент MicrosoftCommon Dialog Control 6.0. В панелі інструментів у вас з'явиться іконка ел. управління CommonDialog.
Розмістивши на своїй формі ел. управління CommonDialog, Ви отримуєте можливість виклику таких вікон, як:
1.Окно діалогу Open;
2.Окно діалогу Save As;
3.Окно діалогу Color;
4.Окно діалогу Font;
5.Окно діалогу Print;
Вибір того чи іншого типу вікна діалогу відбувається за допомогою установки властивості Action в відповідне значення або ж застосуванням відповідного методу.
Вікно діалогу Open
Для виклику вікна діалогу Open неоходімо властивість CommonDialog1.Action встановити в 1 або ж застосувати метод ShowOpen. Але, перш ніж перед Вами з'явиться повноцінне Windows -кое вікно Open, необхідно призначити ряд властивостей.
1. Встановити початкову директорію, яка буде відкриватися при виклику CommonDialog1 -а.
CommonDialog1.InitDir = "C: My Documents"
Якщо не ставити цього властивості, то за замовчуванням буде відкриватися директорія, яку Ви використовували останній раз.
2. Встановити тип файлів, які буде відображати діалог Open. Для цього оголошуємо строкову змінну strFileType і присвоюємо їй необхідні значення.
Dim strFileType As String
strFileType = "All Files (*. *) | *. * |"
strFileType = StrFileType "Word Documents (* .doc) | * .doc |"
strFileType = StrFileType "Text Files (* .txt) | * .txt |"
Потім властивості Filter. CommonDialog. присвоюємо значення змінної strFileType.
Примітка. Не вмикайте пропуски перед та після роздільників, інакше Ви отримаєте не ті файли, які вказали.
Встановлюємо фільтр за замовчуванням, вибравши для цього значення Word Documents.
При відкритті вікна діалогу Open в текстовому вікні "Files of type". у Вас з'явиться напис Word Documents (* .doc).
3. І нарешті, відображаємо вікно діалогу Open.
Природно, раз Ви викликали вікно діалогу Open. то його треба використовувати за призначенням, тобто вибрати необхідний файл і відкрити його. Вибір файлу здійснюється так, як і в Windows - e, але перш ніж продовжувати роботу передати в програму шлях і ім'я обраного Вами файлу. Для цієї мети існують два властивості CommonDialog1 - а.
CommonDialog1.FileTitle - повертає ім'я обраного файлу з розширенням (наприклад. "Hello.doc");
CommonDialog1.FileName - повертає шлях до обраного файлу (наприклад. "C: My DocumentsHello.doc");
Знаючи ці дані Ви можете виробляти відповідні операції над вибраними файлами.
Тепер необхідно захистити програму від непередбачених дій користувача.
Що може зробити користувач.
1.Ввесті неіснуючий файл або будь-які символи і натиснути на клавішу Open;
2. Не вибравши жодного файлу натиснути на клавішу Open;
Для попередження подібних дій властивості Flags присвоюємо необхідну константу.
cdlOFNFileMustExist - Визначає, що користувач може вводити імена тільки існуючих файлів, якщо прапорець встановлений і користувач вводить неприпустиму ім'я файлу, відображається попередження. Цей прапор автоматично встановлює прапор cdlOFNPathMustExist.
Увага. На вікні діалогу Open знаходиться флажек для включення опції "Open as read only". Розглядати роботу з цим прапорцем ми не будемо, з цього додамо ще одну константу, яка прибере його з панелі вікна діалогу.
cdlOFNHideReadOnly - Робить невидимим перемикач Read Only.
І тепер властивість Flags буде виглядати наступним чином.
CommonDialog1.Flags = CdlOFNFileMustExist or CdlOFNHideReadOnly
3. Не вибравши жодного файлу натиснути на клавішу Cancel;
4.Обрати файл і натиснути на клавішу Cancel;
Що б запобігти появи помилки, при цих діях користувача, доповнюємо вищенаведений код оброблювачем помилки. Необхідно зауважити, що помилку має генерувати саме вікно діалогу, для цього, властивість CommonDialog1.CancelError встановіть в True. Тепрь при натисканні на клавішу Cancel буде генеруватися помилка 32755 - Cancel was selected (Обрана Скасування).
Тепер скомпануем все вищеописане в упорядкований код:
Private Sub mnuOpen_Click ()
'Оголошуємо строкову змінну для призначення типів файлів
Dim strFileType As String
'Якщо виникне помилка, тобто користувач нажел на клавішу Cancel,
'Відправитися до обробника помилки - ErrorHandler
On Error GoTo ErrorHandler
'Забезпечуємо генерацію ощибки
'Ініціалізувавши строкову змінну strFileType
strFileType = "All Files (*. *) | *. * |"
strFileType = StrFileType "Word Documents (* .doc) | * .doc |"
strFileType = StrFileType "Text Files (* .txt) | * .txt |"
'Надаємо її властивості Filter
'Встановлюємо необхідний індекс
'Надаємо початкову директорію своства InitDir
'Забезпечуємо захист від неправильного введеного файлу або дерикторії, а так само приховуємо флажек Read Only
CommonDialog1.Flags = cdlOFNFileMustExist or cdlOFNHideReadOnly
'Викликаємо діалог Open
CommonDialog1.Action = 1 'Або ж CommonDialog1.ShowOpen
'Тут розташований Ваш код. (Не забудьте, що шлях до вибраного файлу Ви зчитуєте з властивості FileName)
'Обробка перехоплюваних ощибки
If Err.Number = 32755 Then
Тепер діалог Open повністю готовий до роботи.
Якщо Ви бажаєте поексперементувати з вікном діалогу Open. то нижче наводяться константи, котрі можна привласнювати властивості Flags.