Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

пояснительная записка

.doc
Скачиваний:
35
Добавлен:
17.02.2016
Размер:
532.48 Кб
Скачать

Министерство образования и науки РФ

Федеральное агентство по образованию

Рыбинская Государственная Авиационная Технологическая Академия

имени П. А. Соловьева

Факультет радиоэлектроники и информатики

Кафедра вычислительных систем

КУРСОВАЯ РАБОТА

по дисциплине

«Системное программное обеспечение»

на тему: «Ежедневник»

Пояснительная записка

Студент группы ЗВП-07……………………………………………….. Афанасьев Д. А.

Преподаватель………………………………………………………….. Тонкий Л. В.

Рыбинск 2009

Задание

Содержание

Введение………………………………………………………………………………..

1 Техническое задание………………………………………………………………...

    1. Название и назначение разрабатываемой программы……………………….

    2. Основание для разработки……………………………………………………..

    3. Технические требования к программе………………………………………...

    4. Функциональные требования к программе....………………………………...

    5. Требования по надежности…………………………………………………….

    6. Разрабатываемая документация……………………………………………….

    7. Этапы и сроки выполнения программы………………………………………

  1. Анализ технического задания…...…………………………………………………

  2. Разработка и описание программы………………………………………………..

  3. Руководство пользователя…………………………………………………………

  4. Текст программы……………………………………………………………………

    1. Модуль Unit1……………………………………………………………………

    2. Модуль Unit2……………………………………………………………………

    3. Модуль Unit3……………………………………………………………………

    4. Модуль Unit4……………………………………………………………………

    5. Модуль MyUnit…………………………………………………………………

Заключени……………………………………………………………………………..

Список использованных источников………………………………………………..

4

5

5

5

5

5

6

6

6

7

8

12

18

18

28

33

35

35

46

47

Введение

В данной курсовой работе разрабатывается прикладная программа «Ежедневник», реализующая функции телефонного справочника и планировщика заданий. Программа позволяет пользователю планировать свое расписание на целый день, который разбит с шагом 30 минут. А телефонный справочник позволяет хранить все важные контакты.

1 Техническое задание

Разработал студент гр. ЗВП-07 Афанасьев Д. А.

Утвердил Тонкий Л. В.

    1. Название и назначение разрабатываемой программы

Представленная программа называется «Ежедневник». Эта программа относится к числу программ, расширяющих возможности компьютера. Программа предназначена для планирования распорядка дня пользователя и выполняет функции планировщика задач с будильником.

    1. Основание для разработки

Основанием для разработки является задание на курсовую работу по дисциплине «Системное программное обеспечение» на тему «Ежедневник».

    1. Техническое требования к программе

Для работы программы необходимы:

- процессор Pentium100 или выше;

- операционная система Windows 9x или выше;

- манипулятор мышь;

- 2 Мб внешней памяти;

    1. Функциональные требования к программе

В реализуемой программе должны выполнять следующие требования:

- ежедневник открывается на текущей дате;

- просмотр записей без ограничений по дате;

- установление будильника на определенное время

- добавление и изменение заметок о распорядке дня;

- информация о свободном времени на следующую неделю;

- телефонный справочник;

- сохранение информации о всех внесенных записях во внешнем файле;

- программа должна обладать понятным интерфейсом и относительной простотой работы с ней;

- реализовать вызов файла помощи, содержащего руководство по пользованию программой.

    1. Требования по надежности

Программа не должна проводить к нарушению работы операционной системы или других приложений. Программа должна работать без сбоев и аварий.

    1. Разрабатываемая документация

К программе должна быть приложена пояснительная записка. Пояснительная записка должна быть выполнена в соответствии со стандартами предприятия СТП 1.01-1.03-2002

    1. Этапы и сроки выполнения программы

- разработка технического задания – 1 нед.

- разработка и описание программы – 3 нед.

- разработка руководства пользователя – 1 нед.

- оформление пояснительной записки и сдача преподавателю на проверку – 1 нед.

- защита курсовой работы

  1. Анализ технического задания

Необходимо написать программу в среде, реализующую функцию Ежедневник. Данная программа должна полностью соответствовать требованиям технического задания. Необходимо, чтобы при запуске программы Ежедневник открывал страницу с текущей датой и информацией о свободном времени на следующую неделю. Кроме того, необходимо реализовать функцию выбора произвольной даты с формированием списка дел на выбранную дату. Кроме планировщика заданий в программе реализован справочник телефонных номеров. При разработке программы следует учесть, что информация о внесенных событиях и контактах должны храниться в файле.

Для написания программы целесообразно использовать среду DELPHI. Использование среды DELPHI позволяет написать программу с удобным интерфейсом. Кроме того программы, написанные на DELPHI, хорошо сочетаются с широко распространенными на сегодняшний день операционными системами WINDOWS. Использование WINDOWS накладывает ограничение на переход по дате (год должен находиться в интервале 1980 - 2099). Поскольку используется среда DELPHI, для удобной работы с программой необходим манипулятор "мышь". Для слаженной работы программы (реализации вставки рисунков), необходимо наличие свободных 2 Мб внешней памяти.

Одним из основных требований к программе является требование не нарушения работы операционной системы и других приложений. Поэтому при, написании программы следует не работать или до минимума сократить работу с системными файлами.

3 Разработка и описание программу

В программе используется пять модулей:

- модуль описания классов;

- модуль основной части программы;

- модуль редактор дат;

- модуль для удаления записей из телефонного справочника;

- модуль для календаря.

В модуле для удаления записей из телефонного справочника используются процедуры для загрузки фамилий из файла, вызов процедур и функций для поиска и удаления нужной фамилии.

В модуле редактор дат используются процедуры для инициализации данных в таблице, загрузки списка дат, добавление, редактирование дат, удаление всех или одной определенной даты.

Модуль основной части программы использует в своей работе все остальное модули программы и процедуры, реализующие все этапы работы программы и взаимодействия с пользователем.

Рассмотрим программную реализацию этого модуля. Данный модуль включает в себя следующие процедуры:

FormCreate

FormClose

PlanDay

DateTimePicker1Change

AddPhoneClick

SaveDBClick

DelRecClick

PhoneDbButtonClick

AlarmButtonClick

GetAlarm

ControlWindow

IconMouse

Ic

PlanNextWeek

Процедура FormCreate производит открытие файла или при его отсутствии создание файла, а также инициализацию ежедневника на текущую дату, загрузка из файла список задач и инициализация заголовков таблицы телефонного справочника.

Процедура FormClose производит закрытие ежедневника и освобождение памяти.

Процедура DateTimePicker1Change производит поиск даты в файле. Если дата найдена формируется список задач на найденную дату.

Процедура AddPhoneClick производит добавление строки ввода в телефонном справочнике.

Процедура SaveDBClick производит сохранение всего телефонного справочника, при его редактировании или добавлении контакта, в файл.

Процедура DelRecClick вызывает диалоговое окно для удаления необходимого контакта.

Процедура PhoneDbButtonClick позволяет загрузить в телефонный справочник все контакты, которые хранятся в файле.

Процедура AlarmButtonClick производит включение или отключение будильника.

Процедура GetAlarm считывает время включения будильника и сообщение о том что время истекло.

Процедура ControlWindow позволяет отловить минимизацию окна главной формы и добавляет значок в системный трей.

Процедура IconMouse производит реакцию нажатия клавиш мышки на значке.

Процедура Ic производит операции со значком в системном трее. В зависимости от того какой параметр передается в процедуру изменяется операции со значком: 1 – добавить, 2 – удалить, 3 – заменить.

Процедура PlanNextWeek производит вычисление начала следующей недели, а также вычисляет количество свободного времени на следующую неделю

Рассмотрим основные этапы работы программы. После запуска программы происходит инициализация ежедневника сегодняшним числом, открытие или при отсутствии файла, его создание, создания заголовков таблицы телефонного справочники и таблицы на форме редактор дней, а также количество свободного времени за текущий день и за следующую неделю. Программа имеет 4 основных блока: работа с телефонным справочником, работа с редактором дней, работа с будильником. Блок-схема разрабатываемой программы представлена на рисунке 3.1

Рисунок 3.1 – Блок-схема работы программы (начало)

Рисунок 3.1 – Блок-схема работы программы (продолжение)

  1. Руководство пользователя

Программа «Ежедневник» позволяет составлять план дня с интервалом в 30 минут, при этом в программу встроен будильник который поможет вам не забыть о каком-нибудь важном событии, при истечении времени на экран выводиться сообщение, а на акустическую систему компьютера выводиться звуковой сигнал. В программу также встроен телефонный справочник и календарь.

Рассмотрим возможности программы. После запуска программы в разделе «Сегодня» мы видим сегодняшнюю дату (рисунок 4.1). C помощью этого раздела можно просматривать запланированные задачи на другие даты, если нажать на него, то появиться мини-календарь (рисунок 4.2), где собственно и производиться выбор необходимой даты. Выбираемый год должен входить в интервал 1980 – 2099 гг.

Рисунок 4.1 – Главное окно программы.

После выбора даты, в разделе «Запланировано» появятся все ваши запланированные задачи. Для примера выберем 10 апреля и посмотрим, что у нас там запланировано (рисунок 4.2). Мы видим, что на 10 апреля у нас назначено 3 важных задачи. Если теперь щелкнуть по одной из них мышью, то мы увидим что время и сообщение автоматически переносятся в раздел «Будильник». Будильник нам поможет не забыть о наших задачах, что бы его включить необходимо нажать на клавишу «Вкл.», после чего она примет утопленное состояние и надпись на ней измениться на «Выкл.» (рисунок 4.3).

Рисунок 4.2 – Реализация перехода по дате

Для того что бы выключить будильник вам необходимо повторно нажать на ту же самую клавишу, при этом она вернется в обратное состояние.

Рисунок 4.3 – Реализация автоматического переноса данных в раздел «Будильник»

Допустим, что у нас истекло время, при этом зазвучит звуковой сигнал, в виде сирены и на экране появиться сообщение с указанием на время и сообщение. Это окно приведено на рисунке 4.4.

Кроме запланированных задач на 10 апреля программа нам сообщает сколько у вас осталось свободного времени в разделе «Количество свободного времени» (рисунок 4.3). В этом разделе две записи первая указывает количество свободного времени на выбранный день, а вторая – на следующую неделю. Для того что бы не возникло путаницы в количестве свободного времени записи выделены разным цветом. Количество свободного времени на следующую неделю вычисляется только при запуске программы, и не меняется при смене даты в разделе «Сегодня»

Рисунок 4.4 – Диалоговое окно сообщающее, что время истекло

Для редактирования дат в программе предусмотрена дополнительная форма, в этой форме вы можете добавлять, удалять и редактировать ваши даты. Рассмотрим

ее (рисунок 4.5).

Рисунок 4.5 – Окно «Редактор дня»

Слева в окне «Редактор дня» находится таблица с помощью, которой вы можете ввести данные на определенное время. Справа находятся: кнопки управления датами, список дат, на которые у вас запланированы задачи и раздел «Дата», где указывается интересующая вас дата. Для того что бы быстро перейти к интересуемой вами дате достаточно выбрать дату в списке дат, при этом дата автоматически переноситься в раздел «Дата»

Для того чтобы добавить дату в список дат необходимо:

  1. Выбрать необходимую вам дату в верхней части окна, в разделе «Дата»

  2. Перейти к таблице находящейся слева от раздела «Дата», и внести в соответствии с указанным временем необходимые задачи

  3. Нажать кнопку «Добавить запись»

Если у вас по какой-то причине изменился план дня его можно легко изменить, для этого вам потребуется выполнить следующие действия:

  1. Выбрать необходимую вам дату в разделе «Дата» или в «Списке дат»

  2. Нажать на кнопку «Редактировать запись», при этом таблица заполниться запланированными задачами

  3. Отредактировать в таблице ваши изменения

  4. Нажать на кнопку «Сохранить запись»

Для удаления записи вам необходимо также выполнит несколько действий:

  1. Выбрать необходимую вам дату в разделе «Дата» или в «Списке дат»

  2. Нажать на кнопку «Удалить запись», после этого появиться диалоговое окно с подтверждением об удалении, рисунок 4.6

  3. В появившемся диалоговом окне подтвердить ваше действие

Для удаления всех записей из списка дат необходимо нажать на кнопку <Удалить все записи>

Рисунок 4.6 – Диалоговое окно подтверждающие удаление даты

Для хранения телефонных номеров в программе предусмотрен телефонный справочник (рисунок 4.7), куда вы можете занести наиболее важные вам контакты.

Рисунок 4.7 – Телефонный справочник

Для работы с телефонным справочником предусмотрено контекстовое меню, которое вызывается щелчком правой кнопкой мышки.

Для добавлении записи необходимо выбрать раздел меню «Добавить контакт», при этом в таблице появляется свободная строка ввода данных. После того как все данные будут введены их необходимо сохранить, для этого в контекстовом меню выбираем пункт «Сохранить изменения».

Для того чтобы удалить ненужный контакт выбираем пункт контекстового меню «Удалить контакт». После чего на экране появиться диалоговое окно «Список контактов» (рис. 4.7). В нем вам необходимо выбрать фамилию удаляемого контакта и нажать на кнопку «Ok». После этого таблица телефонного справочника сократиться на одну запись. Данные в этом случае не нужно сохранять, через пункт контекстового меню «Сохранить изменения»

Рисунок 4.7 – Диалоговое окно «Список контактов».

Дополнительной возможностью программы является окно «Календарь», здесь вы можете уточнить, без особых усилий, интересующую вас дату. Это окно показано на рисунке 4.8.

Рисунок 4.8 – Диалоговое окно «Календарь»

Для удобства в использовании программой, в ней предусмотрен механизм сворачивания программы в системный трейе (рисунок 4.9), при этом программа не мешает работе пользователя и может быть вызвана в любой момент времени. При нажатии правой кнопки мыши на значке появляется контекстовое меню из 4 пунктов: «Восстановить», «Добавить/Редактировать дату», «Включить/Выключить будильник», «Выход».

Рисунок 4.9 – Значок программы в системном трейе

При нажатии «Восстановить» восстанавливается главное окно программы. При нажатии «Добавить/Редактировать дату» на экране появляется окно «Редактор дат», которое было описано выше. При нажатии «Включить/Выключить будильник» происходит включение либо выключение будильника. При выборе пункта «Выход» программы закрывается.

  1. Текст прогрммы

5.1 Модуль класса Unit1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, MyUnit, Mask, ImgList, Grids, Buttons, ShellApi;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

MenuEg: TMenuItem;

MenuListDay: TMenuItem;

MenuEditDay: TMenuItem;

ToolBar1: TToolBar;

DayButton: TToolButton;

EditDayButton: TToolButton;

ToolButton3: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

Panel1: TPanel;

Label1: TLabel;

DateTimePicker1: TDateTimePicker;

GroupBox1: TGroupBox;

Label2: TLabel;

GroupBox2: TGroupBox;

ListBox1: TListBox;

ImageList1: TImageList;

PhoneDbButton: TToolButton;

GroupBox3: TGroupBox;

Label3: TLabel;

MaskEdit1: TMaskEdit;

Label4: TLabel;

Edit1: TEdit;

Panel2: TPanel;

StringGrid1: TStringGrid;

PopupMenu1: TPopupMenu;

AddPhone: TMenuItem;

SaveDB: TMenuItem;

DelRec: TMenuItem;

MenuCalend: TMenuItem;

Tire: TMenuItem;

MenuExit: TMenuItem;

MenuBook: TMenuItem;

PhoneBook: TMenuItem;

Timer1: TTimer;

AlarmButton: TSpeedButton;

PopupMenu2: TPopupMenu;

PopEG: TMenuItem;

PopAddDate: TMenuItem;

PopOnAlarm: TMenuItem;

N1: TMenuItem;

PopExit: TMenuItem;

Label5: TLabel;

Help: TMenuItem;

procedure MenuEditDayClick(Sender: TObject);

procedure EditDayButtonClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure DateTimePicker1Change(Sender: TObject);

procedure PhoneDbButtonClick(Sender: TObject);

procedure DayButtonClick(Sender: TObject);

procedure AddPhoneClick(Sender: TObject);

procedure SaveDBClick(Sender: TObject);

procedure DelRecClick(Sender: TObject);

procedure MenuListDayClick(Sender: TObject);

procedure MenuCalendClick(Sender: TObject);

procedure ToolButton3Click(Sender: TObject);

procedure MenuExitClick(Sender: TObject);

procedure ToolButton6Click(Sender: TObject);

procedure PhoneBookClick(Sender: TObject);

procedure AlarmButtonClick(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure ListBox1Click(Sender: TObject);

procedure PopEGClick(Sender: TObject);

procedure PopAddDateClick(Sender: TObject);

procedure PopOnAlarmClick(Sender: TObject);

procedure PopExitClick(Sender: TObject);

procedure HelpClick(Sender: TObject);

private

procedure ControlWindow(var MSG: TMessage); // ОТЛАВЛИМАЕМ МИНИМИЗАЦИЮ ПРИЛОЖЕНИЯ

message WM_SYSCOMMAND;

procedure IconMouse(var Msg: Tmessage); // РЕАКЦИЯ НАЖАТИЙ КНОПОК НА ЗНАЧКЕ В ТРЕЕ

message WM_USER + 1;

public

procedure PlanDay(n: integer);

procedure PlanNextWeek(DT: TDate);

procedure GetAlarm; // СЧИТЫВАЕМ ВРЕМЯ И СООБЩЕНИЕ

procedure Ic(n: integer; Icon: TIcon);

procedure OnMinimizeProc(sender: TObject);

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

//********************************************************

// ГЛАВНАЯ ФОРМА *

//********************************************************

// ПРИ СОЗДАНИИ ФОРМЫ ИДТЕ ИНИЦИАЛИЗАЦИЯ ДАННЫХ

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;

begin

TypFile:= TTypFile.Create;

PhoneFile:= TPhoneFile.create;

DateTimePicker1.Date:= Now; // сегодняшняя дата

GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланировано: ';

i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

if TypFile.DableDate then // если дата существует тогда формируем список дел

PlanDay(i)

else

begin

ListBox1.Items.Add('На этот день у вас ни чего не запланировано');

Label2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ': ' + 'Вы свободны';

end;

// таблица телефонного справочника

StringGrid1.Cells[0,0]:= 'Фамилия';

StringGrid1.Cells[1,0]:= 'Телефон';

StringGrid1.Cells[2,0]:= 'Адресс';

StringGrid1.Cells[3,0]:= 'Организация';

StringGrid1.Cells[4,0]:= 'Примечание';

PlanNextWeek(Form1.DateTimePicker1.Date);

end;

// ПРИ ЗАКРЫТИИ ФОРМЫ ИДЕТ ОСВОБОЖДЕНИИ ПАМЯТИ

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

PhoneFile.CloseDB;

PhoneFile.Destroy;

TypFile.CloseDB;

TypFile.Destroy;

end;

//*******************************************************

// СПРАВОЧНИК ДАТ *

//*******************************************************

// ФОРМИРУЕМ СПИСОК ЗАДАЧ НА ТЕКУЩИЙ ДЕНЬ

procedure TForm1.PlanDay(n: integer);

var

i: integer;

s: string;

hor,TimeFree: integer;

begin

seek(TypFile.FFile, n);

read(TypFile.FFile, EG);

TimeFree:= 1440;

hor:= 0;

for i:= 0 to 49 do

begin

if eg.work[i] <> '' then

begin

s:= eg.clock[i] + ' ' + eg.work[i];

Form1.ListBox1.Items.Add(s);

TimeFree:= TimeFree - 30;

end;

end;

hor:= TimeFree div 60;

TimeFree:= TimeFree mod 60;

if hor <> 24 then

Form1.Label2.Caption:= 'На ' + EG.Date + ': ' + IntToStr(hor) + ' час. ' + IntToStr(TimeFree) + ' мин.'

else

Form1.Label2.Caption:= 'На ' + EG.Date + ': вы свободны';

end;

// ПРИ СМЕНЕ ДАТЫ ФОРМИРУЕМ СПИСОК ДЕЛ

procedure TForm1.DateTimePicker1Change(Sender: TObject);

var

i: integer;

begin

ListBox1.Items.Clear;

GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланирвано: ';

i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

if TypFile.DableDate then // если дата существует тогда формируем список дел

PlanDay(i)

else

begin

ListBox1.Items.Add('На этот день у вас ни чего не запланировано');

Form1.Label2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ': ' + 'Вы свободны';

end;

end;

// ВЫСЧИТЫВАЕМ СВОБОДНОЕ ВРЕМЯ НА СЛЕДУЮЩУЮ НЕДЕЛЮ

procedure TForm1.PlanNextWeek(DT: TDate);

var

i,j,n: integer; // СЧЕТЧИК

Y,M,D: word; // ГОД, МЕСЯЦ, ДЕНЬ

Time_F, Hor, Min: integer; // СВОБОДНОЕ ВРЕМЯ, ЧАС, МИНУТА

begin

DT:= TypFile.NextWeek(DT); // ИЩЕМ НАЧАЛО СЛЕДУЮЩЕЙ НЕДЕЛИ

Time_F:= 10080; // 10080 МИН. ЗА 7 ДНЕЙ

for i:= 0 to 6 do // ЦИКЛ ИЗ 7 ДНЕЙ

begin

n:= TypFile.FindRec(DateToStr(Dt));// ИЩЕМ В СПИСКЕ ДАТУ

if TypFile.DableDate then // ЕСЛИ НАШЛИ ВЫСЧИТЫВАЕМ ВРЕМЯ

begin

Seek(TypFile.FFile, n);

Read(TypFile.FFile, EG);

for j:= 0 to 49 do

begin

if eg.work[j] <> '' then

Time_F:= Time_F - 30;

end;

end;

DecodeDate(DT, Y, M, D); // РАЗБИВАЕМ ДАТУ НА ГОД, МЕСЯЦ И ДЕНЬ

D:= D + 1; // ПЕРЕХОДИМ НА СЛЕДУЮЩИЙ ДЕНЬ

TypFile.CheckDay(Y,M,D); // ПРОВЕРЯЕМ НЕ ПЕРЕШЕЛ ЛИ ДЕНЬ ЗА 31 ЧИСЛО

// ЕСЛИ ПЕРЕШЛИ ТО ПРОЦЕД. ВЕРНЕТ ОТКОРЕКТИВАННУ ДАТУ

DT:= EncodeDate(Y,M,D); // ПРЕОБРАЗУЕМ

end;

Hor:= Time_F div 60;

Min:= Time_F mod 60;

if hor <> 168 then

Form1.Label5.Caption:= 'На следующую неделю: ' + IntToStr(hor) + ' час : ' +

IntToStr(min) + ' мин'

else

Form1.Label5.Caption:= 'На следующую неделю: ' + 'ни чего нет'

end;

//********************************************************

// ПАНЕЛЬ БЫСТРОГО ДОСТУПА И МЕНЮ *

//********************************************************

// КНОПКА <1 В ПАНЕЛИ БЫСТ. ДОСТУПА>

procedure TForm1.DayButtonClick(Sender: TObject);

var

i: integer;

begin

ListBox1.Items.Clear;

GroupBox2.Caption:= 'На ' + DateToStr(DateTimePicker1.Date) + ' запланировано: ';

i:= TypFile.FindRec(DateToStr(DateTimePicker1.Date)); // номер положения даты в файле

if TypFile.DableDate then // если дата существует тогда формируем список дел

PlanDay(i)

else

ListBox1.Items.Add('На этот день у вас ни чего не запланировано');

Panel1.Visible:= true;

Panel2.Visible:= False;

end;

// КНОПКА <РЕДАКТОР ДНЯ В ПАНЕЛИ БЫСТРОГО ДОСТУПА>

procedure TForm1.MenuEditDayClick(Sender: TObject);

begin

Form2.ShowModal;

end;

// КНОПКА <КАЛЕНДАРЬ В ПАНЕЛИ БЫСТРОГО ДОСТУПА>

procedure TForm1.ToolButton3Click(Sender: TObject);

begin

Form4.ShowModal;

end;

// КНОПКА <ВЫХОД>

procedure TForm1.ToolButton6Click(Sender: TObject);

begin

Form1.Close;

end;

// МЕНЮ <СПИСОК>

procedure TForm1.MenuListDayClick(Sender: TObject);

begin

DayButtonClick(nil);

end;

// МЕНЮ <РЕДАКТИР ДАТЫ>

procedure TForm1.EditDayButtonClick(Sender: TObject);

begin

Form2.ShowModal;

end;

// МЕНЮ <КАЛЕНДАРЬ>

procedure TForm1.MenuCalendClick(Sender: TObject);

begin

Form4.ShowModal;

end;

// МЕНЮ <ВЫХОД>

procedure TForm1.MenuExitClick(Sender: TObject);

begin

Form1.Close;

end;

// МЕНЮ <СПРАВКА>

procedure TForm1.HelpClick(Sender: TObject);

begin

WinHelp(Form1.Handle, 'Help.hlp', HELP_CONTEXT, 1);

end;

//*****************************************************

// ТЕЛЕФОННЫЙ СПРАВОЧНИК *

//*****************************************************

// КОНСТЕКСТОВОЕ МЕНЮ: ДОБАВИТЬ КОНТАКТ

procedure TForm1.AddPhoneClick(Sender: TObject);

begin

PhoneFile.NumberRec:= PhoneFile.NumberRec + 1;

StringGrid1.RowCount:= PhoneFile.NumberRec + 2;

end;

// КОНТЕКСТОВОЕ МЕНЮ: <СОХРАНИТЬ ИЗМЕНЕНИЯ>

procedure TForm1.SaveDBClick(Sender: TObject);

var

i: integer;

begin

Seek(PhoneFile.FPhoneFile, 0);

Truncate(PhoneFile.FPhoneFile); // СТИРАЕМ ВСЕ ЗАПИСИ ДЛЯ ПЕРЕЗАПИСИ

for i:= 0 to PhoneFile.NumberRec do

begin

Phone.Name:= StringGrid1.Cells[0, i+1];

Phone.Tel:= StringGrid1.Cells[1, i+1];

Phone.Address:= StringGrid1.Cells[2, i+1];

Phone.Org:= StringGrid1.Cells[3, i+1];

Phone.comment:= StringGrid1.Cells[4, i+1];

write(PHoneFile.FPhoneFile, Phone);

end;

end;

// КОНТЕКСТОВОЕ МЕНЮ: <УДАЛИТЬ КОНТАКТ>

procedure TForm1.DelRecClick(Sender: TObject);

begin

Form3.Show;

end;

// ПАНЕЛЬ БЫСРОГО ДОСТУПА; КНОПКА <4>

procedure TForm1.PhoneDbButtonClick(Sender: TObject);

var

i: integer;

begin

if StringGrid1.RowCount < PhoneFile.NumberRec + 1 then

StringGrid1.RowCount:= PhoneFile.NumberRec + 1; // КОЛ-ВО СТРОК

// ДОЛЖНО БЫТЬ НА ОДНУ БОЛЬШЕ

seek(PhoneFile.FPhoneFile, 0); // УСТАНАВАЛИВАЕМ КУРСОР В НАЧАЛО ФАЙЛА

for i:= 0 to PhoneFile.NumberRec - 1 do // ИДЕМ ОТ НАЧАЛА ДО КОНЦА

begin

Phone:= PhoneFile.ReadRec; // ЧИТАЕМ ДАННЫЕ И ЗАНОСИМ В ТАБЛИЦУ

StringGrid1.Cells[0,i + 1]:= phone.Name;

StringGrid1.Cells[1,i + 1]:= Phone.Tel;

StringGrid1.Cells[2,i + 1]:= Phone.Address;

StringGrid1.Cells[3,i + 1]:= Phone.Org;

StringGrid1.Cells[4,i + 1]:= Phone.comment;

end;

Panel2.Visible:= true;

Panel1.Visible:= False

end;

// МЕНЮ <ТЕЛЕФОНЫЙ СПРАВОЧНИК>

procedure TForm1.PhoneBookClick(Sender: TObject);

begin

PhoneDbButtonClick(nil);

end;

//************************************************

// БУДИЛЬНИК *

//************************************************

// КНОПКА <ВКЛ./ВЫКЛ.>

procedure TForm1.AlarmButtonClick(Sender: TObject);

begin

if AlarmButton.Down then

begin

Alarm:= TAlarm.Create;

if (Form1.Edit1.Text <> '') and (Form1.MaskEdit1.Text <> ' : ') then

begin

Form1.GetAlarm;

Form1.Timer1.Enabled:= true;

end

else

begin

Form1.AlarmButton.Down:= False;

MessageDlg('Введите данные!!!', mtInformation, [mbOk], 0);

exit;