Тема: Приложение "Сотовый телефон"

  • Вид работы: Диплом
  • Предмет: Информационное обеспечение, программирование

Введение


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

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

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

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


Задание


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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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


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


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

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

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

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

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

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

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

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

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

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

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


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

1.Класс «TForm»

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

Color - цвет окна;

Width - ширина окна;- высота окна.

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

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

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

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

BuildImage - отрисовать главное меню;- показать форму;

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 - Диаграмма последовательности для варианта использования


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

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

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

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

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


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

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

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

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

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

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

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

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


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


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

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

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

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


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


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

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

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


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


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

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

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

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


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


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

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

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

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

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

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


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


Диаграмма состояний построена для объекта TimerCall класса TTimer. Объект имеет 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) - обработчик закрытия формы;__fastcall TMainFm: BuildImage() - обработчик отрисовавыния главного меню;__fastcall TMainFm: FormPaint (TObject *Sender) - обработчик рисования формы;__fastcall TMainFm: FormShow (TObject *Sender) - обработчик показа формы;__fastcall TMainFm: FormMouseDown (TObject *Sender,Button, TShiftState Shift, int X, int Y) - обработчик события нажатия мышкой по форме;__fastcall TMainFm:clkSMS() - обработчик пункта меню «SMS»;__fastcall TMainFm:clkSMSNUM() - обработчик кнопки «Отправить» в пункте меню «SMS»;__fastcall TMainFm:clkCalendar() - обработчик пункта меню «Календарь»;__fastcall TMainFm:clkPictures() - обработчик пункта меню «Картинки»;__fastcall TMainFm:clkAlarm() - обработчик пункта меню «Будильник»;__fastcall TMainFm:clkNodes() - обработчик пункта меню «Заметки»;__fastcall TMainFm:clkMap() - обработчик пункта меню «Контакты»;__fastcall TMainFm:clkSettings() - обработчик пункта меню «Настройки»;__fastcall TMainFm:clkCall() - обработчик пункта меню «Звонок»;__fastcall TMainFm:clkCall() - обработчик пункта меню «Календарь»;__fastcall TMainFm: TimerCallTimer (TObject *Sender) - обработчик таймера для анимации звонка;__fastcall TMainFm: TimerSendTimer (TObject *Sender) - обработчик таймера для анимации отправки сообщений;__fastcall TMainFm: TimerAlarmTimer (TObject *Sender) - обработчик таймера для будильника;__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 с., ил.

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

Вендров А.М. Проектирование ПО экономических информационных систем - М.: «Финансы и статистика», 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;

*MainFm;

// -

__fastcall TMainFm:TMainFm (TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TMainFm: FormCreate (TObject *Sender)

{= new Graphics:TBitmap;>Width = Width;>Height = Height;= MAINMENU;

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

alarmTime = «00:00»;t;(&t);= t.wHour; // Время будильника= (t.wMinute + 2)% 60;= true; // Будильник вкл. выкл.


}

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

{Buf;

}

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

void __fastcall TMainFm: BuildImage()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>TransparentColor = clBlack;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_menu2.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_menu2.bmp»);>Canvas->Draw (0, 0, tmp);

tmp;

}

// -__fastcall TMainFm: FormPaint (TObject *Sender)

{>Draw (0, 0, Buf);

}

// -__fastcall TMainFm: FormShow (TObject *Sender)

{();

}

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

void __fastcall TMainFm: FormMouseDown (TObject *Sender,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(X > 190 && X < 232 && Y > 321 && Y < 337)

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

if (TimerAlarm->Enabled)

{>Enabled = false;= MAINMENU;();

}(state!= 9)

{>Enabled = false;= MAINMENU;();

} else

{(TimerSend->Enabled)

{>Enabled = false;= MAINMENU;();

} else

{= SMS;();

}

}

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

(state == 7)

{(Y > 202 && Y < 222)

{(X > 25 && X < 43) textFrend += «1»;(X > 47 && X < 65) textFrend += «2»;(X > 69 && X < 86) textFrend += «3»;(X > 90 && X < 107) textFrend += «4»;(X > 111 && X < 128) textFrend += «5»;(X > 132 && X < 150) textFrend += «6»;(X > 154 && X < 171) textFrend += «7»;(X > 174 && X < 193) textFrend += «8»;(X > 196 && X < 212) textFrend += «9»;(X > 217 && X < 233) textFrend += «0»;

}(Y > 226 && Y < 248)

{(X > 25 && X < 43) textFrend += «Ц»;(X > 47 && X < 65) textFrend += «У»;(X > 69 && X < 86) textFrend += «К»;(X > 90 && X < 107) textFrend += «Е»;(X > 111 && X < 128) textFrend += «Н»;(X > 132 && X < 150) textFrend += «Г»;(X > 154 && X < 171) textFrend += «Ш»;(X > 174 && X < 193) textFrend += «Щ»;(X > 196 && X < 212) textFrend += «З»;(X > 217 && X < 233) textFrend += «Х»;

}(Y > 250 && Y < 270)

{(X > 25 && X < 43) textFrend += «Ы»;(X > 47 && X < 65) textFrend += «В»;(X > 69 && X < 86) textFrend += «А»;(X > 90 && X < 107) textFrend += «П»;(X > 111 && X < 128) textFrend += «Р»;(X > 132 && X < 150) textFrend += «О»;(X > 154 && X < 171) textFrend += «Л»;(X > 174 && X < 193) textFrend += «Д»;(X > 196 && X < 212) textFrend += «Ж»;(X > 217 && X < 233) textFrend += «Э»;

}(Y > 273 && Y < 295)

{(X > 25 && X < 43) textFrend += «Я»;(X > 47 && X < 65) textFrend += «Ч»;(X > 69 && X < 86) textFrend += «С»;(X > 90 && X < 107) textFrend += «М»;(X > 111 && X < 128) textFrend += «И»;(X > 132 && X < 150) textFrend += «Т»;(X > 154 && X < 171) textFrend += «Ь»;(X > 174 && X < 193) textFrend += «Б»;(X > 196 && X < 212) textFrend += «Ю»;(X > 217 && X < 233) textFrend +=».»;

}(Y > 297 && Y < 317)

{(X > 69 && X < 86) textFrend += «Ё»;(X > 90 && X < 107) textFrend += «_»;(X > 111 && X < 128) textFrend += «Й»;(X > 132 && X < 150) textFrend += «Ъ»;(X > 154 && X < 171) textFrend += «Ф»;(X > 174 && X < 193) textFrend += «»;(X > 196 && X < 212) textFrend. Delete (textFrend. Length(), 1);

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

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

textFrend=»»;

clkMap();

} else clkMap();

}(state == 1)

{ //SMS(Y > 202 && Y < 222)

{(X > 25 && X < 43) textSMS += «1»;(X > 47 && X < 65) textSMS += «2»;(X > 69 && X < 86) textSMS += «3»;(X > 90 && X < 107) textSMS += «4»;(X > 111 && X < 128) textSMS += «5»;(X > 132 && X < 150) textSMS += «6»;(X > 154 && X < 171) textSMS += «7»;(X > 174 && X < 193) textSMS += «8»;(X > 196 && X < 212) textSMS += «9»;(X > 217 && X < 233) textSMS += «0»;

}(Y > 226 && Y < 248)

{(X > 25 && X < 43) textSMS += «Ц»;(X > 47 && X < 65) textSMS += «У»;(X > 69 && X < 86) textSMS += «К»;(X > 90 && X < 107) textSMS += «Е»;(X > 111 && X < 128) textSMS += «Н»;(X > 132 && X < 150) textSMS += «Г»;(X > 154 && X < 171) textSMS += «Ш»;(X > 174 && X < 193) textSMS += «Щ»;(X > 196 && X < 212) textSMS += «З»;(X > 217 && X < 233) textSMS += «Х»;

}(Y > 250 && Y < 270)

{(X > 25 && X < 43) textSMS += «Ы»;(X > 47 && X < 65) textSMS += «В»;(X > 69 && X < 86) textSMS += «А»;(X > 90 && X < 107) textSMS += «П»;(X > 111 && X < 128) textSMS += «Р»;(X > 132 && X < 150) textSMS += «О»;(X > 154 && X < 171) textSMS += «Л»;(X > 174 && X < 193) textSMS += «Д»;(X > 196 && X < 212) textSMS += «Ж»;(X > 217 && X < 233) textSMS += «Э»;

}(Y > 273 && Y < 295)

{(X > 25 && X < 43) textSMS += «Я»;(X > 47 && X < 65) textSMS += «Ч»;(X > 69 && X < 86) textSMS += «С»;(X > 90 && X < 107) textSMS += «М»;(X > 111 && X < 128) textSMS += «И»;(X > 132 && X < 150) textSMS += «Т»;(X > 154 && X < 171) textSMS += «Ь»;(X > 174 && X < 193) textSMS += «Б»;(X > 196 && X < 212) textSMS += «Ю»;(X > 217 && X < 233) textSMS +=».»;

}(Y > 297 && Y < 317)

{(X > 69 && X < 86) textSMS += «Ё»;(X > 90 && X < 107) textSMS += «_»;(X > 111 && X < 128) textSMS += «Й»;(X > 132 && X < 150) textSMS += «Ъ»;(X > 154 && X < 171) textSMS += «Ф»;(X > 174 && X < 193) textSMS += «»;(X > 196 && X < 212) textSMS. Delete (textSMS. Length(), 1);

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

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

callNumber = «»;();

} else clkSMS();

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

(state == 9)

{ //SMSNUM Набор номера SMS(X > 25 && X < 70 && Y > 321 && Y < 357 && callNumber. Length() > 0)

{ // Кнопка Отправить>Enabled = true;= 0;

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

{ // Кнопка Стереть. Delete (callNumber. Length(), 1);();

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

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0n = 0;(X > 26 && X < 46) n = 1;(X > 46 && X < 66) n = 2;(X > 66 && X < 87) n = 3;(X > 87 && X < 108) n = 4;(X > 108 && X < 128) n = 5;(X > 128 && X < 151) n = 6;(X > 151 && X < 171) n = 7;(X > 171 && X < 191) n = 8;(X > 191 && X < 211) n = 9;+= IntToStr(n);();

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

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

(state == 6)

{ // Будильник(X > 25 && X < 70 && Y > 321 && Y < 337)

{ // Кнопка OK= StrToInt (alarmTime. SubString (1, 2));= StrToInt (alarmTime. SubString (4, 2));= newAlarmEnabled;= MAINMENU;();

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

{ // Выкл-вкл= 1;=! newAlarmEnabled;();

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

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0n = 0;(X > 26 && X < 46) n = 1;(X > 46 && X < 66) n = 2;(X > 66 && X < 87) n = 3;(X > 87 && X < 108) n = 4;(X > 108 && X < 128) n = 5;(X > 128 && X < 151) n = 6;(X > 151 && X < 171) n = 7;(X > 171 && X < 191) n = 8;(X > 191 && X < 211) n = 9;(alarmNInput == 5)

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

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

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

}(alarmNInput == 2)

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

{(n < 4)

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

}

} else

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

}

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

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

}

(alarmNInput == 3) alarmNInput++;(alarmNInput > 5) alarmNInput = 1;();

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

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

(state == 199)

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

// Мелодия(X > 50 && X < 110 && Y > 140 && Y < 155) newRezhim = 0;

// Вибро(X > 50 && X < 110 && Y > 160 && Y < 175) newRezhim = 1;

// Мелодия и вибро(X > 50 && X < 110 && Y > 180 && Y < 195) newRezhim = 2;(X > 25 && X < 70 && Y > 321 && Y < 337)

{ // Кнопка OK= newRezhim;= MAINMENU;();

} else clkSettings();

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

if (state == 8)

{ // Вызов((X > 25 && X < 70 && Y > 321 && Y < 357 ||> 38 && X < 74 && Y > 345 && Y < 381) && callNumber. Length() > 0)

{ // Кнопка Вызов>Enabled = true;= 0;

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

{ // Кнопка Стереть. Delete (callNumber. Length(), 1);();

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

{ // Ввод цифр 1 2 3 4 5 6 7 8 9 0n = 0;(X > 26 && X < 46) n = 1;(X > 46 && X < 66) n = 2;(X > 66 && X < 87) n = 3;(X > 87 && X < 108) n = 4;(X > 108 && X < 128) n = 5;(X > 128 && X < 151) n = 6;(X > 151 && X < 171) n = 7;(X > 171 && X < 191) n = 8;(X > 191 && X < 211) n = 9;+= IntToStr(n);();

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

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

(state == 0)

{ // Главное меню(X > 38 && X < 74 && Y > 103 && Y < 137)

{ // Выбран пункт СМС= «»;();

}(X > 86 && X < 124 && Y > 103 && Y < 137) clkCalendar();(X > 136 && X < 174 && Y > 103 && Y < 137) clkPictures();

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

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

alarmTime = IntToStr(alarmTimeH);(alarmTimeH < 10) alarmTime. Insert («0», 1);+=»:» + IntToStr(alarmTimeM);(alarmTimeM < 10) alarmTime. Insert («0», 4);= alarmEnabled;= 1;();

}(X > 38 && X < 74 && Y > 161 && Y < 197) clkCalc();(X > 86 && X < 124 && Y > 161 && Y < 197) clkNodes();(X > 136 && X < 174 && Y > 161 && Y < 197) clkMap();(X > 185 && X < 222 && Y > 161 && Y < 197)

{= rezhim;();

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

{= «»;();

}


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

}

// -__fastcall TMainFm:clkSMS()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);>TransparentColor = clBlack;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»);>Canvas->Draw (0, 200, tmp);

>Canvas->Brush->Color = TColor(0xaaaaaa);>Canvas->FillRect (TRect(26, 95, 238, 170));>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = TColor(0xeeeeee);n = 0;tempS = textSMS;(tempS. Length() > 0)

{out = «»;(Buf->Canvas->TextWidth(out) < 212 - Buf->Canvas->TextWidth («W»))

{(tempS. Length() < 1) break;+= tempS[1];. Delete (1, 1);

}>Canvas->TextOutA (26, 95 + n, out);+= Buf->Canvas->TextHeight(«») + 2;(n + 95 > 160) break;

}

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Отправить»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;= SMS;

}

// -__fastcall TMainFm:clkSMSNUM()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Отправить»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);>Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Стереть») / 2, 321, «Стереть»);

tm = Buf->Canvas->Font->Name;>Canvas->Font->Name = «Arial»;>Canvas->Font->Color = clGreen;>Canvas->Font->Size = 20;>Canvas->TextOutA (40, 180, callNumber);>Canvas->Font->Name = tm;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);>Canvas->Draw (0, 260, tmp);

tmp;= SMSNUM;

}

// -__fastcall TMainFm:clkCalendar()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

tmp;= CALENDAR;

}

// -__fastcall TMainFm:clkPictures()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Выбрать»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

delete tmp;= PICTURES;

}

// -__fastcall TMainFm:clkAlarm()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «ОК»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

(newAlarmEnabled)

{>Canvas->TextOutA (126 - Buf->Canvas->TextWidth(alarmTime) / 2, 150, alarmTime);>Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Вкл.») / 2, 132, «Вкл.»);(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);>Canvas->Draw (0, 260, tmp);

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

tmp;= ALARM;

}

// -__fastcall TMainFm:clkCalc()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Результат»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

tmp;= CALC;

}

// -__fastcall TMainFm:clkNodes()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «ОК»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

tmp;= NODES;

}

// -контакты-__fastcall TMainFm:clkMap()

{

>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);>TransparentColor = clBlack;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\key.bmp»);>Canvas->Draw (0, 200, tmp);

>Canvas->Brush->Color = TColor(0xaaaaaa);>Canvas->FillRect (TRect(26, 95, 238, 170));>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = TColor(0xeeeeee);n = 0;tempS = textFrend;(tempS. Length() > 0)

{out = «»;(Buf->Canvas->TextWidth(out) < 212 - Buf->Canvas->TextWidth («W»))

{(tempS. Length() < 1) break;+= tempS[1];. Delete (1, 1);

}>Canvas->TextOutA (26, 95 + n, out);+= Buf->Canvas->TextHeight(«») + 2;(n + 95 > 160) break;

}

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Удалить все»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);

tmp;= MAP;

}


// -__fastcall TMainFm:clkSettings()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «ОК»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);>Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Выбор профиля:») / 2, 100, «Выбор профиля:»);>Canvas->TextOutA (50, 140, «Мелодия»);>Canvas->TextOutA (50, 160, «Вибро»);>Canvas->TextOutA (50, 180, «Мелодия и вибро»);

if (newRezhim == 0)

{>Canvas->Brush->Style = bsClear;>Canvas->Brush->Color = TColor(0x555555);>Canvas->Font->Color = clWhite;>Canvas->TextOutA (50, 140, «Мелодия»);

}(newRezhim == 1)

{>Canvas->Brush->Style = bsClear;>Canvas->Brush->Color = TColor(0x555555);>Canvas->Font->Color = clWhite;>Canvas->TextOutA (50, 160, «Вибро»);

}(newRezhim == 2)

{>Canvas->Brush->Style = bsClear;>Canvas->Brush->Color = TColor(0x555555);>Canvas->Font->Color = clWhite;>Canvas->TextOutA (50, 180, «Мелодия и вибро»);

}

tmp;= SETTINGS;

}

// -__fastcall TMainFm:clkCall()

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

Graphics:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (27, 321, «Вызов»);>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Назад»), 321, «Назад»);>Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Стереть») / 2, 321, «Стереть»);

tm = Buf->Canvas->Font->Name;>Canvas->Font->Name = «Arial»;>Canvas->Font->Color = clGreen;>Canvas->Font->Size = 20;>Canvas->TextOutA (40, 180, callNumber);>Canvas->Font->Name = tm;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\digits.bmp»);>Canvas->Draw (0, 260, tmp);

delete tmp;= CALL;

}

// -__fastcall TMainFm: TimerCallTimer (TObject *Sender)

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);

>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);

tm = Buf->Canvas->Font->Name;>Canvas->Font->Name = «Arial»;>Canvas->Font->Color = clGreen;

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

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth(callNumber) / 2, 180, callNumber);>Canvas->Font->Name = tm;

tmp->TransparentColor = clBlack;

if (FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»);>Canvas->Draw (30 + (callPos% 7) * 30, 240, tmp);

callPos++;(callPos > 41)

{>Enabled = false;

state = MAINMENU;();

}

tmp;();

}

// -__fastcall TMainFm: TimerSendTimer (TObject *Sender)

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);

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


if (callPos < 10)

{>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);tm = Buf->Canvas->Font->Name;>Canvas->Font->Name = «Arial»;>Canvas->Font->Color = clGreen;

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

Buf->Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Отправка…») / 2, 180, «Отправка…»);>Canvas->Font->Name = tm;>TransparentColor = clBlack;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\send.bmp»))

{>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\send.bmp»);>Canvas->Draw (30 + (callPos% 6) * 20, 240, tmp);

}

} else

{>Canvas->Brush->Style = bsClear;>Canvas->Font->Size = 8;>Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («ОК»), 321, «ОК»);tm = Buf->Canvas->Font->Name;>Canvas->Font->Name = «Arial»;>Canvas->Font->Color = clGreen;>Canvas->Font->Size = 20;>Canvas->TextOutA (126 - Buf->Canvas->TextWidth («Отправлено») / 2, 180, «Отправлено»);>Canvas->Font->Name = tm;

}++;(callPos > 30)

{>Enabled = false;= MAINMENU;();

}

tmp;();

}

// -

void __fastcall TMainFm: TimerAlarmTimer (TObject *Sender)

{>Canvas->Brush->Color = clWhite;>Canvas->FillRect (TRect(0, 0, Buf->Width, Buf->Height));

:TBitmap *tmp = new Graphics:TBitmap;>Transparent = true;>TransparentColor = clWhite;(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»))>LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\iPhone_bg.bmp»);>Canvas->Draw (0, 0, tmp);>Canvas->Brush->Style = bsClear;

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

Buf->Canvas->Font->Style = TFontStyles()<< fsBold;>Canvas->Font->Color = clGray;>Canvas->TextOutA (232 - Buf->Canvas->TextWidth («Отмена»), 321, «Отмена»);(FileExists (ExtractFilePath(Application->ExeName)+»\\pic\\call.bmp»))

{>TransparentColor = clBlack;

tmp->LoadFromFile (ExtractFilePath(Application->ExeName)+»\\pic\\alarm_» + IntToStr (callPos% 4) +».bmp»);>Canvas->Draw (Width / 2 - tmp->Width / 2, 180, tmp);

}++;(callPos > 80)

{>Enabled = false;= MAINMENU;

BuildImage();

}

tmp;

Repaint();

}

// -__fastcall TMainFm: TimerAlarm2Timer (TObject *Sender)

{(alarmEnabled &&! TimerAlarm->Enabled)

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

{= 0;>Enabled = true;

}

}

}

// -

.cpp

// -


#include <vcl.h>

#pragma hdrstop

// -(«UnitMainFm.cpp», MainFm);

// -WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{

{>Initialize();>Title = «iPhone 3G»;>CreateForm (__classid(TMainFm), &MainFm);>Run();

}(Exception &exception)

{>ShowException(&exception);

}(…)

{

{Exception(«»);

}(Exception &exception)

{>ShowException(&exception);

}

}0;

}

// -