Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОА Delphi формата А4.doc
Скачиваний:
7
Добавлен:
29.08.2019
Размер:
1.58 Mб
Скачать
  1. Создание приложение Органайзер

Цель занятия: Изучить свойства и методы компонента класса TCalendar

Задание: Создайте приложение ОРГАНАЙЗЕР для просмотра и добавления заметок в текстовый файл zametka.txt (данный файл необходимо создать в текущем каталоге).

Д ля выполнения задания необходимо:

  1. Создание интерфейса программы. На форму поместите следующие компоненты (смотри рисунок справа).

  2. Измените следующие свойства:

  • компонент Memo2 (используется для просмотра текущих заметок) – только для чтения;

  • компонент ComboBox1 измените свойство Items – содержит список месяцев: от января до декабря;

  • компонент ComboBox2 измените свойство Items – содержит список тем заметок: День рождения, Встреча, Напомнить о..;

  • компонент Calendar1 измените свойства (шрифт, начертание, размер, вид) согласно рисунка;

Описание переменных, использованных в программе

Добавьте раздел описания типов данных перед разделом описания переменных

type //раздел описания типов данных

zametka=record // описание типа запись

tema:string[15]; //для хранения темы заметки

text:string[50]; //текст заметки

day:1..31; //день заметки

month:1..12; //месяц заметки

year:integer; //год рождения для темы День рождения

end;

Var //раздел описания переменных

zF: file of zametka; //файл записей

v: zametka; //переменная запись

i: integer;

g_r:string; //используется для ввода года рождения (только для темы День рождения)

  • измените минимальное и максимальное значение для компонентов SpidEdit1 (1900..2010) и SpidEdit2 (1..31);

  1. Разместите добавленные компоненты на форме (смотрите рисунок).

Напишите следующие программы для реализации приложения:

  • На события активизации формы напишите процедуру для отображения изменения даты в добавленных компонентах SpinEdit1, SpinEdit2, ComboBox1:

procedure TForm1.FormActivate(Sender: TObject);

begin

SpinEdit1.Value:=Calendar1.Day;

ComboBox1.ItemIndex:=Calendar1.Month-1;

SpinEdit2.Value:=Calendar1.Year;

end;

  • При выборе месяца в раскрывающемся списке месяцев в компоненте ComboBox1 отобразить изменение на календаре;

procedure TForm1.ComboBox1Change(Sender: TObject);

begin

Calendar1.Month:=ComboBox1.ItemIndex+1;

end;

  • При выборе года в списке написать процедуру для отображения изменения на календаре

procedure TForm1.SpinEdit2Change(Sender: TObject);

begin

Calendar1.Year:=SpinEdit2.Value;

end;

  • При выборе числа в списке написать процедуру для изменения числа на календаре;

  • На событие нажатия кнопки PrevMonth – написать процедуру для перехода к предыдущему месяцу текущего года;

procedure TForm1.Button3Click(Sender: TObject);

begin

ComboBox1.ItemIndex:=Calendar1.Month;

Calendar1.PrevMonth;

end;

  • На событие нажатия кнопки NextMonth – написать процедуру для перехода к следующему месяцу текущего года;

  • На событие нажатия кнопки PrevYear – написать процедуру для перехода к предыдущему году;

procedure TForm1.Button4Click(Sender: TObject);

begin

Calendar1.PrevYear;

SpinEdit2.Value:=Calendar1.Year;

end;

  • На событие нажатия кнопки NextYear – написать процедуру для перехода к следующему году;

  • На событие нажатия кнопки Добавить заметку написать процедуру, ответсвтенную за добавления заметки на выбранную дату

procedure TForm1.Button5Click(Sender: TObject);

begin

AssignFile(zF, 'zametka.txt');

reset(zF);

v.tema:=ComboBox2.Text;

v.text:=Memo1.Text;

v.day:=Calendar1.Day;

v.month:=Calendar1.Month;

if v.tema=’Äåíü рождения’ then

begin

g_r:=InputBox(‘Введите ãîä рождения’,v.text,g_r);

v.year:=strtoint(g_r);

g_r:='';

end;

seek(zF,filesize(zF));

Write(zF,v);

Memo1.Clear;

CloseFile(zF);

end;

  • На событие OnChange компонента Calendar1 напишите процедуру, отвечающую за изменение текущего значения даты, а также для отображения данных – текущих заметок в Memo2.

procedure TForm1.Calendar1Change(Sender: TObject);

begin

Memo2.Clear;

SpinEdit1.Value:=Calendar1.Day;

ComboBox1.ItemIndex:=Calendar1.Month-1;

SpinEdit2.Value:=Calendar1.Year;

AssignFile(zF, 'zametka.txt'); reset(zF);

for i:=0 to Filesize(zF)-1 do

begin

seek(zF,i);

Read(zF,v);

if (v.day=Calendar1.Day) and (v.month=Calendar1.Month)

then

if v.tema='День рождения' then

Memo2.Lines.Add(v.tema+' '+v.text+' '+inttostr(2007-v.year))

else

Memo2.Lines.Add(v.tema+' '+v.text);

end;

closeFile(zF);

end;