Какие события обрабатывает комбинированный список в делфи. Событие и процедура обработки события

14.04.2019

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

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

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

Подслушивание

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

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

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

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

Изначально эта технология была создана для «прослушивания» сети. В действительности мы имеем дело с атакой типа MITM (man in the middle, «человек посередине») на уровне связи данных. Они могут принимать различные формы и используются для разрушения конфиденциальности и целостности сеанса связи.

Атаки MITM более сложны, чем большинство других атак: для их проведения требуется подробная информация о сети. Злоумышленник обычно подменяет идентификацию одного из сетевых ресурсов.

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

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

Анализ безопасности беспроводных сетей.

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

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

Доступ к ресурсам локальной сети;

Прослушивание, воровство (имеется ввиду непосредственно интернет-траффик) трафика;

Искажение проходящей в сети информации;

Внедрение поддельной точки доступа;

Немного теории.

1997 год – выход в свет первого стандарта IEEE 802.11. Варианты защиты доступа к сети:

1. Использовался простой пароль SSID (Server Set ID) для доступа в локальную сеть. Данный вариант не предоставляет должного уровня защиты, особенно для нынешнего уровня технологий.

2. Использование WEP (Wired Equivalent Privacy) – то есть использование цифровых ключей шифрования потоков данных с помощью данной функции. Сами ключи это всего лишь обыкновенные пароли с длиной от 5 до 13 символов ASCII, что соответствует 40 или 104-разрядному шифрованию на статическом уровне.

2001 год - внедрение нового стандарта IEEE 802.1X. Данный стандарт использует динамические 128-разрядные ключи шифрования, то есть периодически изменяющихся во времени. Основная идея заключается в том, что пользователь сети работает сеансами, по завершении которых им присылается новый ключ - время сеанса зависит от ОС (Windows XP - по умолчанию время одного сеанса равно 30 минутам).

На данный момент существуют стандарты 802.11:

802.11 - Первоначальный базовый стандарт. Поддерживает передачу данных по радиоканалу со скоростями 1 и 2 Мбит/с.

802.11a - Высокоскоростной стандарт WLAN. Поддерживает передачу данных со скоростями до 54 Мбит/с по радиоканалу в диапазоне около 5 ГГц.

I802.11b - Наиболее распространенный стандарт. Поддерживает передачу данных со скоростями до 11 Мбит/с по радиоканалу в диапазоне около 2,4 ГГц.

802.11e - Требование качества запроса, необходимое для всех радио интерфейсов IEEE WLAN

802.11f - Стандарт, описывающий порядок связи между равнозначными точками доступа.

802.11g - Устанавливает дополнительную технику модуляции для частоты 2,4 ГГц. Предназначен, для обеспечения скоростей передачи данных до 54 Мбит/с по радиоканалу в диапазоне около 2,4 ГГц.

802.11h - Стандарт, описывающий управление спектром частоты 5 ГГц для использования в Европе и Азии.

802.11i (WPA2) - Стандарт, исправляющий существующие проблемы безопасности в областях аутентификации и протоколов шифрования. Затрагивает протоколы 802.1X, TKIP и AES.

На данный момент широко используется 4 стандарта: 802.11, 802.11a, 802.11b, 802.11g.

2003 года - был внедрён стандарт WPA (Wi-Fi Protected Access), который совмещает преимущества динамического обновления ключей IEEE 802.1X с кодированием протокола интеграции временного ключа TKIP (Temporal Key Integrity Protocol), протоколом расширенной аутентификации EAP (Extensible Authentication Protocol) и технологией проверки целостности сообщений MIC (Message Integrity Check).

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

2004 год - появляется WPA2, или 802.11i, - максимально защищённый на данное время стандарт.

Технологии защиты Fi-Wi сетей.

WEP

Эта технология была разработана специально для шифрования потока передаваемых данных в рамках локальной сети. Данные шифруются ключом с разрядностью от 40 до 104 бит. Но это не целый ключ, а только его статическая составляющая. Для усиления защиты применяется так называемый вектор инициализации IV (Initialization Vector), который предназначен для рандомизации дополнительной части ключа, что обеспечивает различные вариации шифра для разных пакетов данных. Данный вектор является 24-битным. Таким образом, в результате мы получаем общее шифрование с разрядностью от 64 (40+24) до 128 (104+24) бит, что позволяет при шифровании оперировать и постоянными, и случайно выбранными символами. Но с другой стороны 24 бита это всего лишь ~16 миллионов комбинаций (2 24 степени) – то есть по истечению цикла генерации ключа начинается новый цикл. Взлом осуществляется достаточно элементарно:

1) Нахождение повтора (минимальное время, для ключа длинной 40 бит – от 10 минут).

2) Взлом остальной части (по сути - секунды)

3) Вы можете внедряться в чужую сеть.

При этом для взлома ключа имеются достаточно распространенные утилиты такие как WEPcrack.

802.1X

IEEE 802.1X - это основополагающий стандарт для беспроводных сетей. На данный момент он поддерживается ОС Windows XP и Windows Server 2003.

802.1X и 802.11 являются совместимыми стандартами. В 802.1X применяется тот же алгоритм, что и в WEP, а именно - RC4, но с некоторыми отличиями (большая «мобильность», т.е. имеется возможность подключения в сеть даже PDA-устройства) и исправлениями (взлом WEP и т. п.).

802.1X базируется на протоколе расширенной аутентификации EAP (Extensible Authentication Protocol), протоколе защиты транспортного уровня TLS (Transport Layer Security) и сервере доступа RADIUS (Remote Access Dial-in User Service).

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

Отдельно необходимо упомянуть о безопасности RADIUS: использует в своей основе протокол UDP (а поэтому относительно быстр), процесс авторизации происходит в контексте процесса аутентификации (т.е. авторизация как таковая отсутствует), реализация RADIUS-сервера ориентирована на однопроцессное обслуживание клиентов (хотя возможно и многопроцессное - вопрос до сих пор открытый), поддерживает довольно ограниченное число типов аутентификации (сleartext и CHAP), имеет среднюю степень защищенности. В RADIUS"е шифруется только cleartext-пароли, весь остальной пакет остается "открытым" (с точки зрения безопасности даже имя пользователя является очень важным параметром). А вот CHAP – это отдельный разговор. Идея в том, что бы cleartext-пароль ни в каком виде никогда не передавался бы через сеть. А именно: при аутентификации пользователя клиент посылает пользовательской машине некий Challenge (произвольная случайная последовательность символов), пользователь вводит пароль и с этим Challengе"ем пользовательская машина производит некие шифрующий действия используя введенный пароль (как правило это обыкновенное шифрование по алгоритму MD5 (RFC-1321). Получается Response. Этот Response отправляется назад клиенту, а клиент все в совокупности (Challenge и Response) отправляет на аутентификацию 3A-серверу (Authentication, Authorization, Accounting). Тот (также имея на своей стороне пользовательский пароль) производит те же самые действия с Challeng"ем и сравнивает свой Response с полученным от клиента: сходится - пользователь аутентифицирован, нет - отказ. Таким образом, cleartext-пароль знают только сам пользователь и 3А-сервер и пароль открытым текстом не "ходит" через сеть и не может быть взломан.

WPA

WPA (Wi-Fi Protected Access) - это временный стандарт (технология защищённого доступа к беспроводным сетям), который является переходным перед IEEE 802.11i. По сути, WPA совмещает в себе:

802.1X - основополагающий стандарт для беспроводных сетей;

EAP - протокол расширенной аутентификации (Extensible Authentication Protocol);

TKIP - протокол интеграции временного ключа (Temporal Key Integrity Protocol);

MIC - технология проверки целостности сообщений (Message Integrity Check).

Основные модули - TKIP и MIC. Стандарт TKIP использует автоматически подобранные 128-битные ключи, которые создаются непредсказуемым способом и общее число вариаций которых примерно 500 миллиардов. Сложная иерархическая система алгоритма подбора ключей и динамическая их замена через каждые 10 Кбайт (10 тыс. передаваемых пакетов) делают систему максимально защищённой. От внешнего проникновения и изменения информации также обороняет технология проверки целостности сообщений (Message Integrity Check). Достаточно сложный математический алгоритм позволяет сверять отправленные в одной точке и полученные в другой данные. Если замечены изменения и результат сравнения не сходится, такие данные считаются ложными и выбрасываются.

Правда, TKIP сейчас не является лучшим в реализации шифрования, из-за новой технологии Advanced Encryption Standard (AES), используемой ранее в VPN.

VPN

Технология виртуальных частных сетей VPN (Virtual Private Network) была предложена компанией Intel для обеспечения безопасного соединения клиентских систем с серверами по общедоступным интернет-каналам. VPN наверное одна из самых надежных с точки зрения шифрования и надёжности аутентификации.

Технологий шифрования в VPN применяется несколько, наиболее популярные из них описаны протоколами PPTP, L2TP и IPSec с алгоритмами шифрования DES, Triple DES, AES и MD5. IP Security (IPSec) используется примерно в 65-70% случаев. С его помощью обеспечивается практически максимальная безопасность линии связи.

Технология VPN не была ориентированна именно для Wi-Fi - она может использоваться для любого типа сетей, но защита с её помощью беспроводных сетей наиболее правильное решение.

Для VPN выпущено уже достаточно большое количество программного (ОС Windows NT/2000/XP, Sun Solaris, Linux) и аппаратного обеспечения. Для реализации VPN-защиты в рамках сети необходимо установить специальный VPN-шлюз (программный или аппаратный), в котором создаются туннели, по одному на каждого пользователя. Например, для беспроводных сетей шлюз следует установить непосредственно перед точкой доступа. А пользователям сети необходимо установить специальные клиентские программы, которые в свою очередь также работают за рамками беспроводной сети и расшифровка выносится за её пределы. Хотя всё это достаточно громоздко, но очень надёжно. Но как и все - это имеет свои недостатки, в данном случае их два:

Необходимость в достаточно емком администрировании;

Уменьшение пропускной способности канала на 30-40%.

За исключением этого – VPN, это вполне понятный выбор. Тем более в последнее время, развитие VPN оборудования происходит как раз в направлении улучшения безопасности и мобильности. Законченное решение IPsec VPN в серии Cisco VPN 5000 служит ярким примером. Тем более что в данной линейке представлена пока только единственное сегодня решение VPN на основе клиентов, которое поддерживает Windows 95/98/NT/2000, MacOS, Linux и Solaris. Кроме этого бесплатная лицензия на использование марки и распространение программного обеспечения клиента IPsec VPN поставляется со всеми продуктами VPN 5000, что тоже не маловажно.

Основные моменты защиты Fi-Wi сетей организации.

В свете всего выше изложенного можно убедиться что имеющиеся на данный момент механизмы и технологии защиты позволяют обеспечить безопасность вашей сети, при использовании Fi-Wi. Естественно если администраторы не будут полагаться только на элементарные настройки, а озаботятся тонкой настройкой. Конечно нельзя сказать, что таким образом ваша сеть превратится в неприступный бастион, но выделив достаточно серьезные средства на оборудование, время для настройки и конечно для постоянного контроля – можно обеспечить безопасность с вероятностью примерно до 95 %.

Основные моменты при организации и настройке Wi-Fi сети которыми не стоит пренебрегать:

- Выбор и установка точки доступа:

> перед приобретением внимательно ознакомьтесь с документацией и имеющейся на данный момент информации о дырах в реализации ПО для этого класса оборудования (всем известный пример дыры в IOS маршрутизаторов Cisco, позволяющая злоумышленнику получить доступ к листу конфига). Возможно будет смысл ограничиться покупкой более дешевого варианта и обновлением ОС сетевого устройства;

> изучите поддерживаемые протоколы и технологии шифрования;

> при возможности приобретайте устройства, использующие WPA2 и 802.11i, так как они для обеспечения безопасности используют новую технологию - Advanced Encryption Standard (AES). На данный момент это могут быть двухдиапазонные точеки доступа (AP) к сетям IEEE 802.11a/b/g Cisco Aironet 1130AG и 1230AG. Данные устройства поддерживают стандарт безопасности IEEE 802.11i, технологию защиты от вторжений Wi-Fi Protected Access 2 (WPA2) с использованием Advanced Encryption Standard (AES) и гарантируют емкость, отвечающую самым высоким требованиям пользователей беспроводных локальных сетей. Новые АР используют преимущества двухдиапазонных технологий IEEE 802.11a/b/g и сохраняют полную совместимость с ранними версиями устройств, работающих на IEEE 802.11b;

> подготовьте предварительно клиентские машины для совместной работы с приобретаемым оборудованием. На данный момент некоторые технологии шифрования могут не поддерживаться ОС или драйверами. Это поможет избежать лишних затрат времени при разворачивании сети;

> не устанавливать точку доступа вне брандмауэра;

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

> используйте направленные антенны, не используйте радиоканал по умолчанию.

- Настройка точки доступа:

> если точка доступа позволяет запрещать доступ к своим настройкам с помощью беспроводного подключения, то используйте эту возможность. Изначально не давайте возможность хакеру при внедрении в вашу сеть контролировать ключевые узлы по радиоканалу. Отключите вещание по радиоканалу такие протоколы как SNMP, web-интерфейс администрирования и telnet;

> обязательно(!) используйте сложный пароль для доступа к настройкам точки доступа;

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

> если оборудование позволяет запретить трансляцию в эфир идентификатора SSID – сделайте это обязательно. Но при этом у хакера всегда есть возможность получить SSID при подключении как легитимного клиент;

> политика безопасности должна запрещать беспроводным клиентам осуществлять ad-hoc соединения (такие сети позволяют двум или более станциям подключаться непосредственно друг к другу, минуя точки доступа, маршрутизирующие их трафик). Хакеры могут использовать несколько типов атак на системы, использующие ad-hoc-соединения. Первичная проблема с ad-hoc сетями - недостаток идентификации. Эти сети могут позволить хакеру провести атаки man in the middle, отказ в обслуживании (DoS), и/или скомпрометировать системы.

- Выбор настройки в зависимости от технологии:

> если есть возможность - запретите доступ для клиентов с SSID;

> если нет другой возможности - обязательно включайте хотя бы WEP, но не ниже 128bit.

> если при установке драйверов сетевых устройств предлагается на выбор три технологиями шифрования: WEP, WEP/WPA и WPA, то выбирайте WPA;

> если в настройках устройства предлагается выбор: “Shared Key“(возможен перехват WEP-ключа, который одинаков для всех клиентов) и “Open System”(возможно внедрение в сеть, если известен SSID) - выбирайте “Shared Key”. В данном случае (если вы используете WEP-аутентификацию) – наиболее желательно включить фильтрацию по МАС-адресу;

> если ваша сеть не велика – можно выбрать Pre-Shared Key (PSK).

> если есть возможность использовать 802.1X. Но при этом при настройке RADIUS-сервера желательно выбирать тип аутентификации CHAP;

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

- Пароли и ключи:

> при использовании SSID придерживайтесь требований аналогичных требованиям парольной защиты - SSID должен быть уникален (не забывайте, что SSID не шифруется и может быть легко перехвачен!);

> всегда используйте максимально длинные ключи. Не используйте ключи меньше 128 бит;

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

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

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

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

- Сетевые настройки:

> для организации разделяемых ресурсов используйте NetBEUI. Если это не противоречит концепции вашей сети - не используйте в беспроводных сетях протокол TCP/IP для организации папок и принтеров общего доступа.

> не разрешайте гостевой доступ к ресурсам общего доступа;

> старайтесь не использовать в беспроводной сети DHCP - используйте статические IP-адреса;

> ограничьте количество протоколов внутри WLAN только необходимыми.

- Общее:

> на всех клиентах беспроводной сети используйте файерволлы или при ХР хотя бы активизируйте брандмауэр;

> регулярно следите за уязвимостями, обновлениями, прошивками и драйверами ваших устройств;

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

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

> если финансы вашей организации позволяют – приобретите системы обнаружения вторжения (IDS, Intrusion Detection System), такие как:

CiscoWorks Wireless LAN Solution Engine (WLSE), в которой реализовано несколько новых функций - самовосстановление, расширенное обнаружение несанкционированного доступа, автоматизированное обследование площадки развертывания, "теплое" резервирование, отслеживание клиентов с созданием отчетов в реальном времени.
CiscoWorks WLSE - централизованное решение системного уровня для управления всей беспроводной инфраструктурой на базе продуктов Cisco Aironet. Усовершенствованные функции управления радиоканалом и устройствами, поддерживаемые CiscoWorks WLSE, упрощают текущую эксплуатацию беспроводной сети, обеспечивают беспрепятственное развертывание, повышают безопасность, гарантируют максимальную степень готовности, сокращая при этом расходы на развертывание и эксплуатацию.

Система Hitachi AirLocation использует сеть стандарта IEEE802.11b и способна работать как внутри помещений, так и вне зданий. Точность определения координат объекта, по словам разработчиков, составляет 1-3 м, что несколько точнее, чем аналогичная характеристика GPS- систем. Система состоит из сервера определения координат, управляющего сервера, комплекта из нескольких базовых станций, комплекта WLAN- оборудования и специализированного ПО. Минимальная цена комплекта - около $46,3 тыс. Система определяет местонахождение необходимого устройства и расстояние между ним и каждой точкой доступа за счет вычисления времени отклика терминала на посылаемые точками, связанными в сеть с расстоянием между узлами 100-200 м, сигналы. Для достаточно точного местоположения терминала, таким образом, достаточно всего трех точек доступа.

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

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

Форма Delphi

Формы имеют свои свойства, события и методы, при помощи которых Вы можете управлять видом и поведением формы. Форма, это обычный компонент Delphi, но в отличие от других, её нет на панели компонентов. Обычно форма создаётся при создании нового проекта (File | New Application). Вновь созданная форма будет главной формой приложения.

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

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

Рождение формы в Delphi

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ...

OnCreate Событие OnCreate возникает при создании TForm и только один раз. При создании формы (у каторой свойство Visible установлено в True), события произойдут в следующем порядке: OnCreate, OnShow, OnActivate, OnPaint. В обработчике события OnCreate можно сделать какие-либо инициализационные действия, однако, любые объекты созданные в OnCreate будут уничтожены в событии OnDestroy.

OnShow Это событие генерируется, когда форма станет видимой. OnShow вызывается сразу перед тем, как форма станет видимой. Это событие случается, если установить свойство формы Visible в True, либо при вызове методов Show или ShowModal.

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

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

Жизнь формы в Delphi

Когда форма создана и все её элементы ждут своих событий, чтобы обрабатывать их, жизнь формы продолжается до тех пор, пока кто-нибудь не нажмёт крестик в верхнем правом углу формы!

Уничтожение формы в Delphi

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

OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy

OnCloseQuery Если мы попытаемся закрыть форму при помощи метода Close либо другим доступным способом (Alt+F4 либо через системное меню), то сгенерируется событие OnCloseQuery. Таким образом, это событие можно использовать, чтобы предотвратить закрытие формы. Обычно, событие OnCloseQuery используется для того, чтобы спросить пользователя - уверен ли он (возможно в приложении остались несохранённые данные).

Procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageDlg("Really close this window?", mtConfirmation, , 0) = mrCancel then CanClose:= False; end;

Обработчик события OnCloseQuery содержит переменную CanClose, которая определяет, можно ли форме закрыться. Изначальное значение этой переменной True. Однако в обработчике OnCloseQuery можно установить возвращаемое значение CloseQuery в False, чтобы прервать выполнение метода Close.

OnClose Если OnCloseQuery вернул CanClose=True (что указывает на то, что форма должна быть закрыта), то будет будет сгенерировано событие OnClose. Событие OnClose даёт последний шанс, чтобы предотвратить закрытие формы. Обработчик OnClose имеет параметр Action со следующими четырьмя возможными значениями:

  • caNone. Форме не разрешено закрыться. Всё равно, что мы установим CanClose в False в OnCloseQuery.
  • caHide. Вместо закрытия, форма будет скрыта.
  • caFree. Форма будет закрыта, и занятые ей ресурсы будут освобождены.
  • caMinimize. Вместо закрытия, форма будет минимизирована. Это значение устанавливается поумолчанию у дочерних форм MDI.
Замечание: Когда пользователь выключает Windows, то будет вызвано OnCloseQuery, а не OnClose. Если Вы не хотите, чтобы Windows завершила свою работу, то поместите свой код в обработчик события OnCloseQuery, хотя CanClose=False не сделает, того, что сделано здесь.

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

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

Цели:

  • Обучающая: дать понятие события в ОС Windows и обработчика события в среде Delphi. Изучить основные события и возможности компонентов: Edit, Button, Label.

Оборудование:

  • персональные компьютеры с приложением Boland Delphi for Microsoft Windows;
  • компьютер учителя;
  • мультимедийный проектор;

Учебный и раздаточный материал:

  • учебное пособие;
  • электронный практикум;
  • карточки с заданиями для самостоятельной работы;

План урока:

  1. Повторение темы предыдущего урока в форме опроса.
  2. Изучение нового материала.
  3. Самостоятельная работа.
  4. Итог урока.
  5. Домашнее задание.

Ход урока

1. Повторение темы предыдущего урока в форме опроса. Тема предыдущего занятия: "Компонент. Свойства компонента".

  • что такое компонент?
  • как выбрать и разместить компоненты на форме?
  • какие общие свойства компонентов вы знаете?
  • как можно поменять свойства компонента (например, поменять размер или цвет компонента)?

2. Изучение нового материала.

Сопровождается показом презентации (Приложение1).

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

Обработчик событий

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

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

Событие - это реакция компонента на определённое воздействие.

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

В общем случае это выглядит следующим образом:

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

Среда Delphi хранит для каждого компонента имена всех его обработчиков событий и выводит их на экран в окне "Инспектор объектов" (Object Inspector) во вкладке "События" (Events).

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

  • выберите компонент, для которого необходимо обработать событие.
  • откройте вкладку "События" (Events) и два раза щелкните по правому столбцу выбранного события.

В результате этих действий Delphi автоматически сгенерирует процедуру

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

Для удаления события нужно только очистить содержимое процедуры (код между словами Begin и End), а при следующей компиляции, Delphi сам удалит ненужный код процедуры.

Событие OnClick

Самый простой способ сообщить приложению о событии - это щёлкнуть мышью на каком-либо компоненте. При щелчке по кнопке мышью в работающей программе возникает событие OnClick (по щелчку). Пока это событие не обрабатывается программой, поэтому нажатие кнопки не приведёт ни к каким последствиям. Чтобы заставить программу реагировать на нажатие кнопки, необходимо написать на языке Object Pascal фрагмент программы, который называется обработчиком события.

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

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

Слово procedure извещает компилятор о начале процедуры. За ним следует имя метода TForm1.Button1Click. Это имя составное: оно состоит из имени класса TForm1 и собственно имени метода Button1Click.

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

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

Будет вызван метод Close (закрыть) для объекта Form1 (окно программы).

Примеры программ с обработчиком события OnClick можно посмотреть в:

procedure TForm1.Button1Click(Sender: TObject);

Label1.Caption:="ул. Базарова, дом 35, кв 35";

Label2.Caption:="Проспект Программистов, корпус 3/1, кв. 275";

procedure TForm1.Button3Click(Sender: TObject);

Label3.Caption:="переулок Ковалевской, дом 27, кв 181";

procedure TForm1.Button4Click(Sender: TObject);

Label4.Caption:="ул. Беринга, дом 22, кв 209";

Фрагменты кода на языке Object Pascal приложения "Прыгающая кнопка" (Приложении 6):

procedure TForm1.Button1Click(Sender: TObject);

Button1.Visible:=False;

Button2.Visible:=True;

procedure TForm1.Button2Click(Sender: TObject);

Button2.Visible:=False;

Button3.Visible:=True;

procedure TForm1.Button7Click(Sender: TObject);

Button7.Visible:=False;

Button8.Visible:=True;

procedure TForm1.Button8Click(Sender: TObject);

Button8.Visible:=False;

Button1.Visible:=True;

Другие события

Название события Когда возникает
OnKeyPress Наступает, когда пользователь нажимает какую-либо клавишу.
OnDBClick Возникает при двойном щелчке на компоненте
OnMouseMove Возникает при перемещении курсора мыши над компонентом
OnMouseDown Возникает при нажатии на кнопку мыши
OnMouseUp Возникает при отпускании кнопки мыши
OnEnter Возникает при получении компонентом фокуса ввода
OnExit Возникает при потере компонентом фокуса ввода
OnCreate Возникает в момент создания формы. Существует только у формы

3. Самостоятельная работа.

Учащимся предлагается создать приложение с обработчиком события OnClick компонента Button.

4. Итог урока.

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

  • обработчик события - это процедура, которая выполняется при возникновении заданного события;
  • для выбора события служит вкладка "События" (Events) "Инспектора объектов" (Object Inspector);
  • научились создавать обработчик для самого популярного события OnClick.

Результаты самостоятельной работы учеников можно посмотреть:

5. Домашнее задание.

Выполнить задания из "Электронного практикума"

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

  1. В. В. Кузнецов, И.В. Абдрашитова "Основы объектно-ориентированного программирования в DELPHI", "Школьный Университет, Томск, 2008.
  2. "Delphi для учителя в примерах и задачах" часть I, "Образование и Информатика", Москва, 2006.
  3. Г.В. Галисеев "Программирование в среде Delphi 7", "Диалектика", Москва · Санкт-Петербург · Киев, 2003.
  4. http: //umnic.rikt.ru/everest/distant.

Операционная система Windows - многозадачная, т.е. несколько программ в ней могут функционировать одновременно. Когда, например, мы щёлкаем по кнопке в окне нашей программы, система Windows определяет, что произошло событие именно в нашей программе, и посылает ей сообщение об этом. Наша программа должна соответствующим образом отреагировать на него. Для этого мы, как программисты, должны написать код-обработчик этого события. Таким образом, структура программы для Windows представляет собой набор подпрограмм, каждая из которых ответственна за обработку конкретного события и вызывается только при его возникновении. Удобство Delphi состоит в том, что мы избавлены от необходимости получать сообщения от Windows сами, Delphi это делает за нас. Каждый компонент имеет впечатляющий набор событий, на которые он может реагировать. Программист сам определяет, какие события в программе требуется обрабатывать.

Изменим нашу программу так, чтобы текст на форме появлялся прямо в момент его ввода. В момент ввода у Edit1 меняется свойство Text - в нём появляется новая буква! Значит, воспользуемся событием onChange (change - изменение (англ.)), которое и происходит в этот момент. Итак:

Теперь рассмотрим событие onClick . Как вы догадываетесь, это событие возникает при щелчке мышкой на компоненте. Воспользуемся им, чтобы очищать строку ввода от уже введённых символов. Вы сами уже должны сообразить, что сделать. В обработчике нужно присвоить свойству Text значение пустой строки. Строка в Delphi образуется заключением текста в одинарные кавычки (находятся на кнопке Э ):
" Так в Delphi образуется строка"
Значит, пустая строка - это кавычки без текста: "" . Не должно быть даже пробела, иначе он окажется в строке ввода:

Edit1.Text:="";

Есть другой способ, воспользоваться специально предназначенным для этого методом компонента Edit, который так и называется Clear (очистка англ.):

Edit1.Clear;

Но подумайте о пользователе, который будет работать с вашей программой. Ему должно быть удобно. Если при вводе текста он захочет что-то исправить, и щёлкнет мышкой в том месте текста, где нужно внести изменение?! И всё сотрётся! Поэтому лучше использовать событие onEnter , которое происходит, когда вы "входите" в него и компонент получает фокус ввода, или использовать для очистки специальную кнопку и её событие onClick .
Конечно, у каждого компонента свой набор событий. Мы познакомились с тремя из них:

  • onChange
  • onClick
  • onEnter
Другие важные события, которые есть почти у каждого визуального компонента:
  • onExit - возникает, когда компонент теряет фокус ввода;
  • onDblClick - возникает при двойном щелчке мышкой по компоненту;
  • onKeyDown - когда при нажатии на кнопку на клавиатуре она оказалась в нижнем положении;
  • onKeyUp - когда при отпускании клавиатурной кнопки она оказалась в верхнем положении;
  • onKeyPress - возникает при нажатии на клавиатурную кнопку. От событий onKeyDown и onKeyUp оно отличается типом используемого параметра Key ;
  • onMouseDown - когда при нажатии кнопки мышки она оказалась в нижнем положении;
  • onMouseUp - когда при отпускании кнопки мышки она оказалась в верхнем положении;
  • onMouseMove - возникает при перемещении указателя мышки над компонентом.
В начале работы любой программы происходит очень важное событие событие нашего основного компонента - Формы, onCreate . Оно происходит перед появлением Формы на экране. Это событие используется для задания свойств тех элементов программы, которые нуждаются в настройке, например, размеры и положение Формы на экране. Если вы захотите сделать невидимую программу, можно приравнять нулю ширину Width и высоту Height Формы. На этапе проектирования сделать этого нельзя, т.к. это помешает работе, поэтому делаем это по событию onCreate:

Form1.Width:= 0;
Form1.Height:= 0;

Дополнительно нужно убрать и заголовок Формы, выбрав в Инспекторе Объектов параметр BorderStyle равным None. Теперь Форма на экране не появится. Единственным визуальным признаком останется появление её "значка" на панели задач. В дальнейшем я расскажу, как избавиться и от него.