Ім'я файлу: отчёт 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.
скачати

© Усі права захищені
написати до нас