![]() | Ім'я файлу: отчёт 6.docx Розширення: docx Розмір: 33кб. Дата: 18.05.2021 скачати Пов'язані файли: 22471.docx ДЛЯ ДОПИТЛИВИХ.doc ref_1494.doc Практическое занятие 6 Тема: Тема :Работа с данными в формате дата/время. Использование компонентов для работы с датами. Цель работы: получить практические навыки по использованию функций для работы с датой/временем. Отработать навыки использования компонентов для работы с датами. Ход работы Создал учебную форму для проверки возможностей работы с датами и временем. ![]() Указания: для формы задал свойства: Caption='Работа с датами', BorderStyle=bsSingle, BorderIcom-biMaximized=false, Position=poDesktopCenter. Процесс создания содержимого формы разобьем на несколько простых шагов, указанных ниже. Создал форму с панелью инструментов, у которой в правой части отображается текущая дата и время ![]() Указания: Нанес на форму компонент Statusbar (Win32). Двойным щелчком открыл окно панелей компонента и с помощью первой кнопки на панели инструментов создал две панели. Выделил первую панель и задал свойство width таким, чтобы вторая панель имела ширину, показанную на рисунке. Для работы с датами и временем подключил модуль dateutils. В событии OnCreate формы напишем команду отображения текущей даты. procedure TForm1.FormCreate(Sender: TObject); var a:TDateTime; begin DateTimePicker1.Date:=encodedate(CurrentYear, monthof(Date),1); DateTimePicker2.Date:=Date; DateTimePicker3.Date:=encodedate(currentyear, monthof(date),1); DateTimePicker4.Date:=date; DateTimePicker5.Date:=date; end; Время должно обновляться каждую секунду. Для этого нанес на форму компонент Timer (System). В его событии OnTimer ввел тот же код, что был введен ранее. На панели разместил два выпадающих поля с календарем для задания диапазона поиска данных. При этом первый календарь по умолчанию отображает первое число текущего месяца, а второй - текущую дату. ![]() Указания: нанес на форму компонент Panel и задал свойство Caption='Задание 1 (поиск)'. На панели разместил два компонента DataTimePicker (Win32). Для отображения в компонентах значений, указанных в задании в событие OnCreate формы добавил команды: DateTimePicker1.Date:=encodedate(CurrentYear, monthof(Date),1); DateTimePicker2.Date:=Date; Пусть имеется текстовый файл, в котором записаны некоторые показатели в формате Дата число1 число2 число3 Необходимо реализовать функцию, при которой в поле Memo выдаются только те данные из файла, даты которых попадают в заданный диапазон. Указания: В текстовом редакторе создал такой файл и сохранил на диске. На панели разместил компонент Memo (Standard) и очистил свойство Lines. Внизу разместил две кнопки Button (Standard) и в свойстве Caption задал надписи на них. Для открытия текстового файла нанес на форму компонент OpenDialog (Dialogs) и задал свойство Filter=Текстовые файлы|*.txt. Для первой кнопки написал код: procedure TForm1.Button1Click(Sender: TObject); var t:tstringlist; i:integer; begin if datetimepicker1.date>datetimepicker2.date then exit; if not opendialog1.Execute then exit; t:=tstringlist.create; memo1.Lines.Clear; t.LoadFromFile(opendialog1.filename); for i:=0 to t.count-1 do begin if (strtodate(copy(t.strings[i],1,10))>=datetimepicker1.Date) and (strtodate(copy(t.strings[i],1,10))<=datetimepicker2.Date) then memo1.Lines.add(t.strings[i]); end; t.free; end; Для второй кнопки написал код: procedure TForm1.Button2Click(Sender: TObject); begin memo1.Lines.Clear; datetimepicker1.Date:=encodedate(currentyear, monthof(date),1); datetimepicker2.Date:=date; datetimepicker1.SetFocus; end; Создайте панель для вычисления диапазона даты/времени. ![]() Указания: нанес на форму компонент Panel и задал свойство Caption='Задание 2 (диапазоны)'. На панели разместил два компонента DataTimePicker (Win32). Как и ранее, в первом поле отобразим первый день текущего месяца, а во втром - текущую дату. Для этого в событие OnCreate формы добавил команды: DateTimePicker3.Date:=encodedate(currentyear, monthof(date),1); DateTimePicker4.Date:=date; Ниже разместил компонент RadioGroup (Standard) и в свойстве Items ввел названия переключателей. Для задания активным первого переключателя задал свойство ItemIndex=0. Разместил текстовое поле Edit (Standard) для отображения результата. Задал свойства: ReadOnly=true, Text очистить. Разместил кнопку Button (Standard). В свойстве Caption указал надпись на кнопке. Для кнопки ввел код: procedure TForm1.Button3Click(Sender: TObject); begin if DateTimePicker3.date>DateTimePicker4.date then exit; case radiogroup1.ItemIndex of 0: edit1.Text:=FloatToStr(daysbetween(DateTimePicker3.Date,DateTimePicker4.Date)); 1: edit1.Text:=FloatToStr(hoursbetween(DateTimePicker3.Date,DateTimePicker4.Date)); 2: edit1.Text:=FloatToStr(minutesbetween(DateTimePicker3.Date,DateTimePicker4.Date)); end; end; Реализовал возможность изменения даты на указанное количество лет, месяцев или дней. При этом результат выводится в форматах для разных СУБД ![]() Указания: нанес на форму компонент Panel и задал свойство Caption='Задание 3 (расчет)'. На панели разместил компонент DataTimePicker (Win32). Для отображения в нем текущей даты в событие OnCreate формы добавил команду: DateTimePicker5.Date:=date; Разместил текстовое поле Edit (Standard) для ввода значения изменения даты. Очистил свойство Text. Ниже разместил компонент RadioGroup (Standard) и в свойстве Items ввел названия переключателей. Для задания активным первого переключателя задал свойство ItemIndex=0. Рядом разместил еще один компонент RadioGroup (Standard) и в свойстве Items ввел названия форматов вывода. Для задания активным первого переключателя задал свойство ItemIndex=0. Разместил текстовое поле Edit (Standard) для отображения результата. Задал свойства: ReadOnly=true, Text очистить. Разместил кнопку Button (Standard). В свойстве Caption указал надпись на кнопке. Для кнопки ввел код: procedure TForm1.Button4Click(Sender: TObject); var d:TDateTime; begin case radiogroup2.ItemIndex of 0: d:=incyear(DateTimePicker5.Date,StrToInt(Edit2.Text)); 1: d:=incmonth(DateTimePicker5.Date,StrToInt(Edit2.Text)); 2: d:=incday(DateTimePicker5.Date,StrToInt(Edit2.Text)); end; case radiogroup3.ItemIndex of 0: Edit3.Text:=FormaTDatetime('dd.mm.yyyy',d); 1: Edit3.Text:=FormaTDatetime('#mm"/"dd"/"yyyy#',d); 2: Edit3.Text:=FormaTDatetime('mm-dd-yyyy',d); end; end; end. |