Обработка данных в формате дата/время. дата/время. Вывод данных из программы на печать. Delphi. Тема 10.
План темы: b1b1b1b1.... Т Т Т Т ии ппп T T T T DDDD aaaa tttt eeee TTTT iiii mmmm eeee.... b2b2b2b2.... О О О О ппп ее рр аапа ввц ии ии с с с с д д д д аапа инн инн ыыыы мм ии т т т т ии ппп аапа T T T T DDDD aaaa tttt eeee TTTT iiii mmmm eeee.... b3b3b3b3.... П П П П рр ооо ввц ее ддт уууу рр ыыыы и и и и Ф Ф Ф Ф уууу инн как ввц ии ии д д д д лол яя д д д д аапа инн инн ыыыы хох тттт ии ппп аапа T T T T DDDD aaaa tttt eeee TTTT iiii mmmm eeee.... b4b4b4b4.... К К К К ооо мм ппп ооо инн ее инн тттт ыыыы M M M M oooo nnnn tttt hhhh CCCC aaaa llll eeee nnnn dddd aaaa rrrr,,,, DDDD aaaa tttt eeee TTTT iiii mmmm eeee PPPP iiii cccc kkkk eeee rrrr,,,, T T T T iiii mmmm eeee rrrr.... b5b5b5b5.... В В В В ыыыы вввв ооо ддт д д д д аапа инн инн ыыыы хох и и и и з-з-з п п п п рр ооо гг рр аапа мм мм ыыыы н н н н аапа ппп ее чччч аапа тттт ьььь.... b6b6b6b6.... П П П П рр ии мм ее рр п п п п рр ооо гг рр аапа мм мм ыыыы....
1. Тип TDateTime. bДbДbДb Для хранения и обработки значений даты и времени в Delphi применяется тип данных TDateTime. bОbОbОb Он соответствует типу Double (вещественный с двойной точностью). bЦbЦbЦb Целая часть элемента данных типа TDateTime соответствует количеству дней, прошедших с полночи 30 декабря 1899 года. bДbДbДb Дробная часть соответствует времени дня.
2. Операции с данными типа TDateTime. bДbДbДb Дата_2 – Дата_1 = <Кол-во суток между датами>; bДbДbДb Дата_1 + <Кол-во суток> = Дата_2; bДbДbДb Дата_2 - <Кол-во суток> = Дата_1; bФbФbФb Формат записи константы TDateTime: Число.Месяц.Год Часы:Минуты:Секунды
3. Процедуры и функции для данных типа TDateTime. Функции: bDbDbDbDate – возвращает текущую дату. bTbTbTbTime – возвращает текущее время. bNbNbNbNow – возвращает текущие дату и время. bDbDbDbDayOfWeek(D) – возвращает номер дня недели даты D (1 – воскресенье, 2 – понедельник, …, 7 – суббота).
bDbDbDbDateTimeToStr (D) – преобразует дату и время D в строку. bSbSbSbStrToDateTime (S) – преобразует строку S в дату и время. bDbDbDbDateToStr (D) – преобразует дату D в строку. bSbSbSbStrToDate (S) – преобразует строку S в дату. bTbTbTbTimeToStr (D) – преобразует время D в строку. bSbSbSbStrToTime (S) – преобразует строку S в время.
bEbEbEbEncodeDate (g, m, d) – возвращает дату, сформированную по году (g), месяцу (m), дню (d). bEbEbEbEncodeTime (ch, min, sec, msec) – возвращает время, сформированное по часам (ch), минутам (min), секундам (sec), миллисекундам (msec).
Процедуры: bDbDbDbDecodeDate (D, g, m, d) – Разбивает значение даты D на год (g), месяц (m), день (d). bDbDbDbDecodeTime (T, ch, min, sec, msec) – Разбивает значение времени T на часы (ch), минуты (min), секунды (sec), миллисекунды (msec). Переменные g, m, d, ch, min, sec, msec должны иметь тип Word (целый беззнаковый).
Для ввода и отображения данных в формате дата удобны компоненты DateTimePicker или MonthCalendar Компоненты MonthCalendar, DateTimePicker, Timer.
Таймер - это системный генератор событий, который периодически сообщает программе о завершении заданного промежутка времени (событие OnTimer ). Интервал времени между таймерными событиями может устанавливаться в диапазоне от 1 до миллисекунд (свойство Interval ). Компоненты MonthCalendar, DateTimePicker, Timer.
5. Вывод данных из программы на печать. bНbНbНb Некоторые компоненты (RichEdit, Chart) имеют специальный метод Print, который выводит данные из этих компонентов на печать. bДbДbДb Для большинства компонентов (Memo, StringGrid и др.) необходимо организовать вывод их данных на печать аналогично выводу данных в текстовый файл.
bДbДbДb Для выбора принтера и настройки печати на форму необходимо установить невизуальный компонент PrintDialog (раздел Dialog в Палитре компонентов). bВbВbВb Вызов соответствующего окна диалога осуществляет метод Execute, который возвращает значение True, если пользователь завершил диалог по кнопке <Ok>.
bДbДbДb Для организации вывода данных на печать необходимо: Подключить в секции uses модуль Printers; Определить файловую переменную: Prn: TextFile; Открыть принтер: AssignPrn(Prn); Rewrite(Prn);
Сформировать очередную строку выводимой информации, например: For i:=1 to n do S := Memo1.Lines[i]; Вывести строку на принтер: Writeln(Prn, S); Закрыть принтер: CloseFile(Prn);