Основной задачей курсовой работы является создание программы управления файлами. Она должна реализовывать основные функции работы с файлами: копирование, перемещение, удаление, создание новых каталогов, просмотр содержимого логических дисков компьютера. Интерфейс программы необходимо выполнить в виде двух панелей, в которых возможен просмотр текущей файловой структуры.
Для реализации поставленной задачи нужно использовать следующие компоненты среды визуального проектирования Delphi 7.0: TForm, TLabel, TDriveComboBox, TMainMenu, TListView, TImageList, TStatusBar, TButton, TAboutBox.
КОМПОНЕНТ TFORM
Форма – это важнейший компонент Delphi 7.0, на котором основана вся работа этой системы по проектированию и разработке приложения. Форма (класс TForm) содержит богатый набор свойств (таблица 1), методов и событий (таблица 2), позволяющих легко настраивать и организовывать самые сложные алгоритмы ее функционирования. Форма Form1 представлена в программе типом TForm1, который исходно не имеет новых полей и методов, так как форма пуста.
Для добавления новой формы к проекту достаточно выполнить команду File/New/Form (Файл/Создать/Форма). При этом в проектировщике сразу появится новая пустая форма. Называться она будет Form2, а соответствующий ей файл с исходными текстами добавиться в редактор на новую панель Unit2. Менеджер проекта автоматически подключает новую форму к списку используемых форм и обеспечивает все необходимые действия по ее инициализации.
Таблица 1
Свойства компонента TForm
Свойство | Назначение |
Active | Содержит значение True, если форма имеет фокус ввода |
ActiveControl | Объект на форме, который имеет фокус ввода |
BorderIcons | Список системных значков формы |
BorderStyle | Вид границ формы |
Canvas | Область рисования формы |
FormStyle | Стиль формы |
Свойство | Назначение |
ClientRect ClientHeight ClientWidth | Размеры формы |
DropTarget | Содержит значение True, если форма может работать как приемник в операциях перетаскивания |
Floating | Содержит значение True, если форма может пристыковываться к другим окнам |
FormState | Текущее состояние формы |
HelpFile | Название файла справки для формы |
Icon | Значок, обозначающий форму, когда она свернута |
KeyPreview | Содержит значение True, если форма будет получать информацию о нажатых клавишах раньше, чем расположенные на ней объекты |
Menu | Ссылка на главное меню формы |
ModalResult | Значение, возвращение формой, если она работает как модальное диалоговое окно |
PixelsPerInch | Число пикселов на дюйм. Применяется для настройки размера формы в зависимости от экранного разрешения |
Parent | "Хозяин" формы |
Position | Положение формы на экране в момент ее открытия в программе |
PrintScale | Масштабирование формы при выводе на печать |
Scaled | Содержит значение True, если размер формы будет подгоняться в соответствии со значением свойства PixelsPerInc |
Visible | Содержит значение True, если форма будет видима во время работы программы |
WindowState | Состояние формы (свернута, развернута и т.п.) |
У программы может быть только одна главная форма – это форма, которая показывается при запуске программы, и неограниченное число подчиненных форм, вспомогательных окон, которые исходно на экране не появляются, а вызываются по команде из программы с помощью специальных методов. Для того чтобы окно другой формы стало главным нужно обратиться к команде Project/Options, в открывшемся окне перейти на вкладку Forms и в списке Main form выбрать нужную форму.
Таблица 2
События и условия генерации компонента TForm
Событие | Условие генерации |
OnActivate | Форма стала активной |
OnClose | Форма закрывается |
OnCloseQuery | Запрос на закрытие формы |
OnCreate | Форма создается |
OnDeactivate | Форма потеряла фокус ввода |
OnDestroy | Форма уничтожается |
OnHelp | Форма получила запрос на выдачу информации |
OnHide | Форма стала невидимой (Visible=False) |
OnPaint | Форма должна быть перерисована |
OnShortCut | Пользователь нажал клавиатурную комбинацию, которая пока не обработана |
OnShow | Форма стала видимой (Visible=True) |
КОМПОНЕНТ TLABEL
Метка используется как надпись на форме или как область вывода информации для чтения.
Таблица 3
Свойства, события и методы компонента TLabel
Свойства | Описание |
Align | Определяет расположение метки на форме |
Alignment | Определяет выравнивание текста внутри метки |
Caption | Содержит текст, отображаемый на метки |
Color | Определяет цвет метки |
Constraints | Ограничения высоты и ширины метки |
Cursor | Определяет вид курсора мыши на метке |
Свойства | Описание |
Font | Задаёт тип и вид шрифта текста на метке |
Height | Высота метки |
Name | Содержит имя компонента |
Top | Определяет расположение метки от левого края формы в пикселях |
Transparent | Определяет, будет ли фон компонента прозрачным |
Visible | Определяет видимость метки |
Width | Задаёт ширину метки |
Методы | Описание |
Procedure SetBounds | Используется для изменения всех свойств границы |
Procedure SetFocus | Помещает метку в фокус ввода |
constructor Create | Используется для создания метки |
События | Условия генерации |
OnClick | Генерируется при щелчке мыши по метке |
OnDblClick | Генерируется при двойном щелчке мыши по метке |
OnMouseEnter | Генерируется при перемещении указателя мыши над меткой |
OnMouseLeave | Генерируется при перемещении указателя мыши из метки |
Данный компонент используется для вывода текущего пути к директории, и показа каких-либо пояснительных текстов.
КОМПОНЕНТ TMAINMENU
Компонент TMainMenu предназначен для добавления к программе главного меню, без которого не обходится практически ни одно из приложений Windows.
Чтобы добавить к разрабатываемой программе меню, надо выбрать на панели компонентов Standard (Стандартные) компонент TMainMenu и поместить его на форме в произвольном месте. Свойства и события данного компонента описаны в таблице 4.
Компонент TMainMenu – невизуальный, в отличие от визуальных компонентов TEdit и TLabel, в точности соответствующих своему внешнему виду в работающей программе. Это означает, что хотя он виден на форме как небольшой квадрат, в окне созданной программы в таком виде компонент не появится. Представление его на форме в миниатюрном виде просто указывает на наличие в программе объекта, ответственного за меню. Меню создается с помощью специального редактора. Редактор меню вызывается двойным щелчком на объекте MainMenu1. Первоначально меню пустое. В Инспекторе объектов надо открыть категорию Localizable (Настраиваемые) и в свойстве Caption (Заголовок) ввести название первого пункта, а затем нажать клавишу Enter. Редактор меню переключится обратно в проектируемое меню, где уже появится первый пункт меню.
Таблица 4
Свойства и методы компонента TMainMenu
Свойство | Назначение |
AutoHotkeys: TMenu.Item.AutoFlag | Если значение maAutomatic или maParent, то Delphi автоматически проверяет и при необходимости корректирует клавиши быстрого вызова подменю, связанного с данным пунктом меню, чтобы обеспечить их уникальность. Если значение maManual, корректировка клавиш быстрого вызова осуществляется программой с помощью метода RethinHotkeys |
AutoLineReduction: TMenu.Item.AutoFlag | Если значение maAutomatic или maParent, то Delphi будет автоматически проверять и при необходимости корректировать пункты подменю, связанного с данным пунктом меню, чтобы оно не содержало двух разделителей подряд. Если значение maManual, то корректировка пунктов меню должна осуществляться программой с помощью метода RethinkLines |
Items[Index:Integer]:TMenuItem | Обращение к любому пункту подменю по его индексу |
Событие | Описание |
OnAdvancedDrawItem: TAdvancedDrawItemEvent | Возникает при необходимости прорисовки меню |
OnClick: TNotifyEvent | Возникает при щелчке мышью на пункте меню |
OnDrawItem:TMenuDrawItemEvent; | Возникает при необходимости прорисовки меню |
Методы | Описание |
Procedure Add | Добавляет один или несколько пунктов меню |
Procedure Clear | Удаляет все пункты подменю из списка свойства Items |
Procedure Delete | Удаляет пункт с индексом Index подменю из списка свойств Items |
Свойство | Назначение |
Function GetImageList | Возвращает ссылку на хранилище изображений |
TCustomImageList | Свойство ImageIndex определяет конкретное изображение для данного пункта для данного пункта |
Function GetParentMenu: TMenu | Возвращает ссылку на главное меню, в которое входит данный пункт |
Function IndexOf: Integer | Возвращает позицию пункта Item |
Procedure InitiateAction | Инициирует связанное с пунктом действие |
Procedure Insert | Вставляет пункт Item в позицию Index |
Компонент TMainMenu рационально использовать в разрабатываемой программе для создания главного меню, состоящего из нескольких пунктов.
КОМПОНЕНТ TSTATUSBAR
Таблица 5
Свойства, события и методы компонента StatusBar
Свойства | Описание |
Height | Изменение высоты |
Font | Изменение шрифта |
SizeGrip | Отображение в правом нижнем углу небольшого треугольника |
Alignment | Способ выравнивания текста на данной панели |
Свойства | Описание |
Width | Ширина панели в пикселях |
Style | Определяет вывод текста |
Компонент StatusBar в программе используется для вывода поясняющего текста (количества элементов в текущей директории).
КОМПОНЕНТ TBUTTON
Компонент TButton – стандартная кнопка, обычно используется для запуска действия, для управления программами. Свойства color для оформления надписи у кнопки нет. Свойства и события этого компонента описаны в таблице 6.
Таблица 6
Свойства и события компонента TButton
Свойство | Назначение |
Cancel | Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Esc |
Default | Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Enter |
ModalResult: TModalResult | Определяет результат, с которым было закрыто модальное окно |
Событие | Описание |
Property OnClick | Реакция на нажатие этой кнопки |
Компонент TButton используется для реализации основных функций файлового менеджера.
КОМПОНЕНТ TABOUTBOX
Для этого компонента нет определенных свойств, методов и событий, он является отдельной формой с набором некоторых компонент (Label, Image) и позволяет выводить с помощью команды AboutBox.ShowModal сведения о программе (кто разработал, проверил, какая дисциплина и т.д.). В программе он использован для отображения пункта меню "О программе".
КОМПОНЕНТ TDRIVECOMBOBOX
DriveComboBox — выпадающий список дисков (драйверов). При размещении на форме этот компонент автоматически отображает список имеющихся на компьютере дисков. Во время выполнения приложения можно прочитать имя выбранного пользователем диска в свойстве Drive, а строку, содержащуюся в окне списка — в свойстве Text.
Свойство TextCase задает регистр отображения: tcUpperCase — в верхнем регистре, tcLowerCase — в нижнем.
Связать компонент DriveComboBox со списком каталогов, отображаемых компонентом DirectoryListBox, можно во время проектирования через свойство DirList компонента DriveComboBox. Это свойство может указывать на компонент типа DirectoryListBox. Можно обеспечить связь этих двух типов компонентов и программно, включив в обработчик события OnChange компонента DriveComboBox оператор
DirectoryListBox1.Drive:= DriveComboBox1.Drive;
Этот оператор задает имя диска, выбранное пользователем в компоненте DriveComboBox1, свойству Drive списка каталогов DirectoryListBox1.
Аналогичным оператором можно обеспечить связь компонента DriveComboBox с деревом каталогов и файлов в компоненте DirectoryOutline:
DirectoryOutline1.Drive:= DriveComboBox1.Drive;
КОМПОНЕНТ TLISTVIEW
Он позволяет отображать в стиле Windows 95/98 данные в виде списков, таблиц, крупных и мелких пиктограмм.
Стиль отображения информации определяется свойством ViewStyle, которое может устанавливаться в процессе проектирования или программно во время выполнения. Свойство может принимать значения: vsIcon — крупные значки, vsSmallIcon — мелкие значки, vsList — список, vsReport — таблица. Что означает каждое из этих значений вы можете посмотреть в любой папке Windows на рабочем столе.
Если нужно предоставить пользователю возможность изменять вид списка, необходимо сделать следующее:
· ввести в приложение разделы меню Крупные значки (пусть его имя будет MIcon), Мелкие значки (имя MSmallIcon), Список (имя MList) и Таблица (имя MReport);
· установите во всех этих разделах одинаковый отличный от нуля индекс GroupIndex и свойства RadioItem в true;
· один из разделов пометить как Checked и в свойстве списка ViewStyle установите значение, соответствующее этому разделу.
Основное свойство компонента, описывающее состав отображаемой информации — Items. Во время проектирования оно может быть установлено специальным редактором, вызываемом щелчком на кнопке с многоточием рядом с этим свойством в окне Инспектора Объектов. Оно похоже на окно, описанное для компонента TreeView. Точно так же в нем задаются новые узлы кнопкой NewItem и дочерние узлы — кнопкой NewSubItem. Только смысл дочерних узлов другой: это информация, которая появляется только в режиме vsReport — в виде таблицы.
Для каждого узла задается свойство Caption — надпись, появляющаяся около пиктограммы. Для дочерних узлов это свойство соответствует надписи, появляющейся, в ячейках таблицы в режиме vsReport.
Свойство ImageIndex определяет индекс пиктограммы. Индекс соответствует спискам изображений, хранящимся в отдельных компонентах ImageList. Указания на эти компоненты можно задать в свойствах LargeImages для режима vsIcon и SmallImages для режимов vsSmallIcon, vsList и vsReport. Индексы начинаются с 0. Если указать индекс -1 (значение по умолчанию), пиктограммы изображаться не будут. Свойство StateIndex в панели Item Properties позволяет добавить вторую пиктограмму в данный объект. Подобная пиктограмма может просто служить дополнительной характеристикой объекта. Индекс, указываемый как StateIndex, соответствует списку изображений, хранящихся в отдельном компоненте ImageList, указанном в свойстве StateImages компонента ListView.
Свойство Columns определяет список заголовков таблицы в режиме vsReport при свойстве ShowColumnHeaders (показать заголовки), установленном в true. Свойство Columns можно задать в процессе проектирования специальным редактором заголовков, вызываемом двойным щелчком на компоненте ListView или щелчком на кнопке с многоточием рядом со свойством Columns в окне Инспектора Объектов.
Свойство Checkboxes определяет отображение индикатора с флажком около каждого элемента списка. Индикаторы можно устанавливать программно или их может изменять пользователь во время выполнения. Тогда узнать программно, установлен ли индикатор в некотором элементе Items[i], можно проверкой его свойства Checked.
Свойства HotTrack и HotTrackStyles определяют появление выделения при перемещении курсора над элементом списка и стиль этого выделения. Свойство HoverTime (только в Delphi 5) задает в миллисекундах задержку появления такого выделения.
Свойство списка Selected определяет выделенный пользователем элемент списка.
В Delphi 5 введено еще одно свойство ListView — WorkAreas.
Это свойство определяет рабочую область (прямоугольную рамку), в которой осуществляется выравнивание пиктограмм в режимах vsIcon и vsSmallIcon. Свойство WorkAreas представляет собой индексированный список, аналогичный Items, но совершенно независимый от него. Если WorkAreas — пустой список (ни одна область в него не добавлена), то упорядочивание пиктограмм производится в пределах всей клиентской области ListView. Добавление новой рабочей области осуществляется методом Add. Свойство рабочей области Rect типа TRect определяет границы области. Свойство Color определяет цвет рамки, обрамляющей область. Свойство DisplayName определяет подпись под рамкой. И рамка, и подпись отображаются только в случае, если свойство списка ShowWorkAreas установлено в true.
КОМПОНЕНТ TIMAGELIST
Компонент ImageList представляет собой набор изображений одинаковых размеров, на которые можно ссылаться по индексам, начинающимся с 0. Этот компонент позволяет организовать эффективное и экономное управление множеством пиктограмм и битовых матриц. Он может включать в себя монохромные битовые матрицы, содержащие маски для отображения прозрачности рисуемых изображений.
Изображения в компонент TImageList могут быть загружены в процессе проектирования с помощью редактора списков изображений. Окно редактора вызывается двойным щелчком на компоненте TImageList или щелчком правой кнопки мыши и выбором команды контекстного меню ImageList Editor.
В окне редактора списков изображений можно добавить в списки изображения, пользуясь кнопкой Add, удалить изображение из списка кнопкой Delete, очистить весь список кнопкой Clear. При добавлении изображения в список открывается обычное окно открытия файлов изображений, в котором необходимо выбрать интересующий файл. Размер всех изображений в списке должен быть одинаковым. Как правило, это размер, используемый для пиктограмм в меню, списках, кнопках. При добавлении в список изображений для кнопок надо иметь в виду, что они часто содержат не одно, а два и более изображений.
Каждое загруженное в список изображение получает индекс. Именно на эти индексы впоследствии можно ссылаться в соответствующих свойствах разделов меню, списков, кнопок и т.д., когда необходимо загрузить в них то или иное изображение. Изменить последовательность изображений в списке можно просто перетащив изображение мышью на новое место.
Основные свойства описаны в таблице 7.
Таблица 7
Основные свойства TImageList
Свойство | Тип | Описание |
Height | Integer | Высота изображений в списке |
Width | Integer | Ширина изображений в списке |
AllocBy | Integer | Определяет количество изображений, на которое увеличивается список для добавления новых изображений |
Count | Integer | Определяет число изображений в списке. Свойство только для чтения |
ПРАКТИЧЕСКАЯ ЧАСТЬ
ПОСТАНОВКА ЗАДАЧИ
В процессе выполнения курсовой работы необходимо создать программу управления файлами компьютера. Интерфейс программы должен состоять из двух панелей, в которых будет отображаться текущая файловая структура выбранного диска или директории. Между панелями необходимо организовать возможность обмена информацией через принцип Drag & Drop, в результате выполнения которого будет происходить копирование файлов. Список файлов, отображаемый в компоненте TListView, перед показом пользователю нужно отсортировать: в начале списка папки, после оставшиеся файлы. При двойном щелчке на компонент списка пользователь должен перейти вверх к выбранному каталогу, либо вниз, если щелчок был произведен на первом компоненте списка. При выборе exe файла программа должна запустить это приложение.
Каждому компоненту TListView в соответствии должен находиться компонент TDriveComboBox, функциями которого является выбор логического или физического диска компьютера для отображения его файловой структуры в списке. Так же необходимо разместить в проекте два компонент TLabel, которые будут отображать текущий путь к директории.