r виводить діалог створення каталогу FormDialogCreateDir. Натискання на bDelete виводить діалог видалення або приміщення в кошик FormDialogDelete. При натисканні на bCurrentRootDirLeft або bCurrentRootDirRight у відповідних панелях відбувається відображення кореневій директорії поточного пристрої зберігання информации. LabelCurrentPathRight - представники класу TLabel (напис). У цих об'єктах відображаються поточні шляху панелей.
Малюнок 4.1 - Головна форма програми
При натисканні на кнопку форми Form1 bCreateDir на екран виводиться форма FormDialogCreateDir - представник класу TForm відповідно з малюнком 4.2.
Малюнок 4.2 - Форма створення нового каталогу
Опишемо об'єкти, розташовані на FormDialogCreateDir.- представник класу TEdit (поле введення). Поле, куди користувач вводить ім'я нового каталогу. У edNewDirName реалізовано подія KeyDown («гарячі клавіші», функція-обробник edNewDirNameKeyDown) .- представник класу TLabel (напис). Містить напис «Ім'я нового створюваного каталогу» .і bCancel - представники класу TButton (кнопка). У bOk і bCancel реалізовано одна подія: Click (натискання, функції-обробники: bOkClick і bCancelClick). При натисканні на bOk, якщо введене ім'я правильне (тобто не містить зарезервованих символів і слів і не збігається з ім'ям каталогу в активній панелі) або немає інших помилок (наприклад, немає прав доступу), створюється каталог в папці, відображеної в активній панелі, і форма ховається, в іншому випадку видається повідомлення про помилку і пропонується повторити введення. При натисканні на bCancel форма ховається без виконання будь-яких інших дій.
При натисканні на кнопку форми Form1 bDelete на екран виводиться форма FormDialogDelete - представник класу TForm відповідно з малюнком 4.3.
Малюнок 4.3 - Форма для видалення каталогу
Опишемо об'єкти на FormDialogDelete: - представник класу TLabel (напис). Містить напис «Виберете дію:»., BCancel, bRecycler - представники класу TButton (кнопка). У bDelete, bCancel, bRecycler реалізовано одна подія: Click (натискання, функції-обробники: bDeleteClick, bCancelClick і bRecyclerClick). При натисканні на bDelete файл (каталог), що знаходиться у фокусі в активній панелі, видаляється. При натисканні на bRecycler, файл (каталог), що знаходиться у фокусі в активній панелі, поміщається в корзину. При натисканні на bCancel форма ховається без виконання будь-яких інших дій.
Розглянемо функції реалізації операцій:
) CreateListOfDevices.
Створює список кореневих директорій доступних пристроїв зберігання інформації і відображає цей список в ListDevicesLeft і ListDevicesRight.
Функції не передаються параметри. Не повертає значення.
Використовується функція Windows API GetDriveType.
) ScanDir.
Функції віддається рядок, що закінчується нулем (char Path []), що містить шлях до директорії, в якій проводиться пошук всіх містяться в ній папок і файлів і змінна (int Panel), залежно від значення якої формується небудь DequeFindLeft (якщо Panel=LEFT) або DequeFindRight (якщо Panel=RIGHT).
Використовуються три функції Windows API: FindFirstFile, FindNextFile, FindClose.
Викликається в ViewDirectory. (DequeFindRight) - це контейнер бібліотеки стандартних шаблонів, що є чергою deque, елементами якої є структури типу WIN32_FIND_DATA. Тип WIN32_FIND_DATA описаний в winbase.h. Посилання на структуру передається в FindFirstFile і FindNextFile.
) StrucFindToFileProp.
Перетворює структуру типу WIN32_FIND_DATA в _FileProperty.
Функції передається структура типу WIN32_FIND_DATA і посилання на структуру типу _FileProperty. Не повертає значення.
Викликається в ViewDirectory.
Тип _FileProperty описується на початку модуля і використовується для відображення результатів роботи ScanDir в FileListLeft (FileListRight), тому деякі поля WIN32_FIND_DATA не адаптовані для виводу.
) ViewDirectory. Відображає вміст папки, шлях до якої передається в Path [] в активній панелі.
Функції віддається рядок, що закінчується нулем (char Path []), що містить шлях, який передається в ScanDir, і змінна (int Panel), передана в ScanDir, і залежно від значення якої, результати відображаються в FileListLeft (якщо Panel=LEFT) або FileListRight (якщо Panel=RIGHT). Не повертає значення.
Викликається в HandlerOfOpen, CreateFolder, CopyOrRemove і Deleting.
) HandlerOfOpen.
У залежно від...