1.10. Компонент Поле ввода даты/времени (TDateTimePicker)
Компонент представляет собой раскрывающийся список и используется для ввода даты и времени с клавиатуры (по формату в соответствии с локальными настройками Windows). При раскрытии списка открывается календарь (компонент TMonthCalendar).
На этапе проектирования настраиваются следующие свойства компонента.
Свойства класса TDateTimePicker
Свойство Назначение
DateFormat Представление даты в коротком (dfShort) или длинном (dfLong) формате
DateMode Выбор способа работы компонента. Он может использоваться как раскрывающийся
список (dmComboBox) или иметь счетчик для изменения даты (dmUpDown)
Kind Если значение свойства равно dtkDate, компонент используется для ввода даты,
в противном случае (значение dtkTime) — для ввода времени
ShowCheckbox Имеет значение True, если рядом с полем отображается флажок (его состояние можно проверить, обратившись к свойству Checked)
Когда дата или время в поле изменяются, генерируется сообщение onchange. При раскрытии списка, содержащего календарь, объект получит сообщение OnDropDown, при закрытии — сообщение OnCloseLlp.
В программе-самоучителе в примере использования данного компонента возможно изменить дату.
1.11. Компонент Календарь (TMonthCalendar)
С помощью календаря можно быстро и легко выбрать нужную дату с помощью мыши.
В красном кружке выделена текущая дата (она же более развернуто указана в нижней части календаря), синим подсвечена дата, выбранная при помощи мыши. Слева показаны номера недель в году (свойство WeekNumbers). С помощью кнопок в верхней части календаря можно перемещаться по месяцам. Чтобы вернуться к месяцу с текущей датой, достаточно щелкнуть на ней в нижней части календаря.
Календарь имеет следующие свойства.
Свойства класса TMonthCalendar
Свойство Назначение
CalColors Цвета элементов календаря
MaxDate Максимальная дата, до которой календарь может быть прокручен помесячно.
Тип свойства — TDate (см. ниже)
MinDate Минимально допустимая для просмотра дата
MultiSelect Имеет значение True, если разрешается выбирать диапазон дат
ShowToday Имеет значение True, если текущая дата дополнительно отображается в нижней части календаря ShowTodayCircle Имеет значение True, если текущая дата выделяется красным кружком
Форматы даты и времени
Работа с календарем происходит на основе типа TDate (или его аналога TDateTime). Текущая выбранная дата записывается в свойство Date этого типа. Само значение хранится в запакованном формате в поле типа Double. Кроме типа TDateTime можно применять также системный формат TSystemTime, который содержит полное описание текущих даты и времени:
type TSystemTime = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
Можно использовать и формат TTimeStamp.
type TTimeStamp = record
Time: Integer;
Date: Integer;
end;
В поле Time хранится число миллисекунд, прошедшее с полуночи, в поле Date — число дней от 1 января 0001 года плюс 1.
Для работы с этими форматами в системе Delphi 7 имеется набор стандартных под-программ. Кроме того, в приложениях, где требуется выполнять задачи, жестко привязанные к временным промежуткам, можно воспользоваться функцией GetTickCount, бозвращающей число миллисекунд, прошедших с начала суток (с полуночи) до данного момента, хотя лучше в подобных ситуациях применять компонент TTimer.
1.12. Компонент Дерево (TTreeView)
Для создания подобных деревьев, отображающих иерархические структуры дан¬ных, в системе Delphi 7 реализован компонент TTreeView.
Процесс создания дерева достаточно прост. Его начальную структуру можно сформи-ровать в редакторе, аналогичном редактору компонента TListView, только уровень вложенности элементов в таком списке не ограничен. У компонента TListView под-держивался только один уровень вложенности по схеме «объект — набор свойств».
Каждому узлу дерева может соответствовать своя картинка. Ее номер указывается в поле редактора Image Index (Номер картинки), а сам список картинок задается в свойстве Images. Дополнительно, для каждого узла можно указать номер картинки, отражающей его выделенное состояние (свойство Selected Index), и номер картинки, отражающей его дополнительное состояние (свойство State Index). Имена узлов можно редактировать, как обычные названия объектов Windows.
Многие свойства дерева совпадают со свойствами объекта TListView, но есть и небольшие отличия, вызванные необходимостью отображать неограниченные иерархии объектов и только одним режимом работы.
Основные свойства компонента TTreeView. Сами узлы хранятся в свойстве Items (класс TTreeNodes) и имеют тип TTreeNode. Класс TTreeNodes содержит свойство Item — массив объектов типа TTreeNode. Основные свойства класса TTreeNode приведены
Основные свойства компонента TTreeView
____________________________________________________________________________________________________
Свойство Назначение
____________________________________________________________________________________________________
AutoExpand Имеет значение True, если узлы дерева будут автоматически разворачиваться
и сворачиваться при перемещении фокуса
ChangeDelay Пауза в миллисекундах между выделением узла дерева и генерацией
сообщения onchange. Обработка этого сообщения позволяет, например, отобразить содержимое данного узла в другой части формы. Для Проводника Windows эта пауза равна 50 мс
HideSelection Имеет значение True, если с элемента, теряющего фокус, снимается выделение
Indent Расстояние в пикселах между узлами дерева
RightClickSelect Имеет значение True, если разрешается выделять узлы дерева с помощью
правой кнопки мыши
ShowButtons Имеет значение True, если слева от узлов отображаются кнопки с символами + и -
ShowLines Имеет значение True, если отображаются линии, соединяющие узлы
ShowRoot Имеет значение True, если отображаются линии, соединяющие узлы верхнего
уровня
Statelmages Список картинок для отображения дополнительного состояния узлов
ToolTips Имеет значение True, если разрешена всплывающая подсказка для каждого
узла дерева. Показывать такую подсказку надо в обработчике события OnHint
В программе-самоучителе в примере использования данного компонента реализовано многоуровневое дерево.
1.13. Компонент Список элементов (TListView)
В отличие от ранее рассмотренного компонента TListBox, представляющего собой стандартный список строк, существующий еще с первых версий Windows, список элементов содержит значительно больше возможностей представления информации
Первоначально, сразу после создания, в списке не содержится ни одного элемента. Режим его будущей работы определяется значением свойства ViewStyle. Возможны следующие значения.
Значения свойства ViewStyle
____________________________________________________________________________________________________
Значение Режим работы
____________________________________________________________________________________________________
vslcon Каждый элемент представлен полноразмерным значком с подписью, который
можно перетаскивать. Так работают папки Windows 9х в режиме Крупные значки
vsSmaUIcon Каждый элемент представлен маленьким значком с подписью справа от него.
Эти значки можно перетаскивать. Так работают папки Windows 9х в режиме Мелкие значки
vsList Каждый элемент представлен маленьким значком с подписью справа от него.
Эти значки, расположенные по столбцам, перетаскивать нельзя. Так работают папки Windows 9х в
режиме Список
vsReport Объект работает как обычный список с несколькими столбцами
____________________________________________________________________________________________________
Число и свойства столбцов задаются в свойстве Columns, которое представляет собой коллекцию объектов THnaTListColumn. Основное их свойство — Caption. Оно содержит заголовок столбца. Пользователь может редактировать его во время работы программы, если значение свойства списка Readonly не равно True и если заголовки не работают в режиме кнопок.
Выбор элементов может выполняться путем ввода первых букв имени, при этом фокус перескакивает по элементам списка в соответствии с набранной пользователем строкой.
Данные для списка формируются в свойстве Items (тип TListltems), представляющим собой список объектов типа TListltem. Эти объекты можно создавать на этапе проектирования с помощью специального редактора.
После щелчка на кнопке New Item (Новый элемент) в поле Caption (Заголовок) задается его имя, в поле Image Index (Номер рисунка) — номер рисунка (значка) из списка рисунков Largelmages или Smalllmages (см. ниже), в поле State Index (Номер состояния) — номер рисунка из списка рисунков Statelmages. Каждый элемент, в свою очередь, может состоять из нескольких вложенных элементов (больший уровень вложенности не допускается), представляющих собой, по замыслу создателей, свойства этого элемента.
Названия элементов и номера картинок хранятся в свойстве Items, а обратиться к вложенным объектам (свойствам) можно через подсвойство Subltems (см. далее).
Свойства класса TListView
Свойство Назначение
АllосВу Число элементов списка, хранимое в памяти. Управляя этим значением,
можно существенно повысить быстродействие некоторых операций по работе со списком,