Обзор компонентов библиотеки C++Builder________________________151

ния синтаксиса ввод дат и времени. Его свойство Kind определяет режим работы
компонента: dtkDate — ввод даты, dtkTime — ввод времени.

При вводе дат можно задать свойство DateMode равным dmComboBox — нали-
чие выпадающего календаря, или равным dmUpDown — наличие кнопок увеличе-
ния и уменьшения, напоминающих те, которые используются в описанных ранее
компонентах UpDown и SpinEdit. Только в данном случае пользователь может не-
зависимо устанавливать с помощью кнопок число, месяц и год. Формат представ-
ления дат определяется свойством DateFormat, которое может принимать значе-
ния dfShort — краткий формат (например, 01.12.99), или dfLong — полный формат
(например, 1 Декабрь 1999г.).

Значение даты по умолчанию можно задать в Инспекторе Объектов через свой-
ство Date. Это же свойство читается для определения заданной пользователем
даты. При чтении Date надо учитывать тип этого свойства — TDateTime, пред-
ставляющий собой число с плавающей запятой, целая часть которого содержит
число дней, отсчитанное от некоторого начала календаря, а дробная часть равна
части 24-часового дня, т.е. характеризует время и не относится к дате. За начало
календаря принята дата 12/30/1899, 12 часов.

Для преобразования значения свойства Date в строку можно воспользоваться
функцией DateToStr. Например, оператор

Memol->Lines->Add("Дата: " + DateToStr(DateTimePickerl->Date));

добавит в окно Memol строку вида «Дата: 01.05.99».

При вводе дат можно задать значения свойств MaxDate и MinDate, определя-
ющих соответственно максимальную и минимальную дату, которую может задать
пользователь.

В режиме ввода времени dtkTime введенное пользователем значение можно
найти в свойстве Time, тип которого — тот же рассмотренный выше TDateTime.
Преобразовать время в строку можно функцией TimeToStr.

Компонент MonthCalendar похож на рассмотренный выше компонент
DateTimePicker, работающий в режиме ввода дат. Правда, в компоненте MonthCa-
lendar предусмотрены некоторые дополнительные возможности: можно допустить
множественный выбор дат в некотором диапазоне (свойство MultiSelect), можно
указывать в календаре номера недель (свойство WeekNumbers), перестраивать ка-
лендарь, задавая первый день каждой недели (свойство WeekNumbers) и т.п. Для
некоторых офисных приложений все это достаточно удобно.

Компонент CCalendar представляет собой менее красочный и более обыденно
оформленный календарь на один месяц. Вместо свойства Date в нем предусмотре-
ны отдельные свойства Year — год, Month — месяц, Day — день. Все это целые
числа, с которыми иногда удобнее иметь дело, чем с типом TDateTime.

Осень интересным компонентом является FIBook на странице ActiveX. Этот
компонент позволяет встроить в ваше приложение таблицы типа Excel (рис. 3.7),
которые пользователь может заполнять соответствующими числами, а компонент
будет производить по заданным формулам вычисления и тут же отображать их ре-
зультаты в указанных ячейках. В таблицу можно встроить диаграммы и графики
различных типов. И все изменения, вносимые пользователем в данные таблицы,
немедленно будут отображаться в диаграммах. Таким образом вы можете вклю-
чать в свое приложение различные бланки смет, счетов, ведомостей, с которыми
будет работать пользователь, различные таблицы, производящие статистические
или технические расчеты и т.п.

Перенесите на форму компонент FIBook и щелкните на нем правой кнопкой
мыши. Выберите из всплывшего меню команду Workbook Designer. Перед вами по-
явится диалоговое окно проектирования, представленное на рис. 3.8. Те, кто зна-
ком с программой Excel, могут увидеть, что это окно является несколько упрощен-
ным вариантом Excel. Проектирование таблицы производится фактически по тем