Автор: Пользователь скрыл имя, 12 Декабря 2010 в 02:16, курсовая работа
В данной курсовой работе разрабатывается прикладная программа «Ежедневник», реализующая функции телефонного справочника и планировщика заданий. Программа позволяет пользователю планировать свое расписание на целый день, который разбит с шагом 30 минут. А телефонный справочник позволяет хранить все важные контакты.
Введение………………………………………………………………………………..
1 Техническое задание………………………………………………………………...
1.Название и назначение разрабатываемой программы……………………….
2.Основание для разработки……………………………………………………..
3.Технические требования к программе………………………………………...
4.Функциональные требования к программе....………………………………...
5.Требования по надежности…………………………………………………….
2.Анализ технического задания…...…………………………………………………
3.Разработка и описание программы………………………………………………..
4.Руководство пользователя…………………………………………………………
5.Приложение ……………………………………………………………………
1.Модуль Unit1……………………………………………………………………
2.Модуль Unit2……………………………………………………………………
3.Модуль Unit3……………………………………………………………………
4.Модуль Unit4……………………………………………………………………
5.Модуль MyUnit…………………………………………………………………
Заключение……………………………………………………………………………..
Глоссарий ……………………………………………………………………………...
Список использованной литературы………………………………………………..
// БУДИЛЬНИК *
//****************************
// КНОПКА <ВКЛ./ВЫКЛ.>
procedure TForm1.AlarmButtonClick(
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;
end;
//Form1.AlarmButton.Glyph.
Form1.AlarmButton.Caption:= 'Выкл';
end
else
begin
// Form1.AlarmButton.Glyph.
Form1.AlarmButton.Caption:= 'Вкл';
Form1.Timer1.Enabled:= False;
Alarm.Destroy;
end;
end;
// ПРОЦЕДУРА СЧИТЫВАЕТ ДАННЫЕ (ВРЕМЯ И СООБЩЕНИЕ)
procedure TForm1.GetAlarm;
begin
Alarm.MsgText:= Form1.Edit1.Text;
Alarm.AlarmTime:= StrToTime(Form1.MaskEdit1.
end;
// ЗДЕСЬ ТАЙМЕР ВЫПОЛНЯЕТ ПРОЦЕДУРЫ ПРОВЕРКИ НАСТОЯЩЕГО ВРЕМЕНИ И ТОГО ЧТО УСТАНОВЛЕНО У НАС
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Alarm.CheckTime;
if Alarm.Handl then
begin
Form1.AlarmButton.Down:= False;
Form1.AlarmButton.Caption:= 'Включить';
Form1.Timer1.Enabled:= False;
end;
end;
// ЗАПИСЫВАЕМ ВРЕМЯ И СООБЩЕНИЕ ВЗАВИСИМОСТИ ОТ ВЫБРАННОГО ВРЕМЕНИ В СПИСКЕ ДЕЛ
procedure TForm1.ListBox1Click(Sender: TObject);
var
n: integer;
s: string;
begin
n:= Form1.ListBox1.ItemIndex;
s:= copy(Form1.ListBox1.Items[n], 0, 2)+ ':' + copy(Form1.ListBox1.Items[n], 6, 2);
Form1.MaskEdit1.Text:= s;
s:= copy(form1.ListBox1.Items[n],
10, length(form1.ListBox1.Items[n]
Form1.Edit1.Text:= s;
end;
//****************************
// ТРЕЙ *
//****************************
// ОТЛАВЛИМАЕМ МИНИМИЗАЦИЮ ПРИЛОЖЕНИЯ
procedure TForm1.ControlWindow(var MSG: TMessage);
begin
if MSG.WParam = SC_MINIMIZE then
begin
ic(1, application.Icon); // добавляем значок в трей
ShowWindow(handle, SW_HIDE); // скрываем программу
ShowWindow(Application.Handle, SW_HIDE); // скрываем кнопку в TAskBar
end
else inherited;
end;
// РЕАКЦИЯ НАЖАТИЙ КНОПОК НА ЗНАЧКЕ В ТРЕЕ
procedure TForm1.IconMouse(var Msg: Tmessage);
var
p: TPoint;
begin
GetCursorPos(p); // ЗАПОМИНАЕМ КООРДИНАТЫ МЫШИ
Case Msg.LParam of // ПРОВЕРЯЕМ КАКАЯ КНОПКА БЫЛА НАЖАТА
WM_LBUTTONUP,WM_LBUTTONDBLCLK:
begin
// тут опишем другие процедур при необходимости
end;
WM_RBUTTONUP:
begin
SetForegroundWindow(Handle); // ВОССТАНВЛИВАЕМ ПРОГРАММУ В КАЧСТВЕ ПЕРВВОГО ОКНА
PopupMenu2.Popup(p.X, p.Y); // ПОКАЗЫВАЕМ POPUPMENU
PostMessage(Handle, WM_NULL, 0, 0);
END;
END;
end;
// Для работы
со значками в трее
// ( 1 - добавить,
2 - удалить, 3 - заменить) и Icon - сама иконка
procedure TForm1.Ic(n: integer; Icon: TIcon);
var
nim: TNotifyIconData;
begin
with nim do
begin
cbSize:= SizeOf(nim);
Wnd:= Form1.Handle;
uID:= 1;
uFlags:= NIF_ICON or NIF_MESSAGE or NIF_TIP;
hIcon:= Icon.Handle;
uCallbackMessage:= wm_user + 1;
szTip:= 'Программа "Ежедневник"';
end;
case n of
1: Shell_NotifyIcon(Nim_add, @nim);
2: Shell_NotifyIcon(Nim_Delete, @Nim);
3: Shell_NotifyIcon(Nim_Modify, @Nim);
end;
end;
procedure TForm1.OnMinimizeProc(sender: TObject);
begin
PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;
// КОНТЕКСТОВОЕ МЕНЮ ФОРМЫ: "ЕЖЕДНЕВНИК", ДЕЛАЕТ ФОРМУ ВИДИМОЙ
procedure TForm1.PopEGClick(Sender: TObject);
begin
ic(2,Application.Icon); // УДАЛЯЕМ ЗНАЧОК ИЗ ТРЕЯ
ShowWindow(Application.Handle, SW_SHOW); // ВОССТАНАВЛИВАЕМ КНОПКУПРОГРАММЫ
ShowWindow(Handle, SW_SHOW); // ВОССТАНАВЛИВАЕМ ОКНО ПРГРАММЫ
end;
// КОНТЕКСТОВОЕ МЕНЮ ФОРМЫ: "ДОБАВИТЬ/РЕДАКТИРОВАТЬ ДАТУ"
procedure TForm1.PopAddDateClick(Sender: TObject);
begin
Form2.ShowModal;
end;
// КОНТЕКСТОВОЕ МЕНЮ ФОРМЫ "ВКЛ/ВЫКЛ БУДИЛЬНИК"
procedure TForm1.PopOnAlarmClick(Sender: TObject);
begin
if not Timer1.Enabled then
begin
AlarmButton.Down:= true;
AlarmButtonClick(nil);
end
else
begin
AlarmButton.Down:= False;
AlarmButtonClick(nil);
end;
end;
// КОНТЕКСТОВОЕ МЕНЮ ФОРМЫ "ВЫХОД"
procedure TForm1.PopExitClick(Sender: TObject);
begin
Form1.Close;
end;
end.
unit Unit2;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids,
StdCtrls, ComCtrls, ExtCtrls;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Panel1: TPanel;
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
AddButton: TButton;
EditDBButton: TButton;
SaveDbButton: TButton;
Button1: TButton;
ListBox1: TListBox;
Label2: TLabel;
DeletRecButton: TButton;
procedure FormCreate(Sender: TObject);
procedure AddButtonClick(Sender: TObject);
procedure EditDBButtonClick(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
procedure SaveDbButtonClick(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DeletRecButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
procedure DaysDate;
end;
var
Form2: TForm2;
n: integer;
implementation
uses MyUnit, Unit1;
{$R *.dfm}
//****************************
// ПРОЦЕДУРЫ ГЛАВНОЙ ФОРМЫ *
//****************************
// СОЗДАНИЕ ФОРМЫ: ИНИЦИАЛИЗАЦИЯ ДАННЫХ
procedure TForm2.FormCreate(Sender: TObject);
var
i, // цикл
c: integer; // часы
s: string; // минуты
begin
Form2.StringGrid1.ColWidths[1]
Form2.StringGrid1.Width:= Form2.StringGrid1.ColWidths[0] +
c:= 0; // ноль часов
s:= '00';
// ноль минут
// разбиваем день с интервалом 30 мин.
// записываем время в первую ячейку
Form2.StringGrid1.Cells[0,0]:= '0' + IntToStr(c) + ' : ' + s;
// записываем время в остальные ячейки
for i:= 1 to 48 do
begin
if i mod 2 = 0 then
s:= '30'
else
begin
s:= '00';
inc(c);
end;
if c < 10 then
Form2.StringGrid1.Cells[0,i]:= '0' + IntToStr(c) + ' : ' + s
else Form2.StringGrid1.Cells[0,i]:= IntToStr(c) + ' : ' + s
end;
end;
// ПИШЕМ ВСЕ ДАТЫ В LISTBOX
procedure TForm2.DaysDate;
var
i: integer;
begin
ListBox1.Items.Clear;
seek(TypFile.FFile, 0);
for i:= 0 to typFile.NumberRec - 1 do
begin
read(typFile.ffile, EG);
ListBox1.Items.Add(eg.Date);
end;
ListBox1.Sorted:= true;
end;
// ФОРМИРУЕМ СПИСОК ДАТ
procedure TForm2.FormShow(Sender: TObject);
begin
ListBox1.Items.Clear;
DaysDate;
end;
// ПРИ НАЖАТИИ НА LISTBOX ПЕРЕДАЕМ ДАТУ В КАЛЕНДАРЬ
procedure TForm2.ListBox1Click(Sender: TObject);
Var
n: integer;
begin
n:= ListBox1.ItemIndex;
DateTimePicker1.Date:= StrToDate(ListBox1.Items[n]);
end;