ОПИСАНИЕ КОМПОНЕНТ. ОБОСНОВАНИЕ ИХ ВЫБОРА

Основной задачей курсовой работы является создание программы управления файлами. Она должна реализовывать основные функции работы с файлами: копирование, перемещение, удаление, создание новых каталогов, просмотр содержимого логических дисков компьютера. Интерфейс программы необходимо выполнить в виде двух панелей, в которых возможен просмотр текущей файловой структуры.

Для реализации поставленной задачи нужно использовать следующие компоненты среды визуального проектирования 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, которые будут отображать текущий путь к директории.