Приложение "Сотовый телефон"

Объектно-ориентированное проектирование системы, поддерживающей основные функции сотового телефонного аппарата, разработка диаграмм классов с их атрибутами и методами. Спецификации модулей программы, системные требования и тестирование функциональности.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.01.2012
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

Телефон в современном мире - незаменимая часть жизни современного человека.

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

Программа обладает развитым графическим интерфейсом. Приложение создано в инструментальной среде разработки приложений С++Builder 6, реализующей современные подходы к программированию: объектно-ориентированный подход и визуальные средства быстрой разработки приложений.

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

Задание

Приложение должно поддерживать следующие основные функции сотового телефонного аппарата:

- добавление, редактирование, удаление номеров в телефонной книге;

- имитацию телефонных звонков;

- имитацию посылки и приема SMS-сообщений;

- имитацию выбора режима (обычный, без звука и т.д.);

- имитацию простейших установок (например, часы, будильник и т.д.).

Интерфейс приложения должен иметь схожие черты с интерфейсом и панелями управления простейшего сотового телефонного аппарата.

Приложение предназначено для работы в среде Windows XP.

Среда разработки - Visual C++ или Borland C++ Builder.

1. Объектно-ориентированный анализ системы

В соответствии с заданием было принято решение разработать имитацию сотового телефона, выполняющие следующие функции:

1) Работа с SMS (посылка и ответ сообщений);

2) Работа с телефонной книгой (редактирование, добавление, удаление контактов);

3) Набор номера абонента;

4) Выбор режима работы (без звука или обычный);

5) Установление будильника.

Учитывая вышеперечисленные функции в сочетании с интерфейсом под Windows 98/2000, программный продукт «Сотовый телефон» может быть реализован с использованием инструментальных средств Borland C++ Builder 6.

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

программа телефон модуль тестирование

Рисунок 1 - Диаграмма вариантов использования

Логическое описание вариантов использования

1. Вариант использования «Послать сообщение»

Пользователь выбирает пункт меню «SMS». Программа открывает окно, куда пользователь вводит текст сообщения нажимает «Отправить». Программа открывает окно, где пользователь с помощью клавиатуры вводит номер абонента. Программа отправляет сообщение абоненту.

2. Вариант использования «Ответить на сообщение»

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

3. Вариант использования «Добавить контакт»

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

4. Вариант использования «Редактировать контакт»

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

5. Вариант использования «Удалить контакт»

Пользователь выбирает пункт меню «Контакты». Программа открывает список имен. Пользователь ищет нужное ему и нажимает «Удалить». Программа удаляет контакт.

6. Вариант использования «Позвонить абоненту»

Пользователь выбирает пункт меню «Контакты». Программа открывает список имен. Пользователь ищет нужное ему и нажимает «Вызов». Программа посылает вызов.

Если необходимо набрать номер, пользователь набирает номер на клавиатуре и нажимает «Вызов». Программа посылает вызов.

7. Вариант использования «Ответить на вызов»

Если необходимо принять входящий звонок, пользователь нажимает кнопку «Зеленая трубка» или «Принять». Программа принимает вызов.

Если необходимо отклонить входящий звонок, пользователь нажимает кнопку «Красная трубка» или «Отклонить». Программа отклоняет вызов.

8. Вариант использования «Выбрать режим»

Пользователь выбирает пункт меню «Настройки». Программа открывает подменю, где пользователь может выбрать оставить обычный режим (мелодия и вибро), только виброзвонок или только мелодия. Пользователь выбирает нужный режим и нажимает ОК. Программа сохраняет результат.

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

9. Вариант использования «Установить будильник»

Пользователь выбирает пункт меню «Будильник». Программа открывает окно с двумя полями, куда пользователь вводит часы и минуты соответственно и нажимает «ОК». Программа сохранит результат в установках.

2. Объектно-ориентированное проектирование системы

Учитывая функции, которые должна обеспечить система, а также ее специфику, построим диаграмму классов (рисунок 2), которая показывает взаимодействие классов в системе «Сотовый телефон».

Концептуальная модель для системы «Сотовый телефон» представлена на рисунке 2

Рисунок 2 - Диаграмма классов (концептуальная модель).

Логическое описание классов:

1. Класс «Экран»

Содержит операции: вывод сообщения, вывод списка и главное меню.

Класс «Экран» связан с классом «Кнопка» связью ассоциацией «один ко многим». Так как приложение используется для имитации сотового телефона, используется одна форма и много кнопок на ней.

Класс «Экран» связан с классом «ПолеВвода» свзяью ассоциацией «один ко многим». Так как приложение используется для имитации сотового телефона, используется одна форма и много полей ввода (SMS, номер абонента).

2. Класс «ПолеВвода»

Содержит операцию поле ввода.

3. Класс «Кнопка»

Содержит операции: сохранить, удалить, отправить, редактировать, выбрать и позвонить.

Модель реализации для системы «Сотовый телефон» представлена на рисунке 3.

Рисунок 3 - Диаграмма классов (модель реализации).

Логическое описание классов:

1. Класс «TForm»

Содержит атрибуты:

Color - цвет окна;

Width - ширина окна;

Height - высота окна.

Эти атрибуты не являются общедоступными.

Содержит методы:

FormCreate - обработчик создания формы;

FormClose - закрыть форму;

BuildImage - отрисовать главное меню;

FormShow - показать форму;

FormMouseDown - обработчик нажатия мышкой по форме;

clkSMS - написать SMS;

clkAlarm - открыть будильник;

clkMap - открыть контакты;

clkSettings - выбрать настройки звонка;

clkCall - позвонить на номер.

Всего используется 1 объект данного класса.

Объект MainFm, библиотеки визуальных компонентов VCL среды C++Builder, предназначен для отображения самой формы сотового телефона.

2. Класс «TTimer»

Содержит метод OnTimer;

Всего используется 4 объекта данного класса.

Объект TimerAlarm, библиотеки компонентов VCL среды C++Builder, предназначен для значения будильника.

Объект TimerAlarm2, библиотеки компонентов VCL среды C++Builder, предназначен для значения будильника.

Объект TimerSend, библиотеки компонентов VCL среды C++Builder, предназначен для визуализации картинки отправки сообщения.

Объект TimerCall, библиотеки компонентов VCL среды C++Builder, предназначен для отображения анимации звонка.

Классы соединяются связью ассоциацией «один ко многим». Форма одна, но много таймеров.

Для более подробного описания взаимодействия системы и пользователя были построены диаграммы последовательности (Sequence Diagrams), на которых показаны, в какой последовательности будут выполняться действия для вариантов использования «Выбрать режим», «Послать сообщение», «Установить будильник», «Удалить контакт», «Добавить контакт», «Позвонить».

Диаграммы последовательности для вариантов использования приведены соответственно на рисунках 4-9.

Рисунок 4 - Диаграмма последовательности для варианта использования

«Выбрать режим».

1) Выбираем главное меню;

2) Нажимаем кнопку Настройки;

3) Выбираем нужный режим из списка;

4) Нажимаем ОК.

Рисунок 5 - Диаграмма последовательности для варианта использования «Послать сообщение»

Выбираем главное меню;

1) Нажимаем кнопку SMS;

2) C помощью клавиатуры вводим текст сообщения;

3) Нажимаем Отправить;

4) C помощью клавиатуры вводим номер получателя;

5) Нажимаем Отправить;

6) На экран выводится сообщение об отправке.

Рисунок 6 - Диаграмма последовательности для варианта использования «Установить будильник»

1) Выбираем главное меню;

2) Нажимаем кнопку Будильник;

3) C помощью клавиатуры вводим время;

4) Нажимаем ОК.

Рисунок 7 - Диаграмма последовательности для варианта использования «Удалить контакт».

1) Выбираем главное меню;

2) Нажимаем кнопку Контакты;

3) Нажимаем Удалить;

Рисунок 8 - Диаграмма последовательности для варианта использования «Добавить контакт»

1) Выбираем главное меню;

2) Нажимаем кнопку Контакты;

3) C помощью клавиатуры вводим номер и имя абонента;

4) Нажимаем Назад;

Рисунок 9 - Диаграмма последовательности для варианта использования «Позвонить»

1) Выбираем главное меню;

2) Нажимаем кнопку Телефон;

3) C помощью клавиатуры вводим номер;

4) Нажимаем Вызов;

5) На экран выводится сообщение о посыле вызова.

Учитывая функции, которые должна обеспечить система, а также ее специфику, строится диаграмма состояний (Activity Diagram), которая показывает возможные состояния системы для приложения «Сотовый телефон». Диаграмма состояний для приложения «Сотовый телефон» на примере объекта OnCreate класса TTimer приведена на рисунке 10.

Рисунок 10. Словесное описание возможных состояний приложения «Сотовый телефон»

Диаграмма состояний построена для объекта TimerCall класса TTimer. Объект имеет 2 состояния:

1) Процесс начинается с начальной точки - запуска приложения. Пользователь набирает номер и, не совершая звонка, завершает работу.

2) Процесс начинается с начальной точки - запуска приложения. Пользователь набирает номер, нажимает кнопку вызова, после чего появляется анимация звонка и завершается работа.

3. Объектно-ориентированное программирование системы

Общие сведения

Разработанная программа имеет исполняемый файл iPhone.exe. Программа написана на языке Borland C++Builder 6. Ее текст содержится в файлах iPhone.cpp и UnitMainFm.cpp, и приведен в приложении А. Для функционирования программы, на персональном компьютере должна быть установлена операционная система Microsoft Windows 2000/XP/7. Кроме того, необходимо наличие среды программирования Borland C++Builder 6.

Спецификации модулей программы

В соответствии со структурой программного обеспечения модулю UnitMainFm.cpp программы соответствует определенный набор подпрограмм:

void __fastcall TMainFm: FormCreate (TObject *Sender) - обработчик события создания формы;

void __fastcall TMainFm: FormClose (TObject *Sender, TCloseAction &Action) - обработчик закрытия формы;

void __fastcall TMainFm: BuildImage() - обработчик отрисовавыния главного меню;

void __fastcall TMainFm: FormPaint (TObject *Sender) - обработчик рисования формы;

void __fastcall TMainFm: FormShow (TObject *Sender) - обработчик показа формы;

void __fastcall TMainFm: FormMouseDown (TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y) - обработчик события нажатия мышкой по форме;

void __fastcall TMainFm:clkSMS() - обработчик пункта меню «SMS»;

void __fastcall TMainFm:clkSMSNUM() - обработчик кнопки «Отправить» в пункте меню «SMS»;

void __fastcall TMainFm:clkCalendar() - обработчик пункта меню «Календарь»;

void __fastcall TMainFm:clkPictures() - обработчик пункта меню «Картинки»;

void __fastcall TMainFm:clkAlarm() - обработчик пункта меню «Будильник»;

void __fastcall TMainFm:clkNodes() - обработчик пункта меню «Заметки»;

void __fastcall TMainFm:clkMap() - обработчик пункта меню «Контакты»;

void __fastcall TMainFm:clkSettings() - обработчик пункта меню «Настройки»;

void __fastcall TMainFm:clkCall() - обработчик пункта меню «Звонок»;

void __fastcall TMainFm:clkCall() - обработчик пункта меню «Календарь»;

void __fastcall TMainFm: TimerCallTimer (TObject *Sender) - обработчик таймера для анимации звонка;

void __fastcall TMainFm: TimerSendTimer (TObject *Sender) - обработчик таймера для анимации отправки сообщений;

void __fastcall TMainFm: TimerAlarmTimer (TObject *Sender) - обработчик таймера для будильника;

void __fastcall TMainFm: TimerAlarm2Timer (TObject *Sender) - обработчик таймера для будильника.

4. Программа и методика испытаний

Объект испытания

Объектом испытания является программа «Сотовый телефон», созданная с помощью инструментальных средств Borland C++ Builder 6.

Цель испытаний

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

Порядок проверки программы

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

После запуска программы на экране должна появиться форма телефона с кнопками пунков меню.

Для того, чтобы ввести сообщение выбираем пункт меню «SMS». На форме открывается окно ввода текста.

После того как ввели нужный текст, нажимаем Отправить. Вводим номер абонента с помощью клавиатуры. Нажимаем кнопку Отправить. Появляется анимация доставки сообщения.

Чтобы установить будильник выбираем пункт меню «Будильник». В открывшемся окне вводим нужное время.

В указанное время, в соотствии и временем на компьютере, будильник начнет имитировать звонок.

Чтобы позвонить, набираем с помощью клавиатуры номер и нажимаем вызов. На экране появится анимация о посыле вызова.

Результаты тестирования программы

Испытания показали, что программа работает правильно во всех возможных ситуациях.

5. Описание применения

При запуске программы на экране появляется основная форма приложения «Сотовый телефон».

Для того, чтобы ввести сообщение выбираем пункт меню «SMS». На форме открывается окно ввода текста.

Для отправки сообщения нажимаем Отправить. Вводим номер абонента с помощью клавиатуры. Нажимаем кнопку Отправить. Появляется анимация доставки сообщения.

Чтобы установить будильник выбираем пункт меню «Будильник». В открывшемся окне вводим нужное время. Нажимаем ОК. В указанное время, в соотствии и временем на компьютере, будильник начнет имитировать звонок.

Чтобы позвонить, набираем с помощью клавиатуры номер и нажимаем вызов. На экране появится анимация о посыле вызова.

Чтобы выбрать режим работы сотового телефона, выбираем пункт меню «Настройка». Выбираем нужный вариант в открывшее=ИМС списке и нажимаем ОК.

6. Технические средства

Системные требования

Имитация сотового телефона работает на персональном компьютере с конфигурацией:

Процессор: CPU PENTIUM III и выше

Оперативная память: RAM 64 Mb и выше

Видеокарта: SVGA-16Mb

ОС: Windows 98

Необходимая память на жестком диске: 2891 Кб.

Заключение

В результате проделанной работы была определена функциональная структура системы «Сотовый телефон». Выделены основные функции.

Было проведено объектно-ориентированное проектирование системы «Сотовый телефон», в результате чего была разработана диаграмма классов, на которой отображены классы системы с их атрибутами и методами, а также возможные отношения между ними.

Было проведено тестирование системы «Сотовый телефон». Анализ результатов тестирования показал, что система полностью соответствует функциональным требованиям.

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

1 Павловская Т.А. C/C++ Программирование на языке высокого уровня - С-Пб.: ООО Издательство «Питер», 2010 г. - 460 с., ил.

2 Фаронов В.В. Delphi Программирование на языке высокого уровня. - С-Пб.: ЗАО Издательство «Питер», 2006 г. - 639 с., ил.

3 Вендров А.М. Проектирование ПО экономических информационных систем - М.: «Финансы и статистика», 2006 г. - 543 с., ил.

Приложение

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

UnitMainFm.cpp

// -

#include <vcl.h>

#pragma hdrstop

#include «UnitMainFm.h»

 // -

#pragma package (smart_init)

#pragma resource «*.dfm»

#define MAINMENU 0;

#define SMS 1;

#define CALC 2;

#define CALENDAR 3;

#define NODES 4;

#define PICTURES 5;

#define ALARM 6;

#define MAP 7;

#define SETTINGS 199;

#define CALL 8;

#define SMSNUM 9;

TMainFm *MainFm;

 // -

__fastcall TMainFm:TMainFm (TComponent* Owner)

: TForm(Owner)

{

}

 // -Обработчик события создания формы-

void __fastcall TMainFm: FormCreate (TObject *Sender)

{

Buf = new Graphics:TBitmap;

Buf->Width = Width;

Buf->Height = Height;

state = MAINMENU;

rezhim = 0; // Профиль Мелодия вибро и тд.

alarmTime = «00:00»;

SYSTEMTIME t;

GetLocalTime(&t);

alarmTimeH = t.wHour; // Время будильника

alarmTimeM = (t.wMinute + 2)% 60;

alarmEnabled = true; // Будильник вкл. выкл.

}

 // -

void __fastcall TMainFm: FormClose (TObject *Sender, TCloseAction &Action)

{

delete Buf;

}

 // -Отрисовать главное меню-

void __fastcall TMainFm: BuildImage()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_menu2.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_menu2.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

delete tmp;

}

 // -

void __fastcall TMainFm: FormPaint (TObject *Sender)

{

Canvas->Draw (0, 0, Buf);

}

 // -

void __fastcall TMainFm: FormShow (TObject *Sender)

{

BuildImage();

}

 // -Обработчик события нажатия мышкой по форме-

void __fastcall TMainFm: FormMouseDown (TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

 //ShowMessage(X);

 //ShowMessage(Y);

 // 38-74 103 86-124 136-174 185-222 103

 // 38 137 222 137

 // 38 161 222 161

 // 38 197 222 197

 // 38 345 222 345

 // 38 381 222 381

 // Клавиатура

 // 202-222 226-248 250-270 273-295 297-317

 // 25-43 47-65 69-86 90-107 111-128 132-150 154-171 174-193 196-212 217-233

if (X > 190 && X < 232 && Y > 321 && Y < 337)

{ // Кнопка Назад

if (TimerAlarm->Enabled)

{

TimerAlarm->Enabled = false;

state = MAINMENU;

BuildImage();

}

if (state!= 9)

{

TimerCall->Enabled = false;

state = MAINMENU;

BuildImage();

} else

{

if (TimerSend->Enabled)

{

TimerSend->Enabled = false;

state = MAINMENU;

BuildImage();

} else

{

state = SMS;

clkSMS();

}

}

}

if (TimerCall->Enabled || TimerSend->Enabled || TimerAlarm->Enabled) return;

if (state == 7)

{

if (Y > 202 && Y < 222)

{

if (X > 25 && X < 43) textFrend += «1»;

if (X > 47 && X < 65) textFrend += «2»;

if (X > 69 && X < 86) textFrend += «3»;

if (X > 90 && X < 107) textFrend += «4»;

if (X > 111 && X < 128) textFrend += «5»;

if (X > 132 && X < 150) textFrend += «6»;

if (X > 154 && X < 171) textFrend += «7»;

if (X > 174 && X < 193) textFrend += «8»;

if (X > 196 && X < 212) textFrend += «9»;

if (X > 217 && X < 233) textFrend += «0»;

}

if (Y > 226 && Y < 248)

{

if (X > 25 && X < 43) textFrend += «Ц»;

if (X > 47 && X < 65) textFrend += «У»;

if (X > 69 && X < 86) textFrend += «К»;

if (X > 90 && X < 107) textFrend += «Е»;

if (X > 111 && X < 128) textFrend += «Н»;

if (X > 132 && X < 150) textFrend += «Г»;

if (X > 154 && X < 171) textFrend += «Ш»;

if (X > 174 && X < 193) textFrend += «Щ»;

if (X > 196 && X < 212) textFrend += «З»;

if (X > 217 && X < 233) textFrend += «Х»;

}

if (Y > 250 && Y < 270)

{

if (X > 25 && X < 43) textFrend += «Ы»;

if (X > 47 && X < 65) textFrend += «В»;

if (X > 69 && X < 86) textFrend += «А»;

if (X > 90 && X < 107) textFrend += «П»;

if (X > 111 && X < 128) textFrend += «Р»;

if (X > 132 && X < 150) textFrend += «О»;

if (X > 154 && X < 171) textFrend += «Л»;

if (X > 174 && X < 193) textFrend += «Д»;

if (X > 196 && X < 212) textFrend += «Ж»;

if (X > 217 && X < 233) textFrend += «Э»;

}

if (Y > 273 && Y < 295)

{

if (X > 25 && X < 43) textFrend += «Я»;

if (X > 47 && X < 65) textFrend += «Ч»;

if (X > 69 && X < 86) textFrend += «С»;

if (X > 90 && X < 107) textFrend += «М»;

if (X > 111 && X < 128) textFrend += «И»;

if (X > 132 && X < 150) textFrend += «Т»;

if (X > 154 && X < 171) textFrend += «Ь»;

if (X > 174 && X < 193) textFrend += «Б»;

if (X > 196 && X < 212) textFrend += «Ю»;

if (X > 217 && X < 233) textFrend +=».»;

}

if (Y > 297 && Y < 317)

{

if (X > 69 && X < 86) textFrend += «Ё»;

if (X > 90 && X < 107) textFrend += «_»;

if (X > 111 && X < 128) textFrend += «Й»;

if (X > 132 && X < 150) textFrend += «Ъ»;

if (X > 154 && X < 171) textFrend += «Ф»;

if (X > 174 && X < 193) textFrend += «»;

if (X > 196 && X < 212) textFrend. Delete (textFrend. Length(), 1);

}

if (X > 25 && X < 70 && Y > 321 && Y < 357)

{ // Кнопка Удалить все

textFrend=»»;

clkMap();

} else clkMap();

}

if (state == 1)

{ //SMS

if (Y > 202 && Y < 222)

{

if (X > 25 && X < 43) textSMS += «1»;

if (X > 47 && X < 65) textSMS += «2»;

if (X > 69 && X < 86) textSMS += «3»;

if (X > 90 && X < 107) textSMS += «4»;

if (X > 111 && X < 128) textSMS += «5»;

if (X > 132 && X < 150) textSMS += «6»;

if (X > 154 && X < 171) textSMS += «7»;

if (X > 174 && X < 193) textSMS += «8»;

if (X > 196 && X < 212) textSMS += «9»;

if (X > 217 && X < 233) textSMS += «0»;

}

if (Y > 226 && Y < 248)

{

if (X > 25 && X < 43) textSMS += «Ц»;

if (X > 47 && X < 65) textSMS += «У»;

if (X > 69 && X < 86) textSMS += «К»;

if (X > 90 && X < 107) textSMS += «Е»;

if (X > 111 && X < 128) textSMS += «Н»;

if (X > 132 && X < 150) textSMS += «Г»;

if (X > 154 && X < 171) textSMS += «Ш»;

if (X > 174 && X < 193) textSMS += «Щ»;

if (X > 196 && X < 212) textSMS += «З»;

if (X > 217 && X < 233) textSMS += «Х»;

}

if (Y > 250 && Y < 270)

{

if (X > 25 && X < 43) textSMS += «Ы»;

if (X > 47 && X < 65) textSMS += «В»;

if (X > 69 && X < 86) textSMS += «А»;

if (X > 90 && X < 107) textSMS += «П»;

if (X > 111 && X < 128) textSMS += «Р»;

if (X > 132 && X < 150) textSMS += «О»;

if (X > 154 && X < 171) textSMS += «Л»;

if (X > 174 && X < 193) textSMS += «Д»;

if (X > 196 && X < 212) textSMS += «Ж»;

if (X > 217 && X < 233) textSMS += «Э»;

}

if (Y > 273 && Y < 295)

{

if (X > 25 && X < 43) textSMS += «Я»;

if (X > 47 && X < 65) textSMS += «Ч»;

if (X > 69 && X < 86) textSMS += «С»;

if (X > 90 && X < 107) textSMS += «М»;

if (X > 111 && X < 128) textSMS += «И»;

if (X > 132 && X < 150) textSMS += «Т»;

if (X > 154 && X < 171) textSMS += «Ь»;

if (X > 174 && X < 193) textSMS += «Б»;

if (X > 196 && X < 212) textSMS += «Ю»;

if (X > 217 && X < 233) textSMS +=».»;

}

if (Y > 297 && Y < 317)

{

if (X > 69 && X < 86) textSMS += «Ё»;

if (X > 90 && X < 107) textSMS += «_»;

if (X > 111 && X < 128) textSMS += «Й»;

if (X > 132 && X < 150) textSMS += «Ъ»;

if (X > 154 && X < 171) textSMS += «Ф»;

if (X > 174 && X < 193) textSMS += «»;

if (X > 196 && X < 212) textSMS. Delete (textSMS. Length(), 1);

}

if (X > 25 && X < 70 && Y > 321 && Y < 357)

{ // Кнопка Отправить

callNumber = «»;

clkSMSNUM();

} else clkSMS();

} // if (state == 1) SMS -

if (state == 9)

{ //SMSNUM Набор номера SMS

if (X > 25 && X < 70 && Y > 321 && Y < 357 && callNumber. Length() > 0)

{ // Кнопка Отправить

TimerSend->Enabled = true;

callPos = 0;

}

if (X > 96 && X < 152 && Y > 321 && Y < 357 && callNumber. Length() > 0)

{ // Кнопка Стереть

callNumber. Delete (callNumber. Length(), 1);

clkSMSNUM();

}

if (X > 26 && X < 231 && Y > 260 && Y < 305 && callNumber. Length() < 11)

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0

int n = 0;

if (X > 26 && X < 46) n = 1;

if (X > 46 && X < 66) n = 2;

if (X > 66 && X < 87) n = 3;

if (X > 87 && X < 108) n = 4;

if (X > 108 && X < 128) n = 5;

if (X > 128 && X < 151) n = 6;

if (X > 151 && X < 171) n = 7;

if (X > 171 && X < 191) n = 8;

if (X > 191 && X < 211) n = 9;

callNumber += IntToStr(n);

clkSMSNUM();

} // Ввод цифр 1 2 3 4 5 6 7 8 9 0

} //if (state == 9) SMSNUM Набор номера SMS -

if (state == 6)

{ // Будильник

if (X > 25 && X < 70 && Y > 321 && Y < 337)

{ // Кнопка OK

alarmTimeH = StrToInt (alarmTime. SubString (1, 2));

alarmTimeM = StrToInt (alarmTime. SubString (4, 2));

alarmEnabled = newAlarmEnabled;

state = MAINMENU;

BuildImage();

}

if (X > 106 && X < 146 && Y > 132 && Y < 148)

{ // Выкл-вкл

alarmNInput = 1;

newAlarmEnabled =! newAlarmEnabled;

clkAlarm();

}

if (X > 26 && X < 231 && Y > 260 && Y < 305 && newAlarmEnabled)

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0

int n = 0;

if (X > 26 && X < 46) n = 1;

if (X > 46 && X < 66) n = 2;

if (X > 66 && X < 87) n = 3;

if (X > 87 && X < 108) n = 4;

if (X > 108 && X < 128) n = 5;

if (X > 128 && X < 151) n = 6;

if (X > 151 && X < 171) n = 7;

if (X > 171 && X < 191) n = 8;

if (X > 191 && X < 211) n = 9;

if (alarmNInput == 5)

{

alarmTime[alarmNInput] = char (n + 48);

alarmNInput++;

}

if (alarmNInput == 4 && n < 6)

{

alarmTime[alarmNInput] = char (n + 48);

alarmNInput++;

}

if (alarmNInput == 2)

{

if (StrToInt (alarmTime[1]) == 2)

{

if (n < 4)

{

alarmTime[alarmNInput] = char (n + 48);

alarmNInput++;

}

} else

{

alarmTime[alarmNInput] = char (n + 48);

alarmNInput++;

}

}

if (alarmNInput == 1 && n < 3)

{

alarmTime[alarmNInput] = char (n + 48);

alarmNInput++;

}

if (alarmNInput == 3) alarmNInput++;

if (alarmNInput > 5) alarmNInput = 1;

clkAlarm();

} // Ввод цифр 1 2 3 4 5 6 7 8 9 0

} //if (state == 6) Будильник -

if (state == 199)

{ // Настройки

 // Мелодия

if (X > 50 && X < 110 && Y > 140 && Y < 155) newRezhim = 0;

 // Вибро

if (X > 50 && X < 110 && Y > 160 && Y < 175) newRezhim = 1;

 // Мелодия и вибро

if (X > 50 && X < 110 && Y > 180 && Y < 195) newRezhim = 2;

if (X > 25 && X < 70 && Y > 321 && Y < 337)

{ // Кнопка OK

rezhim = newRezhim;

state = MAINMENU;

BuildImage();

} else clkSettings();

} //if (state == 199) Настройки -

if (state == 8)

{ // Вызов

if ((X > 25 && X < 70 && Y > 321 && Y < 357 ||

X > 38 && X < 74 && Y > 345 && Y < 381) && callNumber. Length() > 0)

{ // Кнопка Вызов

TimerCall->Enabled = true;

callPos = 0;

}

if (X > 96 && X < 152 && Y > 321 && Y < 357 && callNumber. Length() > 0)

{ // Кнопка Стереть

callNumber. Delete (callNumber. Length(), 1);

clkCall();

}

if (X > 26 && X < 231 && Y > 260 && Y < 305 && callNumber. Length() < 11)

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0

int n = 0;

if (X > 26 && X < 46) n = 1;

if (X > 46 && X < 66) n = 2;

if (X > 66 && X < 87) n = 3;

if (X > 87 && X < 108) n = 4;

if (X > 108 && X < 128) n = 5;

if (X > 128 && X < 151) n = 6;

if (X > 151 && X < 171) n = 7;

if (X > 171 && X < 191) n = 8;

if (X > 191 && X < 211) n = 9;

callNumber += IntToStr(n);

clkCall();

} // Ввод цифр 1 2 3 4 5 6 7 8 9 0

} //if (state == 8) Вызов -

if (state == 0)

{ // Главное меню

if (X > 38 && X < 74 && Y > 103 && Y < 137)

{ // Выбран пункт СМС

textSMS = «»;

clkSMS();

}

if (X > 86 && X < 124 && Y > 103 && Y < 137) clkCalendar();

if (X > 136 && X < 174 && Y > 103 && Y < 137) clkPictures();

if (X > 185 && X < 222 && Y > 103 && Y < 137)

{ // Выбран будильник - Открыть установки будильника

alarmTime = IntToStr(alarmTimeH);

if (alarmTimeH < 10) alarmTime. Insert («0», 1);

alarmTime +=»:» + IntToStr(alarmTimeM);

if (alarmTimeM < 10) alarmTime. Insert («0», 4);

newAlarmEnabled = alarmEnabled;

alarmNInput = 1;

clkAlarm();

}

if (X > 38 && X < 74 && Y > 161 && Y < 197) clkCalc();

if (X > 86 && X < 124 && Y > 161 && Y < 197) clkNodes();

if (X > 136 && X < 174 && Y > 161 && Y < 197) clkMap();

if (X > 185 && X < 222 && Y > 161 && Y < 197)

{

newRezhim = rezhim;

clkSettings();

}

if (X > 38 && X < 74 && Y > 345 && Y < 381)

{

callNumber = «»;

clkCall();

}

} //if (state == 0) Главное меню -

Repaint();

}

 // -

void __fastcall TMainFm:clkSMS()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»);

Buf->Canvas->Draw (0, 200, tmp);

Buf->Canvas->Brush->Color = TColor(0xaaaaaa);

Buf->Canvas->FillRect (TRect(26, 95, 238, 170));

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = TColor(0xeeeeee);

int n = 0;

String tempS = textSMS;

while (tempS. Length() > 0)

{

String out = «»;

while (Buf->Canvas->TextWidth(out) < 212 - Buf->Canvas->TextWidth («W»))

{

if (tempS. Length() < 1) break;

out += tempS[1];

tempS. Delete (1, 1);

}

Buf->Canvas->TextOutA (26, 95 + n, out);

n += Buf->Canvas->TextHeight(«») + 2;

if (n + 95 > 160) break;

}

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Отправить»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = SMS;

}

 // -

void __fastcall TMainFm:clkSMSNUM()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Отправить»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Стереть») / 2, 321, «Стереть»);

String tm = Buf->Canvas->Font->Name;

Buf->Canvas->Font->Name = «Arial»;

Buf->Canvas->Font->Color = clGreen;

Buf->Canvas->Font->Size = 20;

Buf->Canvas->TextOutA (40, 180, callNumber);

Buf->Canvas->Font->Name = tm;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);

Buf->Canvas->Draw (0, 260, tmp);

delete tmp;

state = SMSNUM;

}

// -

void __fastcall TMainFm:clkCalendar()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = CALENDAR;

}

 // -

void __fastcall TMainFm:clkPictures()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Выбрать»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = PICTURES;

}

 // -

void __fastcall TMainFm:clkAlarm()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «ОК»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

if (newAlarmEnabled)

{

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth(alarmTime) / 2, 150, alarmTime);

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Вкл.») / 2, 132, «Вкл.»);

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);

Buf->Canvas->Draw (0, 260, tmp);

}

else Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Выкл.») / 2, 132, «Выкл.»);

delete tmp;

state = ALARM;

}

 // -

void __fastcall TMainFm:clkCalc()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Результат»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = CALC;

}

 // -

void __fastcall TMainFm:clkNodes()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «ОК»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = NODES;

}

 // -контакты-

void __fastcall TMainFm:clkMap()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»);

Buf->Canvas->Draw (0, 200, tmp);

Buf->Canvas->Brush->Color = TColor(0xaaaaaa);

Buf->Canvas->FillRect (TRect(26, 95, 238, 170));

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = TColor(0xeeeeee);

int n = 0;

String tempS = textFrend;

while (tempS. Length() > 0)

{

String out = «»;

while (Buf->Canvas->TextWidth(out) < 212 - Buf->Canvas->TextWidth («W»))

{

if (tempS. Length() < 1) break;

out += tempS[1];

tempS. Delete (1, 1);

}

Buf->Canvas->TextOutA (26, 95 + n, out);

n += Buf->Canvas->TextHeight(«») + 2;

if (n + 95 > 160) break;

}

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Удалить все»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;

state = MAP;

}

 // -

void __fastcall TMainFm:clkSettings()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «ОК»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Выбор профиля:») / 2, 100, «Выбор профиля:»);

Buf->Canvas->TextOutA (50, 140, «Мелодия»);

Buf->Canvas->TextOutA (50, 160, «Вибро»);

Buf->Canvas->TextOutA (50, 180, «Мелодия и вибро»);

if (newRezhim == 0)

{

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Brush->Color = TColor(0x555555);

Buf->Canvas->Font->Color = clWhite;

Buf->Canvas->TextOutA (50, 140, «Мелодия»);

}

if (newRezhim == 1)

{

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Brush->Color = TColor(0x555555);

Buf->Canvas->Font->Color = clWhite;

Buf->Canvas->TextOutA (50, 160, «Вибро»);

}

if (newRezhim == 2)

{

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Brush->Color = TColor(0x555555);

Buf->Canvas->Font->Color = clWhite;

Buf->Canvas->TextOutA (50, 180, «Мелодия и вибро»);

}

delete tmp;

state = SETTINGS;

}

 // -

void __fastcall TMainFm:clkCall()

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (27, 321, «Вызов»);

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Стереть») / 2, 321, «Стереть»);

String tm = Buf->Canvas->Font->Name;

Buf->Canvas->Font->Name = «Arial»;

Buf->Canvas->Font->Color = clGreen;

Buf->Canvas->Font->Size = 20;

Buf->Canvas->TextOutA (40, 180, callNumber);

Buf->Canvas->Font->Name = tm;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);

Buf->Canvas->Draw (0, 260, tmp);

delete tmp;

state = CALL;

}

 // -

void __fastcall TMainFm: TimerCallTimer (TObject *Sender)

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);

String tm = Buf->Canvas->Font->Name;

Buf->Canvas->Font->Name = «Arial»;

Buf->Canvas->Font->Color = clGreen;

Buf->Canvas->Font->Size = 20;

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth(callNumber) / 2, 180, callNumber);

Buf->Canvas->Font->Name = tm;

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»);

Buf->Canvas->Draw (30 + (callPos% 7) * 30, 240, tmp);

callPos++;

if (callPos > 41)

{

TimerCall->Enabled = false;

state = MAINMENU;

BuildImage();

}

delete tmp;

Repaint();

}

 // -

void __fastcall TMainFm: TimerSendTimer (TObject *Sender)

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

if (callPos < 10)

{

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);

String tm = Buf->Canvas->Font->Name;

Buf->Canvas->Font->Name = «Arial»;

Buf->Canvas->Font->Color = clGreen;

Buf->Canvas->Font->Size = 20;

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Отправка…») / 2, 180, «Отправка…»);

Buf->Canvas->Font->Name = tm;

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\send.bmp»))

{

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\send.bmp»);

Buf->Canvas->Draw (30 + (callPos% 6) * 20, 240, tmp);

}

} else

{

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («ОК»), 321, «ОК»);

String tm = Buf->Canvas->Font->Name;

Buf->Canvas->Font->Name = «Arial»;

Buf->Canvas->Font->Color = clGreen;

Buf->Canvas->Font->Size = 20;

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Отправлено») / 2, 180, «Отправлено»);

Buf->Canvas->Font->Name = tm;

}

callPos++;

if (callPos > 30)

{

TimerSend->Enabled = false;

state = MAINMENU;

BuildImage();

}

delete tmp;

Repaint();

}

 // -

void __fastcall TMainFm: TimerAlarmTimer (TObject *Sender)

{

Buf->Canvas->Brush->Color = clWhite;

Buf->Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;

tmp->Transparent = true;

tmp->TransparentColor = clWhite;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

Buf->Canvas->Draw (0, 0, tmp);

Buf->Canvas->Brush->Style = bsClear;

Buf->Canvas->Font->Size = 8;

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;

Buf->Canvas->Font->Color = clGray;

Buf->Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»))

{

tmp->TransparentColor = clBlack;

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\alarm_» + IntToStr (callPos% 4) +».bmp»);

Buf->Canvas->Draw (Width / 2 - tmp->Width / 2, 180, tmp);

}

callPos++;

if (callPos > 80)

{

TimerAlarm->Enabled = false;

state = MAINMENU;

BuildImage();

}

delete tmp;

Repaint();

}

 // -

void __fastcall TMainFm: TimerAlarm2Timer (TObject *Sender)

{

if (alarmEnabled &&! TimerAlarm->Enabled)

{

SYSTEMTIME t;

GetLocalTime(&t);

if (t.wHour == alarmTimeH && t.wMinute == alarmTimeM && t.wSecond < 5)

{

callPos = 0;

TimerAlarm->Enabled = true;

}

}

}

 // -

iPhone.cpp

 // -

#include <vcl.h>

#pragma hdrstop

 // -

USEFORM («UnitMainFm.cpp», MainFm);

 // -

WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->Title = «iPhone 3G»;

Application->CreateForm (__classid(TMainFm), &MainFm);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (…)

{

try

{

throw Exception(«»);

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

 // -

Размещено на Allbest.ru


Подобные документы

  • Системы дистанционного образования. Структура, требования к электронному практикуму. Функционально-ориентированное и объектно-ориентированное проектирование. Интерфейс системы, тестирование надежности программного средства, руководство пользователя.

    дипломная работа [1,3 M], добавлен 19.01.2017

  • Разработка учебного приложения, играющего роль клавиатурного тренажёра. Установка различных опций. Использование средств Borland C++Builder 6.0. Объектно-ориентированное проектирование и программирование системы. Тестирование и отладка программы.

    курсовая работа [730,4 K], добавлен 23.07.2013

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

    дипломная работа [2,2 M], добавлен 13.07.2015

  • Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.

    курсовая работа [1,2 M], добавлен 22.01.2012

  • Разработка программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Класс программы, инструкция по использованию программы.

    курсовая работа [1,0 M], добавлен 26.12.2013

  • Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.

    дипломная работа [1,7 M], добавлен 16.02.2016

  • Особенности объектно-ориентированного проектирования. Основные понятия объектно-ориентированного подхода. Основы языка UML, варианты его использования. Диаграммы классов и взаимодействия. Разработка диаграммы прецедентов (вариантов использования).

    курсовая работа [1,1 M], добавлен 13.05.2014

  • Основные понятия объектно-ориентированного программирования, особенности описания функций и классов. Разработка программы для работы с универсальной очередью установленного типа, добавления и удаления ее элементов и вывода содержимого очереди на экран.

    курсовая работа [187,2 K], добавлен 27.08.2012

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

    курсовая работа [494,5 K], добавлен 20.06.2012

  • Системное, функциональное проектирование. Классы, реализующие действия и фабрики моделей. Разработка программных модулей. Функция получения глосаризованных заголовков таблиц. Вычисление суммарной наценки. Ручное тестирование. Развертывание приложения.

    дипломная работа [2,6 M], добавлен 23.11.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.