Создание прикладных Windows–приложений

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    831,39 Кб
  • Опубликовано:
    2015-02-20
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание прикладных Windows–приложений

Министерство Просвещения ПМР

ГОУ «Тираспольский Техникум Информатики и Права»











ДИПЛОМНАЯ РАБОТА

Тема: «Создание прикладных Windows-приложений»











г. Тирасполь

г

РЕФЕРАТ

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

В первой главе рассмотрены теоретические аспекты решаемой задачи, где рассматриваются история возникновения и развитие рынка электронных секретарей и органайзеров, преимущества и недостатки известных программ-органайзеров, примеры программ - органайзеров.

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

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

В приложении прилагается полностью листинг разработанной программы.

ОГЛАВЛЕНИЕ

Введение

Глава 1. Теоретические сведения по поставленной задаче

.1 История возникновения и развитие рынка электронных секретарей и органайзеров

.2 Преимущества и недостатки программ-органайзеров

.3 Примеры программ - органайзеров

Глава 2.Основная часть

.1 Постановка задачи

.2 Блок-схема главного модуля

.3 Описание блок-схемы главной программы

.4 Описание операционной системы

.5 Описание языка программирования

.6 Инструкция программисту

.7 Инструкция пользователю

.8 Листинг результатов обработки на контрольном примере

.9 Анализ полученных результатов

Глава 3. Охрана труда и безопасности жизнедеятельности

.1 Анализ условий труда

.2Требования безопасности, эргономики и технической эстетики к рабочему месту

.3 Требования к уровню шума и вибрации

.4 Требования к освещенности

.5 Требования безопасности к излучению от дисплея

.6 Требования эргономики и технической эстетики к рабочему месту

.7 Требования электробезопасности

.8 Разработка защитных мероприятий на рабочем месте пользователя

.9 Требования к выполнению правил пожарной безопасности

Заключение

Список литературы

Приложение

прикладное приложение органайзер листинг

ВВЕДЕНИЕ

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

Речь идёт прежде всего о программах - органайзерах, позволяющих вести учёт времени, рабочих дел, памятных дат в жизни простого пользователя.

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

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

Так мы выяснили популярность предлагаемых на рынке программ, среди которых существуют как коммерческие, так и бесплатные экземпляры, созданные обычными программистами, причём в разных средах программирования и на разных платформах.

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

ГЛАВА I. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ ПО ПОСТАВЛЕННОЙ ЗАДАЧЕ

.1 История возникновения и развитие рынка электронных секретарей и органайзеров

Ситуация вокруг персональных электронных органайзеров и карманных компьютеров представляет несомненный интерес. События на этом рынке развивались весьма стремительно, причем конкурентная борьба велась порой даже слишком жестко. А начиналось все, как это ни странно сейчас звучит, в далеких 80-х. Тогда британская компания Psion Computing занималась разработкой первой в мире операционной системы, специально предназначенной для небольших карманных компьютеров и мобильных устройств. Тогда же, в 1984 году, ею было выпущено устройство, получившее незамысловатое название Organiser 1. Этот, по сути, электронный органайзер внешне очень сильно напоминал обычный калькулятор. И тем не менее именно его можно считать родоначальником всех современных карманных компьютеров.

Вслед за своим первым творением компания Psion продолжает развивать идею карманных устройств, снабженных малогабаритной клавиатурой, и создает новые модели своих мини-устройств: Organiser II, HC и WorkAbout. Немного позднее, уже в 1991 году, Psion выпускает свой первый клавиатурный мини-компьютер Psion Series 3, который и стал прародителем всех современных клавиатурных карманных компьютеров. Впоследствии за такими устройствами прочно закрепилось название handheld-компьютеров.

И только год спустя, в мае 1992 года, исполнительный директор компании Apple Джон Скалли (John Sculley) представил публике прототип устройства, которое, по мнению Apple, должно было стать тем самым электронным помощником, сопровождающим человека в любом месте и в любое время. Назывался малыш Apple Newton NotePad, впоследствии переименованный в более звучное Newton MessagePad. День рождения был обставлен с грандиозным размахом и шумихой. И сейчас уже мало кто вспомнит, что первой компанией, представившей карманный ПК, была именно Psion. Тем не менее, MessagePad - устройство, открывшее новую страницу в истории развития компьютерных технологий. Компания Apple пошла другим путем, отличным от того, по которому развивались продукты Psion. Маленький Newton фактически стал первым карманным компьютером, лишенным клавиатуры, но обладающим сенсорным экраном. И в этом смысле за Apple остается бесспорное первенство в области бесклавиатурных устройств. Справедливости ради следует заметить, что это был настоящий прорыв в новую эпоху - эпоху, в которой Apple чувствовала себя лидером. Newton был вне конкуренции. Такого просто еще не было... На августовской выставке Macworld Expo в 1993 году первые пять тысяч устройств были полностью распроданы по цене 800 $ всего за несколько часов.

В феврале 1994 года компания Apple представила новую модификацию Newton MessagePad 110. Это была полностью переработанная модель, в которой были учтены все недостатки ее предшественника. С интервалом в один год компания выпускает две новые версии устройства - MessagePad 120 и MessagePad 130, обладающие в два раза большим объемом оперативной памяти. Через некоторое время выходит новый MessagePad 2000, оснащенный более совершенным процессором StrongARM компании Intel. В конце 1997 года Apple начинает производство усовершенствованного Newton MessagePad 2100. Объем оперативной памяти увеличен в четыре раза, появился инфракрасный порт и возможность подключения к локальной сети. И хотя в течение всего времени продвижения карманных компьютеров серии Newton данный проект несколько раз находился на грани закрытия, дела у компании шли хорошо...

Но 27 февраля 1998 года Apple делает официальное заявление: компания прекращает все программные и аппаратные разработки в рамках проекта Newton, никаких новых продуктов для данной платформы выпускаться не будет... Данное заявление свалилось буквально как снег на голову. Проект был, полностью свернут, но Newton дал мощный толчок развитию целой отрасли персональных мини-компьютеров.

В то же самое время, в середине 90-х, на арену выходит компания Palm Computing, разработчик собственной операционной системы Palm OS. В сентябре 1995 года фирма Palm Computing была приобретена компанией U.S. Robotics и уже в марте 1996 года начала выпуск первых моделей электронных органайзеров PalmPilot 1000 и PalmPilot 5000, работающих под управлением Palm OS. Модели имели оперативную память объемом 128 и 512 Кбайт соответственно. В марте 1997 года появляется новая серия PalmPilot, состоящая из моделей Personal (с подсветкой экрана) и Professional (дальнейшее развитие линейки, предполагающее поддержку TCP/IP и увеличенную до 1 Мбайт оперативную память). В мае того же года теперь уже компания 3Com покупает U.S. Robotics, одновременно приобретая и Palm. После заключенной сделки все модели PalmPilot стали выходить под торговой маркой 3Com. С декабря 1997 года фирма Palm начала лицензировать свою Palm OS, что позволило в дальнейшем таким компаниям, как Nokia, Sony и др., выпускать свои продукты на базе данной операционной системы. Спустя ровно один год после обновления линейки PalmPilot, как раз вслед за неожиданным прекращением компанией Apple всех работ над проектом Newton, в марте 1998 года Palm представляет третье поколение своих органайзеров PalmPilot - серию Palm III. Новые модели имели уже 2 Мбайт оперативной памяти и были оснащены инфракрасным портом для обмена информацией с другими устройствами.

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

Но такая ситуация в корне не устраивала еще одного крупного игрока - компанию Microsoft. В сентябре 1998 года Microsoft представила первую версию своей “мобильной” операционной системы Windows CE. Однако версии 1.0 и 2.0 этой ОС не внесли какого-либо серьезного вклада в развитие рынка по очень простой причине: обе они не выдерживали никакой конкуренции с очень простой и интуитивно понятной операционной системой Palm OS.

А ситуация на рынке тем временем менялась настолько динамично, что порой, казалось, даже сами компании не успевали следить за всем происходящим. В июле 1998 года основатели компании Palm Computing - разработчик PalmPilot Джефф Хоукинс (Jeff Hawkins), бывший президент и исполнительный директор Донна Дубински (Donna Dubinsky) и бывший вице-президент по маркетингу Эд Коллиган (Ed Colligan) - покинули 3Com (Palm Computing к тому времени была во владении 3Com) и создали компанию Handspring. В начале октября на выставке Internet World’99 новая фирма представила свою первую модель на базе Palm OS - Visor. В течение 2000 года компания наладила продажи своих карманных устройств по всему миру, а также представила новые модификации серии Visor - Solo, Deluxe, Platinum и Prism. На сегодняшний день модель Handspring Visor Platinum является самым производительным карманным компьютером в мире среди моделей под управлением Palm OS.

В конце 1999 году к числу компаний, выпускающих продукты на базе Palm OS, присоединилась и основанная в 1991 году фирма TRG, выполнявшая до этого момента только конструкторские разработки для крупных производственных компаний. Теперь ее вновь созданное подразделение TRG Products занялось выпуском модели TRGpro, которая сегодня прочно удерживает лидерство среди персональных электронных помощников.

Однако эта история была бы неполной, если не упомянуть о событиях июня 2000 года, когда компания Microsoft выпустила третью версию своей ОС - Windows CE 3.0. Она получилась удачнее своих предшественниц, но Microsoft не была бы самой собой, если бы не придумала очередные хитрые маркетинговые акции. Во-первых, для карманных компьютеров на базе новой ОС версии 3.0 были предложены термины Pocket PC, или более детальный - Microsoft Windows Powered Pocket PC. Во-вторых, для самой операционной системы компания ввела новое название - Microsoft Pocket PC Windows CE. Все это, очевидно, было сделано с единственной целью, - избавиться от ассоциаций с маркой Palm.

И последнее. В августе текущего года на конференции Herring on Hollywood всемирно известная топ-модель Клаудиа Шиффер (Claudia Schiffer) объявила о выпуске специальной версии Palm Vx Claudia Schiffer Edition. Вот уж, поистине "секретное оружие".

.2 Преимущества и недостатки программ-органайзеров

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

Таблица 1

Электронные органайзеры против бумажных органайзеров

Бумажный органайзер

Электронные органайзеры

Пространство для записей в бумажном органайзере ограничено.

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

Проблемы с быстрой записью информации в дороге (трудно быстро записывать информацию "навису", часто трудно разобраться с почерком, неудобно искать нужное место для записи, если записал не в том месте, нужно все заново переписывать)

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

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

Практически все современные КПК имеют цветные экраны или подсветку, что дает им огромное преимущество при недостатке освещения

Если в дорогу требуется взять информацию, находящуюся в компьютере, ее придется переписать вручную или печатать на принтере, а после редактирования в дороге изменения придется набирать на компьютере вновь (большая потеря времени, а если учесть проблемы с почерком, то это время увеличится еще больше).

В КПК легко перенести информацию с настольного компьютера - сохраняется даже форматирование документа.

Бумажные органайзеры дешевле.

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

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

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

Невыполненные дела нужно переносить вручную.

Невыполненные дела переносятся на следующий день автоматически или при помощи простейшей операции "изменить дату".

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

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

Бумажные органайзеры имеют древнюю историю и наиболее привычны.

Использование КПК престижно и может существенно повысить статус его владельца.

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

С КПК информацию можно:  а) напечатать на принтере;  б) передать на настольный или портативный компьютер (по инфракрасному, последовательному порту или через карту памяти);  в) передать на другой такой же КПК;  г) послать по факсу, по электронной почте (при наличии факс/модема)

На бумажном органайзере трудно проводить сложные расчеты.

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

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

Многочисленные программы для КПК позволяют использовать новейшие достижения компьютерной технологии в повседневной деятельности.

 

.3 Примеры программ - органайзеров

Электронный органайзер Exiland Assistant (Рис.1) - это не просто планировщик задач или ежедневник. Кроме функций классического органайзера он может использоваться как программа CRM, программа записной книжки (pim) для хранения контактов людей и предприятий, заметок (статей, документов, паролей, рецептов и т.п.), ссылок интернета, событий, праздников, юбилеев. Электронный ежедневник содержит удобный планировщик задач с напоминалкой. Каждая персона может сопровождаться такой информацией как Ф.И.О, адрес, телефон (дом, раб, сотовый), фото, ICQ, e-mail, пейджер, адрес сайта, дата рождения, увлечения, паспортные данные, события и т.д. Каждое предприятие может хранить название, адрес, тел, e-mail, web-сайт, часы работы, филиалы, контактные лица и их должности, банковские реквизиты, ссылку на прайс-лист и т.п.

Рис. 1. Пример программы-органайзера

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

Многие люди, которые привыкли ценить время и содержать свои персональные данные в порядке, часто используют бумажный ежедневник как планировщик дел или записную книжку. В электронной записной книжке, в отличии от бумажной, есть возможность фильтрации записей, то есть выборки по определенному условию, хранения фото персон, функции напоминалки (напоминателя). Ежедневник Exiland Assistant выполнен как программа напоминаний, программа заметок и электронной записной книжки с учетом быстрого доступа к данным; удобный и интуитивно понятный графический интерфейс, быстрый поиск, фильтр, печать.

Также органайзер содержит функцию напоминателя (напоминалки) о ближайших Днях Рождения персон, событиях, праздниках. Введите дату рождения друзей и родственников, и вы никогда не забудете поздравить их с Днем Рождения. Программа предупредит вас об этом заранее за указанное вами количество дней. Даже если время напоминания или оповещения о задаче наступило в момент, когда у вас не была запущена программа или был выключен компьютер, программа органайзер Exiland Assistant сообщит вам о нем сразу после включения компьютера и запуска программы.

ГЛАВА II. ОСНОВНАЯ ЧАСТЬ

.1 Постановка задачи

Выяснить методику программирования Windows - приложений в среде Delphi или Visual C++ (по желанию).

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

Разработать блок-схему будущего приложения.

Создать программу, которая будет имитировать электронную записную книжку и обладать следующими приложениями (меню):

Хранение информации

Даты, ФИО, Календарь, События

Редактирование

Копирование

Вставка и т.д.

Протестировать программу на примере.

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

2.2 Блок-схема главного модуля


.3 Описание блок-схемы главной программы

Назначение элементов, которые содержаться в блок-схеме представлены в таблице 1.

Таблица 1

Описание элементов блок-схемы

Номер блока

Описание

Блок 1

Запуск стартовой формы. Начало работы программы.

Блок 2

Внесение заметок. Создание групп и подгрупп заметок, создание заметок и внесение текстовой информации в заметки.

Блок 3

Создание телефонной книги, создание и внесение записей в телефонную книгу.

Блок 4

Изменение настроек программы. Установка основных параметров программы.

Блок 5

Завершение работы с программой. Выход.


.4 Описание операционной системы

Основное требование к операционной системе (ОС), предъявляемое поставленной задачей, это наличие ANSI или POSIX совместимого компилятора языка Pascal. Для реализации задачи была выбрана последняя клиентская версия операционной системы Microsoft, основанная на ядре NT - Microsoft Windows XP Professional.

Указанная операционная система обладает рядом преимуществ:

наличие достаточного количество ANSI или POSIX совместимых компиляторов языка Pascal, разработанных для данной ОС, а именно -

Borland Turbo Pascal (version 3-7)Delphi (version 3-7)

прочие;

достаточная управляемость, надежность и безопасность;

широкое распространение основанных на ядре NT операционных систем Microsoft, совместимых по программному обеспечению с Windows XP Professional (NT/2000/XP/2003 - client & server);

высокая скорость работы приложений, разработанных для данной ОС с использованием компиляторов Pascal.

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

.5 Описание выбранного языка программирования

Внешний вид среды программирования Delphi отличается от многих других из тех, что можно увидеть в Windows. К примеру, Borland Pascal for Windows 7.0, Borland C++ 4.0, Word for Windows, Program Manager - это все MDI приложения и выглядят по-другому, чем Delphi. MDI (Multiple Document Interface) - определяет особый способ управления нескольких дочерних окон внутри одного большого окна.

Среда Delphi же следует другой спецификации, называемой Single Document Interface (SDI), и состоит из нескольких отдельно расположенных окон. Это было сделано из-за того, что SDI близок к той модели приложений, что используется в Windows 95.

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

Главные составные части среды программирования

Ниже перечислены основные составные части Delphi:

Дизайнер Форм (Form Designer)

Окно Редактора Исходного Текста (Editor Window)

Палитра Компонент (Component Palette)

Инспектор Объектов (Object Inspector)

Справочник (On-line help)

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

Программисты на Delphi проводят большинство времени, переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор). Прежде чем Вы начнете, убедитесь, что можете распознать эти два важных элемента. Дизайнер Форм показан на рис.1, окно Редактора - на рис.2.

Рис. 2. Дизайнер Форм - то место, где Вы создаете визуальный интерфейс программы.

Рис.3: В окне Редактора Вы создаете логику управления программой.

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

Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время является Редактор. Логика является движущей силой программы и Редактор - то место, где Вы ее "кодируете".

Палитра Компонент (см. рис.3) позволяет Вам выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкните мышкой на один из объектов и потом второй раз - на Дизайнере Форм. Выбранный Вами объект появится на проектируемом окне и им можно манипулировать с помощью мыши.

Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок - Standard, Additional, Dialogs и т.д. Если Вы щелкнете мышью на одну из закладок, то Вы можете перейти на следующую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе. (На странице Additional есть компоненты для организации страниц с закладками сверху и снизу).

Рис.4: Палитра Компонент - место, где Вы выбираете объекты, которые будут помещены на вашу форму.

Предположим, Вы помещаете компонент TEdit на форму; Вы можете двигать его с места на место. Вы также можете использовать границу, прорисованную вокруг объекта для изменения его размеров. Большинством других компонент можно манипулировать тем же образом. Однако, невидимые во время выполнения программы компоненты (типа TMenu или TDataBase) не меняют своей формы.

Слева от Дизайнера Форм Вы можете видеть Инспектор Объектов (рис.4). Заметьте, что информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Важно понять, что каждый компонент является настоящим объектом и Вы можете менять его вид и поведение с помощью Инспектора Объектов.

Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница - это список свойств, вторая - список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то Вы обычно делаете это в Инспекторе Объектов. К примеру, Вы можете изменить имя и размер компонента TLabel изменяя свойства Caption, Left, Top, Height, и Width.

Вы можете использовать закладки внизу Инспектора Объектов для переключения между страницами свойств и событий.

Рис.5: Инспектор Объектов позволяет определять свойства и поведение объектов, помещенных на форму.

Страница событий связана с Редактором; если Вы дважды щелкнете мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в Редактор, сам Редактор немедленно получит фокус, и Вы сразу же имеете возможность добавить код обработчика данного события. Данный аспект среды программирования Delphi будет еще обсуждаться позднее.

Последняя важная часть среды Delphi - Справочник (on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится Справочник, показанный на рис.5

Рис.6: Справочник - быстрый поиск любой информации.

Справочник является контекстно-зависимым; при нажатии клавиши F1, Вы получите подсказку, соответствующую текущей ситуации. Например, находясь в Инспекторе Объектов, выберите какое-нибудь свойство и нажмите F1 - Вы получите справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение - жмите F1 и необходимая информация появится на экране.

.6 Инструкция программисту

Программа написана на Delphi 6 и использует модульный принцип программирования.

Основой всей программы является форма, на которой отображаются основные пункты меню в виде кнопочных форм, которым соответствуют следующие процедуры:

procedure TPhoneBook.FormCreate(Sender: TObject);

Процедура создания формыTPhoneBook.N2Click(Sender: TObject);

Процедура удаление группы телефоновLoadGroupPhones(Const Groupname:string);

Процедура загрузки телефонов в соответствии с группойLoadPhones;

Процедура загрузки всех телефонов

procedure TPhoneBook.PhonesChange(Sender: TObject; Item: TListItem;Change: TItemChange);

Процедура изменения всех телефоновTPhoneBook.edit_Execute(Sender: TObject);

Процедура редактирование телефонаTPhoneBook.delete_Execute(Sender: TObject);

Процедура удаления телефоновTPhoneBook.PhonesDblClick(Sender: TObject);

Процедура редактирование телефонаTPhoneBook.new_Execute(Sender: TObject);

Процедура создания нового телефонаTPhoneBook.N1Click(Sender: TObject);

Процедура создания новой группы телефоновTPhoneBook.FormActivate(Sender: TObject);

Процедура активации формыTPhoneBook.GroupsChange(Sender: TObject; Item: TListItem; Change: TItemChange);

Процедура изменение групп телефоновTPhoneBook.CheckBox2Click(Sender: TObject);

Процедура видимости групп телефоновTPhoneBook.CheckBox3Click(Sender: TObject);

Процедура видимости комментариев для контактаTPhoneBook.FormClose(Sender: TObject; var Action: TCloseAction);

Процедура закрытия формыTPhoneBook.RemoveExecute(Sender: TObject);

Процедура удаления элемента каталогаTPhoneBook.NewSubCategoryExecute(Sender: TObject);

Процедура создания нового каталогаTPhonebook.NewTextExecute(Sender: TObject);

Процедура добавления новой заметкиTPhonebook.ListChange(Sender: TObject; Node: TTreeNode);

Процедура изменение состояния списка каталогаTPhoneBook.FontcfgExecute(Sender: TObject);

Процедура конфигурации шрифта для отображения текста заметок

procedure TPhoneBook.FilesChange(Sender: TObject);

Процедура запоминания изменяющегося текста в заметке по ходу его изменения

procedure TPhoneBook.ChgPropExecute(Sender: TObject);

Процедура изменения имени заметки или имени и комментария группыUpdateNotesIcons;

Процедура обновления отображения иконок для узлов каталогаUpdateNotes;

Процедура обновления параметров каталога

procedure TPhoneBook.SaveNoteExecute(Sender: TObject);

Процедура сохранения заметки в другой файл

procedure TPhoneBook.AllUpperExecute(Sender: TObject);

Процедура TPhoneBook.AllLowerExecute(Sender: TObject);

Процедура перевода в верхний регистрTPhoneBook.AllProperExecute(Sender: TObject);

Процедура перевода в нижний регистрTPhoneBook.CutExecute(Sender: TObject);

Процедура ВырезатьTPhoneBook.PasteExecute(Sender: TObject);

Процедура ВставитьTPhoneBook.CopyExecute(Sender: TObject);

Процедура КопироватьTPhoneBook.SetFirstExecute(Sender: TObject);

Процедура переместить в начало группыTPhoneBook.FormShow(Sender: TObject);

Процедура показать формуTPhoneBook.bgcolorClick(Sender: TObject);

Процедура установки цвета фона (экспорт)

procedure TPhoneBook.textcolorClick(Sender: TObject);

Процедура установки цвет текста(экспорт)

procedure TPhoneBook.ExitOnEscExecute(Sender: TObject);

Процедура Выход

.7 Инструкция пользователю

Программа запускается с помощью исполняемого файла aSPL_PhoneBook.

После запуска программы на экране появляется стартовое окно(Рис.6):

Рис. 7 Стартовое окно программы

В программном окне мы видим три вкладки:

Заметки

Телефонная книга

Настройки

На вкладке «Заметки» пользователь может создавать свои заметки, разделяя их на отдельные подгруппы(Рис. 8-10):

Рис.8 Создание подгруппы

Рис.9 Добавление группы

Рис.10 Добавление группы

После этого созданные группы появляются в списке «Заметок»(Рис.11)

Рис. 11 Вид окна с группами

В каждой подгруппе можно создавать отдельные заметки (Рис.12-15):

Рис.12 Создание заметок

Рис.13 Окно «Новая заметка»

Рис. 14 Окно «Новая заметка»

Рис. 15 Окно «Новая заметка»

После этого созданные заметки появляются в подгруппе «Дни рождения»(Рис.16)

Рис.16 Список заметок

Выбирая нужную заметку можно вносить необходимые записи(Рис. 17):

Рис. 17 Вид окна с заметками

Можно перемещать заметки в начало списка(Рис. 18):

Рис. 18 Перемещение заметок

Вкладка «Телефонная книга» позволят создавать записи с номерами телефонов абонентов(Рис. 19-25):

Рис.19 Вкладка «Телефонная книга»

Рис. 20 Выделение записи в телефонной книге

Рис. 21 Добавление новой записи

Рис. 22 Добавление нового абонента

Рис. 23 Вид окна с записями

Рис. 24 Выделение записи для изменения

Рис. 25 Изменение записи

Можно удалить текущую запись(Рис. 26-27)

Рис.26 Выделение записи для удаления

Рис. 27 Окно подтверждения удаления

Вкладка «Настройки» позволяет установить основные настройки программы(Рис. 28):

Рис. 28 Вкладка «Настройки»

Сделать цветовые и текстовые настройки(Рис. 29):

Рис. 29 Изменение параметров шрифта

Выставить общие параметры(Рис. 30):

Рис. 30 Изменение общих параметров

Выставить параметры телефонной книги(Рис. 31):

Рис. 31 Изменение параметров телефонной книги

Выставить параметры экспорта данных(Рис. 32):

Рис. 32 Изменение параметров экспорта

2.8 Листинг результатов обработки на контрольном примере

Запустим программу(Рис. 33).

Рис. 33 Запущенная программа

Добавим новую группу в «Заметки»(Рис.33-34)

Рис. 34 Задаем название группы

Рис. 35 Программа с добавленной группой

Добавим в группу «Расписание уроков» заметки с днями недели. (Рис. 36)

Рис. 36 Добавление заметок с днями неделями

Вид программы с созданными заметками(Рис. 37):

Рис. 37 Добавленные заметки

Теперь заполним каждую заметку расписанием уроков(Рис. 38)

Рис. 38 Заполнение расписания для каждого дня недели

.9 Анализ полученных результатов

Итак, разработанное мною Windows-приложение «Программа-органайзер» позволяет вести электронный ежедневник.

Моя программа имитирует электронную записную книжку и обладает следующими приложениями (меню):

Хранение информации

Даты, ФИО, Календарь, События

Редактирование

Копирование

Вставка и т.д.

Все пункты меню моей программы были протестированы на работоспособность.

ГЛАВА III. ОХРАНА ТРУДА И БЕЗОПАСНОСТИ ЖИЗНЕДЕЯТЕЛЬНОСТИ

Тема: «Мероприятия по охране труда и пожарной безопасности»

.1 Анализ условий труда

Цель работы по охране труда обеспечение безопасности жизни, сохранение здоровья и работоспособности работников предприятия в процессе трудовой деятельности и направленных на совершенствование условий труда являются мероприятия по охране труда. Этим вопросам уделяется все больше внимание, т.к. забота о здоровье человека стала не только делом заинтересованности сотрудников, но и элементом конкуренции работодателей в вопросе привлечения кадров.

К работе на ПК допускаются:

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

лица, прошедшие вводный инструктаж по охране труда;

лица, прошедшие обучение безопасным приемам и методам труда по программе, утвержденной руководителем предприятия, разработанной на основе Типовой программы, и, прошедшие проверку знаний, в том числе по электробезопасности;

лица с присвоением 1-й квалификационной группы по электробезопасности;

лица, прошедшие курс обучения принципам работы с вычислительной техникой, специальное обучение работе на ПК с использованием конкретного программного обеспечения;

лица, прошедшие инструктаж по охране труда на конкретном рабочем месте по данной инструкции.

Работа на персональных компьютера (ПК) относится к категории работ, согласно документа Р 2.2.2006 - 05 к 2 классу - допустимые условия труда(допустимый уровень звука, допустимый ЭМП, допустимые визуальные параметры и т. д.). В процессе труда на пользователя оказывают действие следующие неблагоприятные факторы:

Гигиенические

Эргономические

Психофизиологические.

Гигиенические неблагоприятные факторы: рентгеновское и радиочастотное излучение, статическое электричество, ионизация воздуха, неправильная организация освещенности, блесткость, яркость, контрастность изображения на экране.

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

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


Общие санитарно - гигиенические требования к воздуху рабочей зоны

Помещения с ПК должны оборудоваться системами отопления, кондиционирования воздуха или эффективной приточно-вытяжной вентиляцией. Расчет воздухообмена следует проводить по тепло избыткам от машин, людей, солнечной радиации и искусственного освещения. Нормируемые параметры микроклимата, ионного состава воздуха, содержание вредных веществ в нем должны отвечать требованиям разделов 5 Санитарных правил (Таблица 2).

Таблица 2

Уровни ионизации воздуха помещений на ПК

Уровни

Число ионов в 1 см3 воздуха


n+

n-

Минимально необходимые Оптимальные Максимально допустимые

400 1500-3000 50000

600 3000-5000 50000


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

В производственных помещениях, в которых работа на ПК является основной (диспетчерские, операторские, расчетные, кабины и посты управления, залы вычислительной техники и др.), должны обеспечиваться оптимальные параметры микроклимата:

температура воздуха 21 - 25градусов;

влажность воздуха 40 - 60%;

скорость движения воздуха 0,1 - 0,2 м/сек;

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

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

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

Требования к уровню шума и вибрации.

Шумом называют всякий неблагоприятно действующий на человека звук. С физической точки зрения звук представляет собой механические колебания упругой среды.

Слуховой орган человека воспринимает в виде слышимого звука колебания упругой среды, имеющие частоту примерно от 20 до 20000 Гц, но наиболее важный для слухового восприятия интервал от 45 до 10000 Гц.

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

На рабочих местах в помещениях для размещения шумных агрегатов вычислительных машин (АЦПУ, принтеры и т.п.) уровень шума не должен превышать 75 дБА.

При выполнении работ с ПК в производственных помещениях уровень вибрации не должен превышать допустимых значений согласно ”Санитарным нормам вибрации рабочих мест”45 дБ.

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

Шумящее оборудование (АЦПУ, принтеры и т.п.), уровни шума которого превышают нормированные, должно находиться вне помещения с ПК.

Снизить уровень шума в помещениях с ПК можно использованием звукопоглощающих материалов с максимальными коэффициентами звукопоглощения в области частот 63-8000 Гц для отделки помещений (разрешенных органами и учреждениями Госсанэпиднадзора ПМР), подтвержденных специальными акустическими расчетами.

Дополнительным звукопоглощением служат однотонные занавеси из плотной ткани, гармонирующие с окраской стен и подвешенные в складку на расстоянии 15-20 см от ограждения. Ширина занавеси должна быть в 2 раза больше ширины окна.

.4 Требования к освещенности

Помещения с ПК должны иметь естественное и искусственное освещение.

Типы освещения:

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

искусственное - освещение помещений искусственным светом с помощью электроламп;

совмещенное - освещение, при котором недостаточное естественное освещение, дополняется искусственным.

Виды естественного освещения помещений:

одностороннее - световые проемы расположены в одной из наружных стен;

двустороннее - световые проемы расположены в двух противоположных стенах;

верхнее - световые проемы расположены в верхних перекрытиях;

комбинированное - сочетание верхнего и бокового естественного освещения.

Виды искусственного освещения:

рабочее - освещение помещений, зданий, а также участков отрытых пространств, предназначенных для работы, прохода людей и движения транспорта;

дежурное - освещение в нерабочее время;

аварийное - освещение для эвакуации людей из помещений при аварийном отключении рабочего освещения;

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

Системы искусственного освещения:

Общая - освещение, при котором светильники размещаются в верхней зоне помещения равномерно или применительно к расположению оборудования;

Местная система - освещение, дополнительное к общему освещению, создаваемое светильниками, концентрирующими световой поток непосредственно на рабочих местах;

Комбинированная - освещение, при котором к общему освещению добавляется местное.

Естественное освещение должно осуществляться через светопроемы, ориентированные преимущественно на север и северо-восток и обеспечивать коэффициент естественной освещенности (КЕО) не ниже 1,2% в зонах с устойчивым снежным покровом и не ниже 1,5% на остальной территории. Искусственное освещение в помещениях эксплуатации ПК должно осуществляться системой общего равномерного освещения. В производственных помещениях, в случаях преимущественной работы с документами, допускается применение системы комбинированного освещения. Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300-500 лк. Допускается установка светильников местного освещения для подсветки документов. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк.

В качестве источников света при искусственном освещении должны применяться преимущественно люминесцентные лампы типа ЛБ. При устройстве отраженного освещения в производственных помещениях допускается применение металлогалогенных ламп мощностью до 250 Вт. Допускается применение ламп накаливания в светильниках местного освещения.

Для внутренней отделки интерьера помещений с ПК должны использоваться диффузно-отражающие материалы с коэффициентом отражения для потока - 0,7-0,8; для стен - 0,5-0,6; для пола - 0,3-0,5.

Полимерные материалы, используемые для внутренней отделки интерьера помещений с ПК, должны быть разрешены для применения органами и учреждениями Государственного санитарно-эпидемиологического надзора.

.5 Требования безопасности к излучению от дисплея

Выполнение требований эргономической безопасности означает гарантию комфортности, эффективности, безопасности и надежности работы человека с персональным компьютером (ПК). Эргономическая безопасность ПК может быть охарактеризована следующими требованиями:

к визуальным параметрам средств отображения информации индивидуального пользования (дисплеям),

к эмиссионным параметрам ПК - параметрам излучений дисплеев, системных блоков, источников питания и т.д.

Важным условием безопасности человека перед экраном является правильный выбор визуальных параметров дисплея и светотехнических условий рабочего места. В ГОСТ Р 50948-96 и ГОСТ Р 50949-96 и в Санитарных правилах и нормах (СанПиН) установлены требования к двум группам визуальных параметров:

) Яркость, освещенность, угловой размер знака и угол наблюдения.

) Неравномерность яркости, блики, мелькания, расстояние между

знаками, словами, строками, геометрические и нелинейные искажения, дрожание изображения и т.д.

Вторая группа требований обеспечения эргономической безопасности -

нормы на излучения ПК.

В настоящее время все мониторы должны соответствовать стандарту MPRII, ограничивающему излучение мониторов в диапазоне крайне низких частот (некоторые основные параметры, определенные этим и другими стандартами приведены в таблице 3).

Таблица 3

Требования к электромагнитным полям дисплея.

Наименование параметров

Допустимое Значение

Напряженность электромагнитного поля по электрической составляющей на расстоянии 50 см от поверхности видеомонитора

10 В/м

Напряженность электромагнитного поля по магнитной составляющей на расстоянии 50 см от поверхности видеомонитора

0,3 А/м

Напряженность электростатического поля не должно превышать для взрослых пользователей

20 кВ/м

Напряженность электромагнитного поля на расстоянии 50 см вокруг ВДТ по электрической составляющей должна быть не более:

 

- в диапазоне частот 5 Гц - 2 кГц;

25 В/м

- в диапазоне частот 2 - 400 кГц

2,5 В/м

Плотность магнитного потока должна быть не более:

 

- в диапазоне частот 5 Гц - 2 кГц;

250нТл

- в диапазоне частот 2 - 400 кГц

25 нТл

Поверхностный электростатический потенциал не должен превышать

500 В


.6 Требования эргономики и технической эстетики к рабочему месту

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

Основными элементами рабочего места оператора являются: рабочий стол, рабочий стул (кресло), дисплей, клавиатура; вспомогательными - пюпитр, подставка для ног.

Требования к рабочему столу

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

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

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

Высота рабочей поверхности стола при нерегулируемой высоте должна составлять 725 мм.

Размеры рабочей поверхности стола должна быть: глубина - не менее 600(800)мм, ширина - не менее 1200(1600)мм.

Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, ширенной - не менее 500 мм, глубиной на уровне колен - не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.

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

Требования к рабочему стулу (креслу)

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

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

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

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

Поверхность сиденья должна иметь ширину и глубину не менее 400 мм. Должна быть предусмотрена возможность изменения угла наклона поверхности сиденья от 15˚ вперед до 5˚ назад. Высота поверхности сиденья должна регулироваться в пределах от 400 до 550 мм.

Опорная поверхность спинки стула (кресла) должна иметь высоту (300+,-20) мм, ширину не менее 380 мм и радиус кривизны в горизонтальной плоскости 400 мм.

Угол наклона спинки в вертикальной плоскости должен регулироваться в пределах 0˚+,-30 ˚ от вертикального положения.

Расстояние спинки от переднего края сиденья должно регулироваться в пределах от 260 до 400 мм.

Подлокотники должны быть длиной не менее 250 мм, шириной - 50 - 70 мм, иметь возможность регулирования по высоте над сиденьем в пределах (230+,-30) мм и регулирования внутреннего расстояния между подлокотниками в пределах от 350 до 500 мм.

Требования дисплею

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

Дисплей на рабочем месте должен быть установлен ниже уровня глаз оператора. Угол наблюдения экрана оператором относительно горизонтальной линии взгляда не должен превышать 60˚.

Требования к конструкции дисплея, визуальным параметрам экрана и параметрам излучений - по ГОСТ Р 50948.

Требования к клавиатуре

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

Клавиатура должна иметь возможность свободного перемещения. Клавиатуру следует располагать на поверхности стола на расстоянии от 100 до 300 мм от переднего края, обращенного к оператору, или на специальной регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

.7 Требования электробезопасности

Электрические установки, к которым относится практически все оборудование ЭВМ, представляют для человека большую потенциальную опасность, так как в процессе эксплуатации или проведения профилактических работ человек может коснуться частей оборудования, находящихся под напряжением. Опасность электроустановок: токоведущие проводники, корпуса стоек ЭВМ и прочего оборудования, оказавшегося под напряжением в результате повреждения (пробоя) изоляции, не подают каких-либо сигналов, которые предупреждали бы человека об опасности.

Реакция человека на электрический ток возникает лишь при протекании последнего через тело человека.

Проходя через тело человека, электрический ток оказывает на него сложное воздействие, вызывая термическое, электролитическое, механическое и биологическое воздействие.

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

электролитическое действие тока выражается в разложении органической жидкости, крови и проявляется в изменении их физико-химического состава.

механическое воздействие тока приводит к разрыву мышечных тканей.

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

Все перечисленные воздействия могут привести к электрической травме.

Пользователь перед началом работы с электрооборудованием должен произвести:

. Осмотр электрооборудования.

. Проверку комплектности и надежности крепления деталей.

. Проверку внешним осмотром исправности кабеля (шнура).

. Проверку четкости работы выключателя.

. Использовать только штатные приспособления.

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

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

При включении компьютера пользователь обязан соблюдать следующую последовательность включения оборудования:

включить блок питания;

включить периферийные устройства (принтер, монитор, сканер);

включить системный блок (процессор).

Пользователю запрещается приступать к работе при:

обнаружении неисправности оборудования;

отсутствии защитного заземления устройств ПК.

Пользователю во время работы запрещается:

включать сильно охлажденное (принесенное с улицы в зимнее время) оборудование;

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

В аварийных ситуациях пользователь обязан:

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

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

при любых случаях сбоя в работе технического оборудования или программного обеспечения немедленно вызвать представителя инженерно-технической службы эксплуатации вычислительной техники;

.8 Разработка защитных мероприятий на рабочем месте пользователя

Организация рабочего места пользователя заключается в выполнении ряда мероприятий, обеспечивающих рациональный и безопасный трудовой процесс и эффективное использование орудий и предметов производства, что повышает производительность и способствует снижению утомляемости работающих. При размещении оборудования на рабочем месте необходимо исходить из возможностей работы человека с этим оборудованием. Оптимальное рабочее место должно быть ограничено дугами, описываемыми каждой рукой человека при вращении в локтевом суставе (радиус дуги 340 - 400 мм). Максимальное рабочее пространство при позе ”сидя” ограничивается длиной вытянутой руки (радиус дуги 645 мм).

Если аппаратура устанавливается вблизи стен, то необходимо предусмотреть проходы. Минимальное расстояние от стен должно быть около 800 - 900 мм. При компоновке пульта управления следует руководствоваться следующими требованиями - пользователю нужно создать возможность работать в удобном положении. Если затраты энергии при работе пользователя в прямой сидячей позе принять равным 1, то выполнение той же работы в положении стоя потребует в 1,6 раза больших затрат энергии, в наклонной сидячей позе - в 4 раза.

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

Перед началом работы согласно ГОСТ 12.1.009 - 78, изменение 01-86, нужно убедиться в подключении заземляющего проводника к общей шине заземления. Необходимо не реже одного раза в год производить измерение сопротивления изоляции проводки, так как неисправная изоляция может привести к утечке тока, что может явиться причиной возникновения пожара или же к поражению людей током. Изоляция кабеля сети питания 220 В должна выдерживать без пробоя действие испытательного напряжения 750 В в течение одной минуты, сопротивление изоляции кабеля должно быть не менее 500 кОм. При начале работы с электрооборудованием человек должен быть ознакомлен с инструкцией по технике безопасности.

Пользователь во время работы обязан:

выполнять только ту работу, которая ему была поручена, и по которой он был проинструктирован;

в течение всего рабочего дня содержать в порядке и чистоте рабочее место;

держать открытыми все вентиляционные отверстия устройств;

внешнее устройство "мышь" применять только при наличии специального коврика;

при необходимости прекращения работы на некоторое время корректно закрыть все активные задачи;

отключать питание только в том случае, если оператор во время перерыва в работе на компьютере вынужден находиться в непосредственной близости от видеотерминала (менее 2 метров), в противном случае питание разрешается не отключать;

выполнять санитарные нормы и правила, соблюдать режимы работы и отдыха;

соблюдать правила эксплуатации вычислительной техники в соответствии с инструкциями по эксплуатации;

при работе с текстовой информацией выбирать наиболее физиологический режим представления черных символов на белом фоне;

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

соблюдать расстояние от глаз до экрана. Положение экрана определяется:

расстоянием считывания(0,6…0,7);

углом считывания, направлением взгляда на 20˚ ниже горизонтали к центру экрана, причем экран перпендикулярен этому направлению.

Должна также предусматриваться возможность регулирования экрана:

по высоте +3 см;

по наклону от -10˚ до +20˚ относительно вертикали;

в левом и правом направлениях.

По окончании работы оператор обязан соблюдать следующую последовательность выключения вычислительной техники:

произвести закрытие всех активных задач;

выполнить парковку считывающей головки жесткого диска (если не предусмотрена автоматическая парковка головки);

убедиться, что в дисководах нет дискеты или диска;

выключить питание системного блока (процессора);

выключить питание всех периферийных устройств;

отключить блок питания.

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

.9 Требования к выполнению правил пожарной безопасности

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

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

Причины возникновения пожаров в электронной аппаратуре

По данным статистики, от короткого замыкания в электрических сетях, машинах и аппаратах происходит в среднем 43,3% пожаров, от воспламенения горючих материалов и предметов, находящихся в непосредственной близости от электропотребителей или соприкасающихся с ними (перегрев опорных поверхностей) - 33,2%, при токовых перегрузках - 12,3%; от перегрева мест соединения токоведущих частей в результате образования больших переходных сопротивлений - 4,6%; от воздействия на окружающую среду электрической дуги и электрического искрения, возникающих при разрыве цепей - 3,3%; от нагрева конструкций при переходе (выносе) на них напряжений - 3,3% [ ].

Токи короткого замыкания в современных ЭУ и РЭА могут быть от единиц до тысяч ампер и зависят от следующих факторов: мощности источников питания (чем больше мощность, тем больше величина тока К3); от величины полного сопротивления элементов цепи, включенных между источником питания и точкой К3; вида К3 (трехфазное, однофазное и т. д.), при однофазном К3 ток К3 будет минимальным; времени с момента возникновения К3 до отключения К3 аппаратами защиты.

Токи К3 обладают термическим и электродинамическим действиями и сопровождаются резким понижением напряжения в электрических сетях. Поэтому они могут перегреть токоведущие части и расплавить проводники. Перегрев проводников, электрические искры и дуги повреждают и воспламеняют изоляцию и окружающую горючую среду. Возникающие при этом большие механические усилия способны разрушить элементы электрооборудования.

Требования к пожарной безопасности:

монтаж и установка пожарной охранной сигнализации

соответственно с тепловыми и домовыми датчиками с выносом

информации на сирену и общий пункт помещения;

необходимость исправности всех выключателей и розеток;

выполнение скрытой электромонтажной проводки;

обязательное применение нормальных разъемов присоединительных шнуров;

применение углекислотных огнетушителей ОУ-8 с установкой на

видном и доступном месте.

Работник обязан:

знать схему эвакуации и место расположение огнетушителей;

знать способ обращения с огнетушителем;

не загромождать проходы посторонними предметами;

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

при обнаружении возгорания прекратить работу, оповестить окружающих сотрудников, сообщить администрации, отключить от сети электрооборудование, приступить к тушению пожара имеющимися средствами пожаротушения (Таблица 4).

В помещениях с ЭВМ наиболее вероятны пожары классов "А" и "Е", то есть горение твердых веществ, сопровождаемое тлением ("А") или самовозгорание электроустановок ("Е").

Таблица 4

Рекомендуемые нормы оснащения огнетушителями

(на 200 м2 помещения)

Класс пожара

Количество и типы огнетушителей

А

2 воздушно-пенных ОВП-10 2 порошковых ОП-5

Е

Надо: 2 углекислотных ОУ-5 (оу-8) или 4 углекислотных ОУ-2 Допустимо: 2 порошковых ОП-5 или 4 порошковых ОП-2

А и Е

2 углекислотных ОУ-5 и 2 воздушно-пенных ОВП-10

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

ЗАКЛЮЧЕНИЕ

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

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

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

Моя программа обладает «мягким» и простым интерфейсом, доступным пользователю. Написание основных блоков сведено к включению в основную форму различных процедур и функций, что позволило творчески подойти к решению задачи и упростило другим пользователям и программистам разбор и корректировку кода программы для ее изменения.

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

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

В отдельной главе я рассмотрела мероприятия по охране труда и пожарной безопасности. Я провела анализ условий труда, рассмотрела требования безопасности, эргономики и технической эстетики к рабочему месту, к уровню шума и вибрации, к освещенности и безопасности к излучению от дисплея. Особое внимание уделила технике безопасности при работе с электрооборудованием и требованиям к пожарной безопасности.

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

СПИСОК ЛИТЕРАТУРЫ

Анатолий Хомоненко, Владимир Гофман, Евгений Мещеряков, Владимир Никифоров “Наиболее полное руководство Delphi 7” Санкт-Петербург «БХВ - Петербург» 2005г.

А. Жуков «Изучаем Delphi» - СПб.: Питер, 2003.

А.Н. Боровский “Программирования в Delphi 2005”

А.Я. Архангельский “Программирование в Delphi 7”Фаронов В. В.,Турбо Паскаль 7.0., Учебное пособие. - М.:«Нолидж», 1999 г.

А.Я. Архангельский “Справочное пособие Delphi 6” Москва ЗАО «Издательство БИНОМ» 2001г.

В. Фаронов «Deiphi 6» - СПб.: Питер, 2002.

В.Э.Гофман, А.Д.Хомоненко Delphi 6

С. С. Гайсарян «Объектно-ориентированное проектирование»

М.В. Сухарев “Основы Delphi - профессиональный подход”

Н.Б.Культин Delphi 6. Программирование на Object Pascal

Справочник разработчика Delphi (Object Pascal)

Справочник разработчика Delphi (Классы и Компоненты)

СПИСОК ЛИТЕРАТУРЫ ПО ОХРАНЕ ТРУДА

Васильчук М. В. «Основы охраны труда» Киев. Просвита. 1997

ГОСТ12.4.026-77ССБТ Цвета сигнальные и знаки безопасности.

Долин П. А. «Справочник по технике безопасности», Москва, "Энергоиздат", 1982г.

Денисенко Г. Ф. «Охрана труда», Москва, 1985 г.

Лужкин И. П., «Правила техники безопасности и производственной санитарии в промышленности», Санкт-Петербург, 1995

Программа для инструктажа по охране труда для лиц эксплуатирующих

компьютерную технику, г. Тирасполь, 2004 г.

СаНПиН2.2.2.542-96 Гигиенические требования к видеодисплейным терминалам,персональным электровычислительным машинам и организации работ-М.1996.-40с.

СНиП 11-2-80 Нормы проектирования . Противопожарные нормы проектирования зданий и сооружений-М:стройиздат,1981.-16с.

ПРИЛОЖЕНИЕ

main;, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,, ExtCtrls, ToolWin, Menus, Registry, inifiles, StdCtrls, Buttons,, ImgList,printers, shellApi, Grids, AppEvnts, Excel2000,, ComOBJ, XPMan;= class(TForm): TActionList;_: TAction;_: TAction;_: TAction;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;: TPageControl;: TTabSheet;: TSplitter;: TPanel;: TListView;: TMemo;: TTabSheet;: TGroupBox;: TCheckBox;: TCheckBox;: TGroupBox;: TComboBox;: TLabel;: TStatusBar;: TCheckBox;: TTabSheet;: TPanel;: TSplitter;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolBar;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TPopupMenu;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TMenuItem;: TFontDialog;: TImageList;: TImageList;: TActionList;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TAction;: TStatusBar;: TGroupBox;: TBitBtn;: TStatusBar;: TMenuItem;: TMenuItem;: TSaveDialog;: TMenuItem;: TCheckBox;: TToolButton;: TAction;: TSaveDialog;: TLabel;: TLabel;: TLabel;: TColorDialog;: TAction;: TListView;: TGroupBox;: TLabel;: TCheckBox;: TLabel;: TCheckBox;: TCheckBox;: TCheckBox;: TCheckBox;: TLabel;: TLabel;: TLabel;: TLabel;: TCheckBox;: TCheckBox;: TTreeView;: TMemo;: TApplicationEvents;: TMenuItem;: TSplitter;: TMenuItem;: TMenuItem;: TToolBar;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TToolButton;: TPanel;: TLabel;: TEdit;: TPopupMenu;: TAction;: TAction;: TMenuItem;: TMenuItem;: TXPManifest;FormCreate(Sender: TObject);N2Click(Sender: TObject);PhonesChange(Sender: TObject; Item: TListItem;: TItemChange);edit_Execute(Sender: TObject);delete_Execute(Sender: TObject);PhonesDblClick(Sender: TObject);new_Execute(Sender: TObject);N1Click(Sender: TObject);FormActivate(Sender: TObject);GroupsChange(Sender: TObject; Item: TListItem;: TItemChange);CheckBox2Click(Sender: TObject);CheckBox3Click(Sender: TObject);FormClose(Sender: TObject; var Action: TCloseAction);ComboBox1Change(Sender: TObject);RemoveExecute(Sender: TObject);NewSubCategoryExecute(Sender: TObject);NewTextExecute(Sender: TObject);ListChange(Sender: TObject; Node: TTreeNode);FontcfgExecute(Sender: TObject);filesChange(Sender: TObject);ChgPropExecute(Sender: TObject);SaveNoteExecute(Sender: TObject);AllUpperExecute(Sender: TObject);AllLowerExecute(Sender: TObject);AllProperExecute(Sender: TObject);AllInvertExecute(Sender: TObject);CutExecute(Sender: TObject);PasteExecute(Sender: TObject);CopyExecute(Sender: TObject);filesKeyUp(Sender: TObject; var Key: Word;: TShiftState);filesMouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);ListPopupPopup(Sender: TObject);N16Click(Sender: TObject);N18Click(Sender: TObject);N37Click(Sender: TObject);filesKeyPress(Sender: TObject; var Key: Char);filesClick(Sender: TObject);filesKeyDown(Sender: TObject; var Key: Word;: TShiftState);SpeedButton1Click(Sender: TObject);PhonesKeyUp(Sender: TObject; var Key: Word;: TShiftState);FormShow(Sender: TObject);CheckBox1Click(Sender: TObject);bgcolorClick(Sender: TObject);textcolorClick(Sender: TObject);bordercolorClick(Sender: TObject);ToolButton16Click(Sender: TObject);ListDragOver(Sender, Source: TObject; X, Y: Integer;: TDragState; var Accept: Boolean);ListDragDrop(Sender, Source: TObject; X, Y: Integer);ListEndDrag(Sender, Target: TObject; X, Y: Integer);ApplicationEvents1Exception(Sender: TObject; E: Exception);N8Click(Sender: TObject);TabSheet4Show(Sender: TObject);N30Click(Sender: TObject);EditFindChange(Sender: TObject);SelAll1DrawItem(Sender: TObject; ACanvas: TCanvas;: TRect; Selected: Boolean);PhonesColumnClick(Sender: TObject; Column: TListColumn);commentExit(Sender: TObject);PopupListPopup(Sender: TObject);commentChange(Sender: TObject);ExitOnEscExecute(Sender: TObject);SetFirstExecute(Sender: TObject);FocusListExecute(Sender: TObject);SelAllExecute(Sender: TObject);PrintNoteExecute(Sender: TObject);ToHTMLExecute(Sender: TObject);ToExcelExecute(Sender: TObject);

{ Private declarations }

{ Public declarations };

////////////////////////////////////////////////////////////////////////////////

// My functions

////////////////////////////////////////////////////////////////////////////////UpdateNotes;UpdateNotesIcons;SortList;InvertCase(s:string):string;ProperCase(ss:string):string;LoadGroupPhones(const Groupname:string);LoadPhones;

////////////////////////////////////////////////////////////////////////////////: TPhoneBook;:TiniFile;:string; //рабочая деректория:boolean;:shortstring;,ToNode:TTreeNode;

_f:boolean=false;

_II:integer=-1;:integer=-2;:boolean=false;new_phone, Change, cfg, Unit2, Unit3, Unit4, Unit1;

{$R *.DFM}

////////////////////////////////////////////////////////////////////////////////

// создание формы

////////////////////////////////////////////////////////////////////////////////TPhoneBook.FormCreate(Sender: TObject);UT,AN,glist:tstringlist;,k,n,i:integer;:Tinifile;.OnChange:=nil;.OnChange:=nil;:=extractfilepath(application.ExeName);not DirectoryExists(dir+'text') thennot CreateDir(dir+'text') then beginException.Create('Cannot Create Work Dir');

showmessage('Возможно диск защищен от записи или нет соответствующих прав доступа');

application.Terminate;;:=True;(dir);:=tinifile.create(dir+'phones.pdb');

// загрузка групп телефонов:=tstringlist.create;.Clear;.Clear;fileexists(dir+'groups.pdb') then.LoadFromFile(dir+'groups.pdb')(log,'FileReadError(Groups.pdb)','FormCreate');;.AddItem('<Весь список>',nil);i:=0 to gList.Count-1 do begin.AddItem(gList[i],nil);;.Free;.ItemIndex:=0;

// загрузка списка заметок(dir+'text\notes.lst',$00);FileExists(dir+'text\notes.lst') then.LoadFromFile(dir+'text\notes.lst');//:3(Log,'FileAccessError(notes.lst)','FormCreate');;

//-------------------------------:=tinifile.Create(dir+'PhoneBook.ini');:=tstringlist.create;:=tstringlist.create;.Clear;:=GetAllNotesNames;:=list.Items.AddChild(list.Items.GetFirstNode,'*').AbsoluteIndex;

cfgini.writestring('group','*','Заметки не используемые ни в одной группе(востановленные после неудачного удаления)');

UpdateNotesIcons;k:=0 to List.Items.Count-1 don:=0 to An.Count-1 do(list.items[k].Text=AN[n]) then.add(an[n]);n:=0 to an.Count-1 do beginUT.IndexOf(an[n])=-1 then.Items.AddChild(list.Items[m],an[n]);;.Free;.Free;list.Items[m].Count<1 then list.Items[m].Delete;.Free;

//-------------------------------.loadCFG;.PageControl1.Update;;.OnChange:=GroupsChange;.OnChange:=PhonesChange;;

////////////////////////////////////////////////////////////////////////////////

// удаление группы телефонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N2Click(Sender: TObject);i:integer;:tstringlist;groups.ItemFocused.Caption<>'<Весь список>' thenmessagedlg('Вы действительно хотите удалить группу "'+groups.ItemFocused.Caption+'"',mtConfirmation,[mbNo,mbYes],0)=mrYes then begin.ItemFocused.Delete;:=tstringlist.create;.Clear;i:=1 to groups.Items.Count-1 do begin.add(groups.Items[i].Caption);;(dir+'groups.pdb',$00);.SaveToFile(dir+'groups.pdb');

//запись лога при ошибке(log,'FileWriteError(Groups.pdb)','N2Click');;.Free;;;

////////////////////////////////////////////////////////////////////////////////

// загрузка телефонов в соответствии с группой

////////////////////////////////////////////////////////////////////////////////LoadGroupPhones(Const Groupname:string);i,cur:integer;:tstringlist;.phones.OnChange:=nil;:=tstringlist.Create;phonebook do begin.Clear;.ReadSections(sec);.panels[1].text:=' число записей: '+inttostr(sec.Count);groups.ItemIndex=0 then begini:=0 to sec.Count-1 do begin.Items.Add.Caption:=Sec[i];.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n1',''));.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n2',''));.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n3',''));.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n4',''));.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n6',''));.Items[i].SubItems.Add(Ini.ReadString(Sec[i],'n5',''));;;groups.itemindex>0 then begini:=0 to sec.Count-1 do beginini.readstring(sec[i],'n7','')=GroupName then begin:=phones.Items.Add.Index;.items[cur].Caption:=sec[i];.items[cur].SubItems.Add(ini.readstring(sec[i],'n1',''));.items[cur].SubItems.Add(ini.readstring(sec[i],'n2',''));.items[cur].SubItems.Add(ini.readstring(sec[i],'n3',''));.items[cur].SubItems.Add(ini.readstring(sec[i],'n4',''));.items[cur].SubItems.Add(ini.readstring(sec[i],'n6',''));.items[cur].SubItems.Add(ini.readstring(sec[i],'n5',''));;;;(log,'FileReadError('+ini.filename+')','LoadAllPhones');;;.phones.OnChange:=PhoneBook.PhonesChange;;

////////////////////////////////////////////////////////////////////////////////

// загрузка всех телефонов

////////////////////////////////////////////////////////////////////////////////LoadPhones;i:integer;:tstringlist;.phones.OnChange:=nil;:=tstringlist.Create;phonebook do begin.Items.Clear;.ReadSections(sec);.panels[1].text:=' число записе1: '+inttostr(sec.Count);i:=0 to sec.Count-1 do begin.Items.Add;.items[i].Caption:=sec[i];.items[i].SubItems.Add(ini.readstring(sec[i],'n1',''));.items[i].SubItems.Add(ini.readstring(sec[i],'n2',''));.items[i].SubItems.Add(ini.readstring(sec[i],'n3',''));.items[i].SubItems.Add(ini.readstring(sec[i],'n4',''));.items[i].SubItems.Add(ini.readstring(sec[i],'n6',''));.items[i].SubItems.Add(ini.readstring(sec[i],'n5',''));;(log,'FileReadError('+ini.filename+')','LoadPhones');;;.phones.OnChange:=PhoneBook.PhonesChange;;

////////////////////////////////////////////////////////////////////////////////

// изменение телфонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.PhonesChange(Sender: TObject; Item: TListItem;Change: TItemChange);i:integer;.Clear;i:=0 to 100 do beginini.readstring(item.Caption,'c'+inttostr(i),'@')<>'@' then.lines.Add(ini.readstring(item.Caption,'c'+inttostr(i),''));(log,'FileReadError('+ini.filename+')','PhonesChange');;;.SelStart:=0;.Sellength:=0;.Update;:=false;;

////////////////////////////////////////////////////////////////////////////////

// редактирование телефона

////////////////////////////////////////////////////////////////////////////////TPhoneBook.edit_Execute(Sender: TObject);(phones.Focused)and(phones.selected<>nil) then begin.CreateForm(TChangePhone, ChangePhone);changePhone.showmodal=mrOk then begin(groups.Selected.Caption);;.Free;;;

////////////////////////////////////////////////////////////////////////////////

// удаление телефона

////////////////////////////////////////////////////////////////////////////////TPhoneBook.delete_Execute(Sender: TObject);attr:integer;phones.Focused thenmessagedlg('Вы действительно хотите удалить "'+phones.ItemFocused.Caption+'"'

,mtConfirmation,[mbNo,mbYes],0)=mrYes then begin:=filegetattr(ini.FileName);(ini.FileName,$00);.EraseSection(phones.ItemFocused.Caption);(ini.FileName,attr);

//LoadAllPhones(groups.Selected.Caption);.ItemFocused.Delete;(log,'FileWriteError('+ini.filename+')','delete_execute');

end;;;

////////////////////////////////////////////////////////////////////////////////

// редактирование телефона

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.PhonesDblClick(Sender: TObject);phones.ItemFocused<>nil then edit_.Execute;;

////////////////////////////////////////////////////////////////////////////////

// создание телефона

////////////////////////////////////////////////////////////////////////////////TPhoneBook.new_Execute(Sender: TObject);.CreateForm(TNewPhone, NewPhone);NewPhone.ShowModal=mrOk thengroups.itemIndex>0 then(groups.items[groups.itemIndex].Caption)(groups.items[0].Caption);

NewPhone.free;;

////////////////////////////////////////////////////////////////////////////////

// новая группа телефонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N1Click(Sender: TObject);newstr:string;:integer;:tstringlist;:=InputBox('Новая группа телефонов','Введите имя группы','');newstr<>'' then begin.Items.add.Caption:=newstr;:=tstringlist.create;.Clear;i:=1 to groups.Items.Count-1 do begin.add(groups.Items[i].Caption);;(dir+'groups.pdb',$00);.SaveToFile(dir+'groups.pdb');.Free;(log,'FileWriteError(Groups.pdb)','N1Click');;;(log,'NewGroupError','N1Click');;;

////////////////////////////////////////////////////////////////////////////////

// активация формы

////////////////////////////////////////////////////////////////////////////////TPhoneBook.FormActivate(Sender: TObject);Change(self);.Items[0].selected:=true;phones.Items.Count>0 then.Items[0].selected:=true;(groups.Selected.Caption);.Update;(phones,phones.Column[0]);.Update;.Realign;.Realign;.Realign;.Realign;.Realign;.Realign;.Realign;.Realign;

// splitter1.Align:=alBottom;not _f then begin.ItemIndex:=_II;

_f:=true;;;

////////////////////////////////////////////////////////////////////////////////

// изменение групп телефонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.GroupsChange(Sender: TObject; Item: TListItem;: TItemChange);.OnChange:=Nil;groups.Items.Count>0 then(groups.ItemIndex>=0) and (groups.ItemIndex<groups.Items.Count) then(groups.Selected.Caption);.OnChange:=PhonesChange;phones.Items.Count>0 then.Items[0].Selected:=true;;

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////TPhoneBook.CheckBox2Click(Sender: TObject);.Visible:= CheckBox2.Checked;

end;

////////////////////////////////////////////////////////////////////////////////

//видимость комментариев для контакта

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.CheckBox3Click(Sender: TObject);.Visible:= CheckBox3.Checked;.align:=alNone;.top:=splitter1.top-50;.align:=alBottom;;

////////////////////////////////////////////////////////////////////////////////

// закрытие формы

////////////////////////////////////////////////////////////////////////////////TPhoneBook.FormClose(Sender: TObject; var Action: TCloseAction);i:integer;i:=0 to list.Items[0].Count-1 do beginlist.Items[0].item[i].text='*' then list.Items[0].Item[i].Delete;;(dir+'text\notes.lst',$00);.SaveToFile(dir+'text\notes.lst');(log,'FileWriteError(notes.lst)','FormClose');

end;.SaveCFG;;

////////////////////////////////////////////////////////////////////////////////

// выбор полежения табов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ComboBox1Change(Sender: TObject);combobox1.ItemIndex of

:PageControl1.TabPosition:=tpTop;

:PageControl1.TabPosition:=tpBottom;

:PageControl1.TabPosition:=tpRight;

:PageControl1.TabPosition:=tpLeft;;;

////////////////////////////////////////////////////////////////////////////////

// удаление элимента каталога

////////////////////////////////////////////////////////////////////////////////TPhoneBook.RemoveExecute(Sender: TObject);s:string;:tinifile;:=tinifile.Create(dir+'PhoneBook.ini');list.selected<>list.Items.GetFirstNode then begin

if list.selected.ImageIndex =2 then s:='Действительно удалить заметку "'

+AnsiUpperCase(list.selected.text)+'"?'s:='Действительно удалить категорию "'+AnsiUpperCase(list.selected.text)+'"?';messagedlg(s,mtConfirmation,[mbYes,mbNo],0)=mrYes then beginlist.selected.ImageIndex =2 then begin

//deletefile(list.selected.text+'.txt')(dir+'text\'+list.selected.text+'.txt',$00);(dir+'text\'+list.selected.text+'.txt');begin(cfgini.FileName,$00);.deleteKey('Group',list.selected.text);;.Items.Delete(list.Selected);;;(log,'FileReadError('+cfgini.filename+')','RemoveExecute');;.Free;; //обновить параметры каталога

updatenotesIcons; // и отображения;

////////////////////////////////////////////////////////////////////////////////

// создание нового каталога

////////////////////////////////////////////////////////////////////////////////TPhoneBook.NewSubCategoryExecute(Sender: TObject);.CreateForm(TForm2, Form2);.showmodal;;;.free;;

////////////////////////////////////////////////////////////////////////////////

// добавление новой заметки

////////////////////////////////////////////////////////////////////////////////TPhonebook.NewTextExecute(Sender: TObject);.CreateForm(TForm3, Form3);.showmodal;.Free;;

UpdateNotes;;

////////////////////////////////////////////////////////////////////////////////

// изменение состояния списка каталога

////////////////////////////////////////////////////////////////////////////////TPhonebook.ListChange(Sender: TObject; Node: TTreeNode);

begin;;

///////////////////////////////////////////////////////////////////////////////

// конфигурация шрифта для отображения текста заметок

///////////////////////////////////////////////////////////////////////////////TPhoneBook.FontcfgExecute(Sender: TObject);fs:string;:tinifile;:=tinifile.Create(dir+'PhoneBook.ini');

try:='0000';//начальные параметры стиля

fontdialog1.Font := files.font;fontdialog1.Execute then begin

//запомним и установим выбранные параметры

filesetattr(cfgini.FileName,$00);.WriteInteger('Notes','FontSize',files.Font.size);.WriteString('Notes','FontFace',files.Font.Name);

// закодируем и сохраним стиль шрифтаfsBold in files.font.Style then fs[1]:='1';fsItalic in files.font.Style then fs[2]:='1';fsUnderline in files.font.Style then fs[3]:='1';fsStrikeOut in files.font.Style then fs[4]:='1';.WriteString('Notes','FontStyle', fs);; (log,'FileWriteError('+cfgini.FileName+')','RemoveExecute');

end;.Free;;

///////////////////////////////////////////////////////////////////////////////

// Запомним изменяющийся текст в заметке по ходу его изменения

///////////////////////////////////////////////////////////////////////////////TPhoneBook.FilesChange(Sender: TObject);

var cr_lf:integer;

//только если это заметка

if list.selected.imageindex=2 then begin(includeTrailingBackslash(dir)+'text\'+list.selected.text+'.txt',$00);.Lines.savetofile(includeTrailingBackslash(dir)+'text\'+list.selected.text+'.txt');(log,'FileWriteError('+list.selected.text+'.txt)','FilesChange');;;_lf:=files.Lines.count*2;.Panels[3].text:='Символов:'+inttostr(length(files.lines.text)-cr_lf);

end;

////////////////////////////////////////////////////////////////////////////////

// изменение имени заметки или имени и комментария группы

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ChgPropExecute(Sender: TObject);.CreateForm(TForm4, Form4);list.Selected<>list.items.GetFirstNode then form4.showmodal;

form4.free;; ;

////////////////////////////////////////////////////////////////////////////////

// обновления отображения иконок для узлов каталога

////////////////////////////////////////////////////////////////////////////////UpdateNotesIcons;i:integer;:tinifile;:=tinifile.Create(dir+'PhoneBook.ini');PhoneBook do beginI:=1 TO LIST.ITEMS.COUNT-1 DO BEGINcfgini.ValueExists('Group',List.Items[i].Text) then beginlist.items[i].count>0 then begin.Items[i].ImageIndex:=1;.Items[i].SelectedIndex:=1;begin.Items[i].ImageIndex:=3;.Items[i].SelectedIndex:=3;;begin.items[i].ImageIndex:=2;.items[i].SelectedIndex:=2;;;.Refresh;;(log,'FileReadError(PhoneBook.ini)','UpdateItemsIcons');

end;.Free;;

////////////////////////////////////////////////////////////////////////////////

// обновление параметров каталога

////////////////////////////////////////////////////////////////////////////////UpdateNotes;fll:tstringlist;//список строк заметки для загрузки,i:integer;i:=0 to phonebook.list.Items[0].Count-1 do begin(phonebook.list.Items[0].item[i].text='*')and(phonebook.list.Items[0].item[i].Count<1) then.list.Items[0].Item[i].Delete;;PhoneBook.list.selected=nil then.list.items[0].Selected:=true;.statusbar1.panels[2].text:='';.statusbar1.panels[3].text:='';

PhoneBook.files.Clear;

//применение параметров в зависимости от выбранного элимента списка

case PhoneBook.list.selected.imageindex of

0: begin //корень

//установим кооментарий и деактивизируем недоступные элименты

// покажем доступные.NewSubcategory.Enabled:=true;.newtext.enabled:=true;

// скроем недоступные.setfirst.enabled:=false;.chgprop.enabled:=false;.cut.enabled:=false;.copy.enabled:=false;.paste.enabled:=false;.Remove.enabled:=false;.files.enabled:=False;.savenote.Enabled:=false;.allUpper.enabled:=false;.allLower.enabled:=false;.allInvert.enabled:=False;.allProper.enabled:=false;.PrintNote.Enabled:=false;;

: begin //группа

//доступные элименты.chgprop.enabled:=true;.Remove.enabled:=True;.newtext.enabled:=true;.setfirst.enabled:=true;.NewSubcategory.Enabled:=true;

//недоступные элименты.cut.enabled:=false;.copy.enabled:=false;.paste.enabled:=false;.files.enabled:=False;.savenote.Enabled:=false;.allUpper.enabled:=false;.allLower.enabled:=false;.allInvert.enabled:=false;.allProper.enabled:=false;.PrintNote.Enabled:=false;;

: begin //группа

//доступные элименты.setfirst.enabled:=True;.chgprop.enabled:=true;.Remove.enabled:=True;.newtext.enabled:=true;.NewSubcategory.Enabled:=true;

//недоступные элименты.cut.enabled:=false;.copy.enabled:=false;.paste.enabled:=false;.files.enabled:=False;.savenote.Enabled:=false;.allUpper.enabled:=false;.allLower.enabled:=false;.allInvert.enabled:=false;.allProper.enabled:=false;.PrintNote.Enabled:=false;;

: begin //заметка

//недоступный элимент.NewSubcategory.Enabled:=False;.allUpper.enabled:=false;.allLower.enabled:=false;.allProper.enabled:=false;.allInvert.enabled:=false;.cut.enabled:=false;.copy.enabled:=false;

//доступные элименты управления.PrintNote.Enabled:=true;.setfirst.enabled:=True;.chgprop.enabled:=true;.Remove.enabled:=True;.newtext.enabled:=true;.files.enabled:=true;.savenote.Enabled:=true;.paste.enabled:=true;

//загрузим текст:=tstringlist.create;FileExists(dir+'text\'+PhoneBook.list.selected.Text+'.txt') then begin(dir+'text\'+PhoneBook.list.selected.Text+'.txt',$00);.LoadFromFile(dir+'text\'+PhoneBook.list.selected.Text+'.txt');Fll.SavetoFile(dir+'text\'+PhoneBook.list.selected.Text+'.txt');(log,'FileWriteError('+PhoneBook.list.selected.Text+'.txt)','UpdateNotes');;.files.Clear;.files.lines.AddStrings(fll);

//очистим времменую переменную.free;

end;;:=0;i:=0 to PhoneBook.list.Items.count-1 doPhoneBook.list.Items[i].ImageIndex=2 then inc(cntfiles);.StatusBar1.Panels[1].text:='Заметок:'+inttostr(cntfiles);

end;

////////////////////////////////////////////////////////////////////////////////

// сохранение заметки в др. файл

////////////////////////////////////////////////////////////////////////////////TPhoneBook.SaveNoteExecute(Sender: TObject);.FileName:=list.selected.Text+'.txt';sd.Execute then begin.Lines.SaveToFile(sd.FileName);(log,'FileWriteError('+sd.filename+')','SaveNoteExecute');

end;;;

////////////////////////////////////////////////////////////////////////////////

// в верхний регистр

////////////////////////////////////////////////////////////////////////////////TPhoneBook.AllUpperExecute(Sender: TObject);s,l:integer;:=files.SelStart;:=files.SelLength;l>0 then begin.SelText:=ansiuppercase(files.SelText);.SelStart:=s;.SelLength:=l;

end;;

////////////////////////////////////////////////////////////////////////////////

// в нижний регистр

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.AllLowerExecute(Sender: TObject);s,l:integer;:=files.SelStart;:=files.SelLength;l>0 then begin.SelText:=ansilowercase(files.SelText);.SelStart:=s;.SelLength:=l;

end;;

////////////////////////////////////////////////////////////////////////////////

// в правельный регистр

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.AllProperExecute(Sender: TObject);s,l:integer;:=files.SelStart;:=files.SelLength;l>0 then begin.seltext:=propercase(files.seltext);.SelStart:=s;.SelLength:=l;;;

////////////////////////////////////////////////////////////////////////////////

// инверсный регистр

////////////////////////////////////////////////////////////////////////////////TPhoneBook.AllInvertExecute(Sender: TObject);s,l:integer;:=files.SelStart;:=files.SelLength;l>0 then begin.seltext:=invertcase(files.seltext);.SelStart:=s;.SelLength:=l;;;

////////////////////////////////////////////////////////////////////////////////

// Вырезать

////////////////////////////////////////////////////////////////////////////////TPhoneBook.CutExecute(Sender: TObject);files.SelLength>0 then files.CutToClipboard;;

////////////////////////////////////////////////////////////////////////////////

// Вставить

////////////////////////////////////////////////////////////////////////////////TPhoneBook.PasteExecute(Sender: TObject);.PasteFromClipboard;;

////////////////////////////////////////////////////////////////////////////////

// Копировать

////////////////////////////////////////////////////////////////////////////////TPhoneBook.CopyExecute(Sender: TObject);files.sellength>0 then files.CopyToClipboard;

end;

////////////////////////////////////////////////////////////////////////////////

// установка активности функций и положения курсора

////////////////////////////////////////////////////////////////////////////////TPhoneBook.filesKeyUp(Sender: TObject; var Key: Word;: TShiftState);files.SelLength=0 then begin.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;begin.enabled:=true;.enabled:=true;.enabled:=true;.enabled:=True;.enabled:=True;.enabled:=True;;.Panels[2].Text:=inttostr(files.CaretPos.x)+':'+inttostr(files.CaretPos.y+1);

end;

////////////////////////////////////////////////////////////////////////////////

// установка активности функций и положения курсора

////////////////////////////////////////////////////////////////////////////////TPhoneBook.filesMouseUp(Sender: TObject; Button: TMouseButton;: TShiftState; X, Y: Integer);files.SelLength=0 then begin.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;.enabled:=false;begin.enabled:=true;.enabled:=true;.enabled:=true;.enabled:=True;.enabled:=True;.enabled:=True;;;

////////////////////////////////////////////////////////////////////////////////

// Попуп на списке заметок

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ListPopupPopup(Sender: TObject);ind:integer;:=list.Selected.absoluteIndex;;.items[ind].Selected:=true;Phonebook.list.selected.Index=0 then.SetFirst.Enabled:=false;;

////////////////////////////////////////////////////////////////////////////////

// раскрыть все

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N16Click(Sender: TObject);

begin.fullexpand;;

////////////////////////////////////////////////////////////////////////////////

// необходимо доработать

// сортировка списка

////////////////////////////////////////////////////////////////////////////////SortList;i:integer;Phonebook do begini:= 0 to list.Items.Count-1 do begin(list.items[i].ImageIndex=1) or (list.items[i].ImageIndex=3) then begin.items[i].MoveTo(list.items[i].Parent,naAddChildFirst);;i:= 0 to list.Items.Count-1 do begin(list.items[i].ImageIndex=1) then begin.items[i].MoveTo(list.items[i].Parent,naAddChildFirst)

end;;;;

////////////////////////////////////////////////////////////////////////////////

// переместить в начало группы

////////////////////////////////////////////////////////////////////////////////TPhoneBook.SetFirstExecute(Sender: TObject);.selected.MoveTo(list.selected.Parent,naAddChildFirst)

end;

////////////////////////////////////////////////////////////////////////////////

// сортировка списка (через меню)

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N18Click(Sender: TObject);

begin;;

////////////////////////////////////////////////////////////////////////////////

// перемещение фокуса по заметкам

////////////////////////////////////////////////////////////////////////////////TPhoneBook.FocusListExecute(Sender: TObject);list.Focused then beginfiles.enabled then begin.SetFocus;.SelStart:=0;;list.SetFocus;;

////////////////////////////////////////////////////////////////////////////////

// Выделить все

////////////////////////////////////////////////////////////////////////////////TPhoneBook.SelAllExecute(Sender: TObject);files.Focused then files.SelectAll;;

////////////////////////////////////////////////////////////////////////////////

// закрыть все ветки

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N37Click(Sender: TObject);.fullcollapse;.Items.GetFirstNode.Expand(false);;

////////////////////////////////////////////////////////////////////////////////

// печать заметки

////////////////////////////////////////////////////////////////////////////////TPhoneBook.PrintNoteExecute(Sender: TObject);:TPrintdialog;: Integer;: TextFile; {declares a file variable}:=Tprintdialog.Create(Phonebook);Pd.Execute then begin(PrintText); {assigns PrintText to the printer}(PrintText); {creates and opens the output file}.Canvas.Font := Files.Font; {assigns Font settings to the canvas}Line := 0 to Files.Lines.Count - 1 do(PrintText, Files.Lines[Line]);      {writes the contents of the Memo1 to the printer object}(PrintText); {Closes the printer variable}(Log,'PrintError','PrintNoteExecute');('Ошибка печати');;;;

////////////////////////////////////////////////////////////////////////////////

// правельный регистр

////////////////////////////////////////////////////////////////////////////////ProperCase(ss:string):string;s : string;: short;:=TrimLeft(ss);:=length(ss)-length(s);:=stringofchar(' ',fs)+AnsiUpperCase(copy(s,1,1))+AnsiLowerCase(copy(s,2,length(s)));;

////////////////////////////////////////////////////////////////////////////////

// инверсный регистр

////////////////////////////////////////////////////////////////////////////////invertCase(s:string):string;i : integer;,s2 : string;:='';:='';i:=1 to length(s) do beginAnsiCompareStr(AnsiUpperCase(s[i]),s[i])>0 then begin:=s[i];:=s2+AnsiUpperCase(s1);begin:=s[i];:=s2+AnsiLowerCase(s1);;

end;:=s2;;

////////////////////////////////////////////////////////////////////////////////

// Перехват нажатия кнопок в редакторе заметок

////////////////////////////////////////////////////////////////////////////////TPhoneBook.filesKeyPress(Sender: TObject; var Key: Char);, scol,n,n2,x,y,n3: integer;,ss2,s1,s2,s3: String;key=#13 then begin:=#0;:=files.selstart;:=files.CaretPos.y;:=files.CaretPos.x;:=files.lines[line];:=trimleft(s1);:=length(s1)-length(s2);:=system.copy(files.lines[line],1,x);:=system.copy(files.lines[line],x+1,length(files.lines[line])-x+1);:=trimright(s3);:=length(s3)-length(s1);:=trim(s2);.lines[line]:=s1+#13#10+stringofchar(' ',scol)+s2;.selstart:=n2+2+scol-n3;;key=chr(vk_tab) then begin:=files.Selstart;:=#0;:=files.CaretPos.y;:=files.CaretPos.x;:=system.copy(files.lines[y],1,x);:=system.copy(files.lines[y],x+1,length(files.lines[y])-x);.lines[y]:=ss1+tab+ss2;.Selstart:=n+length(tab);

end;;

////////////////////////////////////////////////////////////////////////////////

// отображение положения курсора

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.filesClick(Sender: TObject);.Panels[2].Text:=inttostr(files.CaretPos.x)+':'+inttostr(files.CaretPos.y+1);;

////////////////////////////////////////////////////////////////////////////////

// положение курсора

////////////////////////////////////////////////////////////////////////////////TPhoneBook.filesKeyDown(Sender: TObject; var Key: Word;: TShiftState);.Panels[2].Text:=inttostr(files.CaretPos.x)+':'+inttostr(files.CaretPos.y+1);;

////////////////////////////////////////////////////////////////////////////////

// Сортировка списка телефонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.SpeedButton1Click(Sender: TObject);

begin

//;

////////////////////////////////////////////////////////////////////////////////

// обработка нажатия кнопок на списке телефонов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.PhonesKeyUp(Sender: TObject; var Key: Word;: TShiftState);key of

: edit_Execute(nil);

: delete_Execute(nil);

: new_Execute(nil);;;

////////////////////////////////////////////////////////////////////////////////

// показать форму

////////////////////////////////////////////////////////////////////////////////TPhoneBook.FormShow(Sender: TObject);i:integer;phonebook.WindowState=wsMaximized then begini:=0 to Phonebook.ComponentCount-1 doPhonebook.Components[i] is TControl then

(Phonebook.Components[i] as TControl).Visible:=false;.WindowState:=wsNormal;.WindowState:=wsMaximized;i:=0 to Phonebook.ComponentCount-1 doPhonebook.Components[i] is TControl then

(Phonebook.Components[i] as TControl).Visible:=true;;.Align:=alBottom;;

////////////////////////////////////////////////////////////////////////////////

// переносить по словам

////////////////////////////////////////////////////////////////////////////////TPhoneBook.CheckBox1Click(Sender: TObject);.WordWrap:=checkbox1.Checked;files.WordWrap then.ScrollBars:=ssVertical.ScrollBars:=ssBoth;.Checked:=checkbox1.Checked;

end;

////////////////////////////////////////////////////////////////////////////////

// Установка цвета фона (экспорт)

////////////////////////////////////////////////////////////////////////////////TPhoneBook.bgcolorClick(Sender: TObject);colorD.Execute then.font.Color:=colorD.Color;

end;

////////////////////////////////////////////////////////////////////////////////

// установка цвет текста(экспорт)

////////////////////////////////////////////////////////////////////////////////TPhoneBook.textcolorClick(Sender: TObject);colorD.Execute then.font.Color:=colorD.Color;

end;

///////////////////////////////////////////////////////////////////////////////

// устантовка цвета фона(экспорт)

////////////////////////////////////////////////////////////////////////////////TPhoneBook.bordercolorClick(Sender: TObject);colorD.Execute then.font.Color:=colorD.Color;;

////////////////////////////////////////////////////////////////////////////////

// выход

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ExitOnEscExecute(Sender: TObject);checkbox5.Checked then close;;

////////////////////////////////////////////////////////////////////////////////

// подгонка ширины столбцов

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ToolButton16Click(Sender: TObject);i:integer;i:=0 to phones.Columns.Count-1 do.Column[i].width:=round(phones.Width/phones.Columns.Count)-1;;

////////////////////////////////////////////////////////////////////////////////

// перетаскивание при DnD

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ListDragOver(Sender, Source: TObject; X, Y: Integer;: TDragState; var Accept: Boolean);source is TTreeView then begin:=(Source as TTreeView).Selected;:=(sender as TTreeView).GetNodeAt(x,y);tonode<>nil then begin((tonode.ImageIndex in [0,1,3])and(node.ImageIndex<>0)and(tonode<>node)) then:=trueaccept:=false;node.ImageIndex = 1 then StatusBar1.Panels[0].Text:=node.text+' -> '+tonode.Text;node.ImageIndex = 2 then StatusBar1.Panels[0].Text:=node.text+' -> '+tonode.Text;accept:=false;accept:=false;

end;

////////////////////////////////////////////////////////////////////////////////

// Переместить элимент при DnD

////////////////////////////////////////////////////////////////////////////////

procedure TPhoneBook.ListDragDrop(Sender, Source: TObject; X, Y: Integer);s:string;.CreateForm(TMoveNode, MoveNode);node.ImageIndex of

:s:='Переместить группу "'+ansiuppercase(node.text)+'" в группу "'+ansiuppercase(tonode.Text)+'"?';

:s:='Переместить заметку "'+ansiuppercase(node.text)+'" в группу "'+ansiuppercase(tonode.Text)+'"?';;.Label1.Caption:=s;node.ImageIndex=1 then movenode.RadioGroup1.ItemIndex:=0movenode.RadioGroup1.ItemIndex:=1;checkbox8.Checked then beginmovenode.ShowModal=mrYes then beginmovenode.RadioGroup1.ItemIndex of

:node.MoveTo(ToNode,naAddChildFirst);

:node.MoveTo(ToNode,naAddChild);;;movenode.RadioGroup1.ItemIndex of

:node.MoveTo(ToNode,naAddChildFirst);

:node.MoveTo(ToNode,naAddChild);;.Free;;

////////////////////////////////////////////////////////////////////////////////

// Сброс статуса DnD

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ListEndDrag(Sender, Target: TObject; X, Y: Integer);.panels[0].Text:='';;;;

////////////////////////////////////////////////////////////////////////////////

// изменение

////////////////////////////////////////////////////////////////////////////////TPhoneBook.ApplicationEvents1Exception(Sender: TObject;: Exception);sc:string;(sender is tComponent) then sc:=(sender as tComponent).Namesc:=sender.ClassName;(log,e.ClassName,SC);(SC+' : '+#13#10+e.Message);;

////////////////////////////////////////////////////////////////////////////////

// перенос по словам

////////////////////////////////////////////////////////////////////////////////TPhoneBook.N8Click(Sender: TObject);checkbox1.checked then checkbox1.checked:=falsecheckbox1.checked:=true;Click(sender);;

////////////////////////////////////////////////////////////////////////////////

// изменение списка заметок

////////////////////////////////////////////////////////////////////////////////TPhoneBook.TabSheet4Show(Sender: TObject);(list,nil);;TPhoneBook.N30Click(Sender: TObject);lp:array[0..127] of char;:shortstring;:='mailto:'+phones.Selected.SubItems[4];(0,nil,StrPCopy(lp,s),nil,nil,0);;TPhoneBook.EditFindChange(Sender: TObject);i:integer;:ShortString;i:=0 to phones.items.count-1 do begin:=Ansiuppercase(system.Copy(phones.items[i].CAPTION,0,length(editFind.Text)));Ansiuppercase(EditFind.text)=s then begin.items[i].Selected:=true;.ItemIndex:=i;.ItemFocused:=phones.items[i];;;;phones.ItemFocused<>nil then.ItemFocused.MakeVisible(false);;TPhoneBook.SelAll1DrawItem(Sender: TObject; ACanvas: TCanvas;: TRect; Selected: Boolean);bm:tbitmap;selected then begin

// acanvas.Pen.Color:=clblack+$00101010;

// Acanvas.brush.Color:=$00986565;.Pen.Color:=clblack+$00101010;.brush.Color:=$00ffffff;.Rectangle(arect.left+1,arect.top,arect.Right,arect.top+19);(sender as tmenuitem).Default then acanvas.Font.Style:=[fsBold]acanvas.Font.Style:=[];not(sender as TMenuItem).Enabled then acanvas.Font.Color:=clGrayTextacanvas.Font.Color:=clBlack;.TextOut(arect.left+32,arect.top+3,(sender as tmenuitem).Caption);(sender as tmenuitem).Enabled then acanvas.Font.Color:=clNavy;(sender as tmenuitem).ShortCut>0 then.TextOut(arect.right-8-acanvas.TextWidth(ShortCutToText((sender as tmenuitem).ShortCut)),arect.top+3,ShortCutToText((sender as tmenuitem).ShortCut));begin.Pen.Color:=clSilver+$00221111;.brush.Color:=Acanvas.Pen.Color;.Rectangle(arect.left+24,arect.top,arect.Right,arect.top+19);(sender as tmenuitem).Default then acanvas.Font.Style:=[fsBold]acanvas.Font.Style:=[];(sender as TMenuItem).Enabled then acanvas.Font.Color:=clBlackacanvas.Font.Color:=clGrayText;.TextOut(arect.left+32,arect.top+3,(sender as tmenuitem).Caption);(sender as tmenuitem).Enabled then acanvas.Font.Color:=clNavy;(sender as tmenuitem).ShortCut>0 then.TextOut(arect.right-8-acanvas.TextWidth(ShortCutToText((sender as tmenuitem).ShortCut)),arect.top+3,ShortCutToText((sender as tmenuitem).ShortCut));.Pen.Color:=clSkyBlue;

// acanvas.Pen.Color:=$00ffddcc;.brush.Color:=acanvas.Pen.Color;.Rectangle(arect.Left,arect.Top,arect.Left+24,arect.Bottom);(sender as TMenuItem).Caption='-' then begin.Pen.Color:=clSilver;.brush.Color:=clGray;.Rectangle(26,arect.top+3,arect.left+arect.Right-2,arect.top+6);;;:=tbitmap.Create;.GetBitmap((sender as tmenuitem).ImageIndex,bm);.Transparent:=true;not (sender as TMenuItem).Enabled then.Mask(clWhite);.Draw(arect.Left+3,arect.Top+1,(bm as TGraphic));.Free;;TPhoneBook.PhonesColumnClick(Sender: TObject;: TListColumn);ind:integer;:=column.Index;ind of

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortNames, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortHPhones, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortWPhones, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortCelPhones, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortAdres, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortEmail, sorttype[ind]);;

:beginsorttype[ind]=0 then sorttype[ind]:=1sorttype[ind]:=0;.CustomSort(@SortDate, sorttype[ind]);;;:=ind;;TPhoneBook.ToHTMLExecute(Sender: TObject);i:integer;:tstringlist;,textcolor,bordercolor:string;shtml.Execute then begin:=ColorToHexRGB(phonebook.bgcolor.Color);:=ColorToHexRGB(phonebook.textcolor.Color);:=ColorToHexRGB(phonebook.bordercolor.Color);:=tstringlist.create;.add('<html>');.Add(' <head>');

f.Add(' <title>Телефонный справочник</title>');

f.Add(' </head>');.Add('<body bgcolor=#'+bgcolor+' text=#'+textcolor+'>');.Add('<font face="Verdana">');border.Checked then.Add(' <table border="1" leftmargin="2" align="center" cellpadding="0" cellspacing="0" bordercolor=#'+bordercolor+' width="98%">').Add(' <table align="center" leftmargin="2" cellpadding="0" cellspacing="0" width="98%">');.Add(' <tr>');.Add(' <td><b>Имя</td>');cb1.Checked then f.Add(' <td><b>&nbspТелефон</b></td>');cb2.Checked then f.Add(' <td><b>&nbspРабочий</b></td>');cb3.Checked then f.Add(' <td><b>&nbspСотовый</b></td>');cb4.Checked then f.Add(' <td><b>&nbspАдрес</b></td>');cb5.Checked then f.Add(' <td><b>&nbspE-mail</b></td>');.Add(' </tr>');i:=0 to Phones.items.Count-1 do begin.Add(' <tr>');length(Phones.items[i].Caption)>0 then f.Add(' <td>&nbsp'+Phones.items[i].Caption+'</td>')f.Add(' <td>&nbsp</td>');cb1.Checked thenlength(Phones.items[i].SubItems[0])>0 then f.Add(' <td>&nbsp'+Phones.items[i].SubItems[0]+'</td>')f.Add(' <td>&nbsp</td>');cb2.Checked thenlength(Phones.items[i].SubItems[1])>0 then f.Add(' <td>&nbsp'+Phones.items[i].SubItems[1]+'</td>')f.Add(' <td>&nbsp</td>');cb3.Checked thenlength(Phones.items[i].SubItems[2])>0 then f.Add(' <td>&nbsp'+Phones.items[i].SubItems[2]+'</td>')f.Add(' <td>&nbsp</td>');cb4.Checked thenlength(Phones.items[i].SubItems[3])>0 then f.Add(' <td>&nbsp'+Phones.items[i].SubItems[3]+'</td>')f.Add(' <td>&nbsp</td>');cb5.Checked thenlength(Phones.items[i].SubItems[4])>0 then f.Add(' <td>&nbsp'+Phones.items[i].SubItems[4]+'</td>')f.Add(' <td>&nbsp</td>');.Add(' </tr>');;.Add('</table>');.Add('</font>');.Add('</body>');.Add('</html>');.SaveToFile(shtml.FileName);(log,'ExportError','PBToolButton6Click');

showmessage('Ошибка Сохранения файла');;

f.Free;;;TPhoneBook.ToExcelExecute(Sender: TObject);ws,xl:variant;,maxrow:integer;,fst:integer;:=2;:=createoleobject('Excel.Application');:=0;.visible:=true;.WorkBooks.Add;:= XL.ActiveWorkBook.ActiveSheet;.Range['A1:O500'].NumberFormat:='@';.Range['A'+inttostr(fst)].Value := '№пп';.Range['B'+inttostr(fst)].Value := 'Имя';:=1;cb1.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := 'Телефон';;cb2.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := 'Рабочий телефон';;cb3.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := 'Мобильный';;cb4.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := 'Адрес';;cb5.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(fst)].Value := 'E-Mail';;i:=fst+1 to Phones.Items.Count+fst do begin:=1;.Range['a'+inttostr(i)].Value := i-(fst);//# работы.Range['b'+inttostr(i)].Value := Phones.Items[i-fst-1].Caption;cb1.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Phones.Items[i-fst-1].SubItems[0];;cb2.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Phones.Items[i-fst-1].SubItems[1];;cb3.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Phones.Items[i-fst-1].SubItems[2];;cb4.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Phones.Items[i-fst-1].SubItems[3];;cb5.Checked then begin(col);.Range[Chr(Ord('A')+col)+inttostr(i)].Value:=Phones.Items[i-fst-1].SubItems[4];

end;:=i;;

//установим сетку для таблицы

ws.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;

//внутреннее пересечение.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideVertical].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].Weight:=xlThin;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(maxrow)].Borders[xlInsideHorizontal].ColorIndex:=xlAutomatic;

//наружние границы.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].Weight:=xlMedium;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].Weight:=xlMedium;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].Weight:=xlMedium;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].LineStyle:=xlContinuous;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].Weight:=xlMedium;.Range['A'+inttostr(fst)+':'+Chr(Ord('A')+col)+inttostr(fst)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;i:=ord('A')to ORD('A')+col do begin.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].LineStyle:=xlContinuous;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].Weight:=xlMedium;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeLeft].ColorIndex:=xlAutomatic;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].LineStyle:=xlContinuous;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].Weight:=xlMedium;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeTop].ColorIndex:=xlAutomatic;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].LineStyle:=xlContinuous;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].Weight:=xlMedium;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeBottom].ColorIndex:=xlAutomatic;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].LineStyle:=xlContinuous;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].Weight:=xlMedium;.Range[Chr(i)+inttostr(fst)+':'+Chr(i)+inttostr(maxrow)].Borders[xlEdgeRight].ColorIndex:=xlAutomatic;;.range['A1:'+chr(Ord('A')+col)+'1'].merge;(Groups.ItemIndex>=0)and(Groups.ItemIndex<groups.Items.Count)then.range['A1:'+chr(Ord('A')+col)+'1'].value:='Список телефонов "'+Groups.Items[Groups.ItemIndex].Caption+'"'.range['A1:'+chr(Ord('A')+col)+'1'].value:='Список телефонов';.range['A1:'+chr(Ord('A')+col)+'1'].font.bold:=true;.range['A'+inttostr(fst)+':'+chr(Ord('A')+col)+inttostr(fst)].font.bold:=true;

//подгоним размеры.Columns['A:'+chr(Ord('A')+col)].EntireColumn.AutoFit;.ActiveWindow.SplitRow:=fst;.ActiveWindow.FreezePanes:=True;.ActiveSheet.PageSetup.Orientation:=xlLandscape;.ActiveSheet.PageSetup.PrintArea:='$A:$G';

finally

//выход из экселя

// xl.quit;

end;;TPhoneBook.commentExit(Sender: TObject);i:integer;CommentChanged then begini:=0 to 100 do.DeleteKey(phones.ItemFocused.Caption,'c'+inttostr(i));i:=0 to comment.Lines.Count-1 do.WriteString(phones.ItemFocused.Caption,'c'+inttostr(i),comment.lines[i]);;;TPhoneBook.PopupListPopup(Sender: TObject);.SetFocus;;TPhoneBook.commentChange(Sender: TObject);:=true;;.

Похожие работы на - Создание прикладных Windows–приложений

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!