Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет 2 по основам программирования.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.3 Mб
Скачать

Лабораторное занятие № 11 Тема: Создание проекта с использованием компонентов ввода и отображения чисел, дат и времени

Цель: приобретение компетенции программирования методов типа TDateTime в системе Delphi.

ТО и ПО: ОС Windows 7, Delphi 2010.

МО: методические указания.

Задание: Требуется разработать проект, демонстрирующий работу компонента Timer.

Описание хода выполнения работы:

1 этап: Размещение компонентов приложения. Настройка основных свойств.

Запустила систему программирования Delphi 2010.

Создайте Delphi – проект.

Со страницы Standart палитры компонентов поместила на форму один компонент: TLabel1.

Со страницы Additional палитры компонентов поместила на форму один компонент: TStaticText. Компонент StaticText.

Со страницы Additional палитры компонентов поместила на форму три компонента: TBitBtn1 , TBitBtn2, TBitBtn.

Со страницы System палитры компонентов поместите на форму компонент TTimer.

Настроила свойство Kind для первой кнопки. Для этого в свойстве Kind, которое определяет тип кнопки, выбрала значение bkОк. Изменила надпись, написав в свойстве Caption новое значение Старт.

8. Настроила свойство Kind для второй кнопки. Для этого в свойстве Kind выбрала значение bkNo. Изменила надпись, написав в свойстве Caption новое значение Стоп.

Настроила свойство Kind для третьей кнопки. Для этого в свойстве Kind выбрала значение bkAbort. Изменила надпись, написав в свойстве Caption новое значение Сброс.

Выполнила выравнивание положения кнопок на форме. Сначала выделила их в группу. Для этого, удерживая клавишу Shift, щелкнула мышкой по каждой кнопке, начиная с первой по порядку. Затем в главном меню Delphi выполнила команду Edit - Align… – выравнивание размещения. В открывшемся окне Alignment, в его левой части Horizontal (выравнивание компонентов по горизонтали), выбрала вариант Spaceequally – разместила с равными интервалами между компонентами. А в правой части окна – Vertical (выравнивание компонентов по вертикали) выбрала вариант Tops – выровнять компоненты по их верхним сторонам. Нажала кнопку OK, чтобы выполнить выравнивание компонентов. После этого, не снимая выделения с группы и удерживая клавишу Ctrl, с помощью клавиш со стрелочками переместила всю группу кнопок в нижнюю часть формы.

Для компонента StaticText изменила значение свойства Caption на 0. Изменила размер шрифта надписи. Для этого в свойстве Font в подсвойстве Size написала значение 12.Задала стиль бордюра, выбрав у свойства BorderStyle значение sbsSunken.

Настроила свойства таймера. Если таймер включен (свойство Enabled:=true), то периодически, через интервал времени, заданный в миллисекундах в свойстве Interval(по умолчанию значение равно 1000 mc=1 с), таймер срабатывает, вызывая событие OnTimer. Чтобы после запуска программы до нажатия соответствующей кнопки таймер был выключен, установила у его свойства Enabledзначение false.

2 этап: Программирование обработчиков событий

У кнопки BitBtn1 («Старт») в обработчике события OnClick записала:

Timer1.Enabled:=true;

При нажатии на эту кнопку таймер включается.

У кнопки BitBtn2 («Стоп») в обработчике события OnClick записала:

Timer1.Enabled:=false;

При нажатии на эту кнопку таймер выключается.

У компонента Timer1 создала событие OnTimer. В обработчик этого события записала:

Timer1.Tag:=Timer1.Tag+1;

StaticText1.Caption:=IntToStr(Timer1.Tag);

В данном приложении в значении свойстваTag я сохранила количество срабатываний таймера, что записано в первой строке этого обработчика события.

У кнопки BitBtn3 («Сброс») создала событие OnClick. В обработчик этого события записала:

Timer1.Enabled:=false;

Timer1.Tag:=0;

StaticText1.Caption:='0';

3 этап: Модернизация приложения

Разместила два компонента TLabel. Задала для первого надпись: Текущее время. Надпись для второго оставила без изменения.

В разделе реализации (implementation) объявила процедуру:

procedure TForm1.ShowTime;

begin Time:= now();

label1.Caption:=FormatDateTime('hh:mm:ss', Time); end;

Вручную в разделеTypeдобавилапроцедуру: procedureShowTime;

В обработчик OnTimer компонента Timer1 добавила вызов процедуры: ShowTime;

Размеcтила на форме компонент Label5.

Создалаобработчиксобытия:

procedure TForm1.FormCreate(Sender: TObject);

var

present: TDateTime;

year, month, day: WORD;

begin present:=now;

DecodeDate(present, year, month, day);

label5.Caption:='Сегодня '+ ' '+inttostr(day)+' '+inttostr(month)+' '+inttostr(year)+' ' +' деньнедели '+inttostr(DayOfWeek(present)); end;

Модернизировала программу, выводя названия месяца и дня недели.

Для этого объявила строковую константу в разделе реализации перед директивой препроцессора

const

tday:array[1..7] ofstring[20]= ('воскресение', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота');

в procedure TForm1.FormCreate(Sender: TObject) замениластроку:

label5.Caption:='Сегодня '+ ' '+inttostr(day)+' '+inttostr(month)+' '+inttostr(year)+' ' +' деньнедели'+tday[DayOfWeek(present)]; end;

Проверила разработанное приложение на работоспособность. Это продемонстрировано на рисунке 11.1.

Рисунок 11.1

Полный код разработанного приложения:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Label1: TLabel;

StaticText1: TStaticText;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

Timer1: TTimer;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

procedure BitBtn1Click(Sender: TObject);

procedure BitBtn2Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure BitBtn3Click(Sender: TObject);

procedure Showtime;

procedureFormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;Time:tdatetime;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin Timer1.Enabled:=True; end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin Timer1.Enabled:=false; end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

Timer1.Enabled:=false;

Timer1.tag:=0;

StaticText1.Caption:='0'; end;

procedure TForm1.FormCreate(Sender: TObject);

var present: TDateTime;

year,month,day: Word;

begin

DecodeDate(present,year,month,day);

label3.Caption:='Сегодня '+ ' '+inttostr(day)+' '+inttostr(month)+' '

+inttostr(year)+' '+' деньнедели'+inttostr(DayofWeek(present)); end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

ShowTime;

Timer1.Tag:=Timer1.Tag+1;

Statictext1.Caption:=inttostr(Timer1.tag); end;

procedure TForm1.Showtime;

begin

Time:=now();

label2.Caption:=formatdatetime('hh:mm:ss',Time);

end; end.

Вывод: В ходе лабораторного занятия был разработан проект, демонстрирующий работу компонента Timer. При создании проекта с использованием компонента ввода и отображения чисел, дат и времени приобрела компетенции программирования методов типа TDateTime в системе Delphi.