Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2 семестр.doc
Скачиваний:
42
Добавлен:
27.05.2015
Размер:
777.73 Кб
Скачать

9.2. Компоненты для ввода дат

В программах очень часто требуется предоставить пользователю возможность ввести дату. Но мы знаем о проблемах, которые могут возникнуть, вдруг даты идут в формате mm/dd/yy, а пользователь наберет 15.08.2008? Получится ошибка. Чтобы облегчить пользователю ввод дат, существует несколько компонентов. Создайте новый проект, установите на форму компоненты DateTimePicker и MonthCalendar с вкладки Win32 в Палитре компонентов. Скомпилируйте проект и посмотрите, как он работает:

Обратите внимание на то, как работают эти календари. Если вы щелкните мышью по номеру года, то откроется окошко, в котором год можно прокрутить до нужного. Если щелкните по месяцу, то откроется список месяцев, в котором пользователь может выбрать нужный. А если он щелкнет по дню, то в свойстве Date обоих компонентов установится выбранная дата в формате TDateTime. Эту дату затем можно преобразовывать в функциях преобразования дат в строку, подставляя это свойство в качестве значений.

Еще обратите внимание на нижнюю строку. Там указана текущая дата, а слева от нее красный овал. Если щелкнуть по нему, то выбранная дата перескочит с любой даты на текущую.

А у компонента DateTimePicker есть еще интересное свойство: DateFormat. Оно может выводить дату в коротком (dfShort) и длинном(dfLong) формате. Свойство Time этого компонента показывает время в формате TDateTime.

Эти компоненты удобно устанавливать на форму, чтобы пользователь вместо ввода нужной даты просто выбрал ее на форме. Кроме того, такой подход обеспечит вам гарантию того, что дата будет указана в нужном формате.

DateFormat – представление даты в коротком (dfShort) и длинном(dfLong) формате.

DateMode – выбор способа работы компонента. Он может использоваться как раскрывающийся список(dmComboBox) или иметь счётчик для изменения даты(dmUpDown)

Kind – если значение свойства равно dtkDate, компонент используется для ввода даты, в противном случае (значение dtkTime) – для ввода времени.

ShowCheckbox – имеет значение True, если рядом с полем отображается флажок (его состояние можно проверить, обратившись к свойству Checked).

Свойства MinDate и MaxDate позволяют ограничить диапозон вводимых значений.

Когда дата или время в поле изменяются ,генерируется сообщение OnChange. При раскрытии списка, содержащего календарь, объект получит сообщение OnDropDown, при закрытии - сообщение OnCloseUp.

10. Сохранение параметров программы.

В этой лекции вы познакомитесь с возможностью сохранять различные настройки программы в специальные ini-файлы.

Очень часто, особенно в крупных проектах, бывает необходимо сохранить некоторые настройки программы, чтобы потом их применить при повторной загрузке. Представьте себе такую ситуацию – вы написали программу для клиента. Он ее запустил, и она появилась в центре окна, как вы и планировали. Однако ему показалось это неудобным, и он сдвинул ее в сторону и уменьшил размеры окна, чтобы параллельно работать еще с каким то приложением. Все прекрасно, программа делает свое дело и пользователь доволен. Однако, когда на следующий день он снова загрузит эту программу, она опять окажется по центру экрана, и будет иметь первоначальные размеры. Пользователю снова придется сдвигать ее в сторону и уменьшать размеры формы. Пустячок? Однако из таких вот пустячков и складывается мнение о программисте, и если мнение это будет плохим, заказчиков у вас не будет! Программист должен предусмотреть в своей программе все требования и желания пользователя, даже такие, о которых он и сам еще не догадывается. Ну скажите, как пользователь, заказавший вам программу может знать, что форма при программировании может занимать разное положение – по центру экрана или рабочего стола, или положение при разработке? Пока он не столкнется с вашей программой на практике, ему и в голову не придет указать вам, что программа должна запоминать свои настройки!

В самом простейшем случае требуется сохранить только 5 параметров – состояние окна (свернутое, развернутое), его положение от левой и верхней границы рабочего стола, его ширину и высоту. А если вы будете создавать более сложную программу, с панелью настроек, где есть куча чекбоксов и радиокнопок? Там пользователь может изменить ваши настройки "по умолчанию", и поставить собственные. Представьте, если пользователь потратил полчаса на то, чтобы настроить вашу программу "под себя", а при повторном запуске обнаружил, что все его настройки не сохранились!

Для сохранения пользовательских настроек существует два способа – ini-файлы и системный реестр Windows. Каждый из этих способов имеет свои плюсы и минусы.

Если вы сохраняете настройки в реестр Windows, то они скрыты от пользователя, следовательно, он ничего не сможет в них испортить. С другой стороны, если на компьютере зарегистрированы несколько пользователей, то каждый сможет изменить настройки программы "под себя". Минус в том, что если Windows будет переустановлена, придется переустанавливать и программу, так как она будет отсутствовать в реестре.

Если же вы сохраняете настройки в ini-файл, программа сохранит настройки и при переустановке операционной системы. Кроме того, сохранение настроек в ini-файл реализовать проще. В этой лекции мы научимся работать только с ini-файлами.

10.1. INI-файлы

У INI – файлов есть много преимуществ. С ними работать просто и удобно, они поддерживают три типа данных – String, Integer и Boolean. Кроме того, если бы мы сохраняли настройки в простой текстовый файл, то при изменении одной из настроек требовалось бы перезаписывать весь файл, а ini-файл позволяет перезаписать только этот параметр.

Конечно, есть и некоторые правила использования такого рода файлов.

Первым делом, если вы собираетесь работать с ini-файлами, в секцию uses, сразу под словом interface, требуется добавить модуль inifiles, в нем описаны все данные для работы с ini-файлами. Добавить модуль просто – после последнего указанного в списке модуля стоит точка с запятой. Замените ее на запятую, добавьте слово inifiles а затем поставьте точку с запятой.

Далее. По умолчанию, ini-файлы создаются в директории, где установлен Windows. Там появляется файл с расширением *.ini и вашими настройками. Это не всегда удобно, особенно если предположить, что Windows может быть переустановлен. Гораздо лучше создавать файл в той директории, где установлена ваша программа. А как узнать эту директорию?

ExtractFilePath(Application.ExeName)

Изучим создание ini-файла на практике. Создайте новое приложение. В секцию uses добавьте модуль inifiles.

Прежде всего, пропишем сохранение параметров при закрытии программы. Для этого создайте обработчик события OnDestroy для формы. Такое событие случается при разрушении объекта форма, то есть, при завершении работы с программой. Создайте раздел var и пропишите там переменную типа ini-файл:

var