МОСКОВСКИЙ
ГОСУДАРСТВЕННЫЙ
ИНСТИТУТ СТАЛИ
И СПЛАВОВ
(ТЕХНОЛОГИЧЕСКИЙ
УНИВЕРСИТЕТ)
НОВОТРОИЦКИЙ
ФИЛИАЛ
кафедра
экономики и
информатики
ЗАДАНИЕ
НА КУРСОВУЮ
РАБОТУ
Студент
__________________________________________________________
(Ф.И.О.,
группа )
Тема
курсовой работы
(проекта): “Разработка
приложения
“Игра – Морской
Бой”
_
Срок
сдачи курсового
проекта_________________________________________
Перечень
вопросов подлежащих
исследованию
или разработке:
а)
Актуальность
и значимость
темы.
б)
История развития
игровых программ.
в)
Обоснование
выбора используемых
компонентов
г)
Алгоритм реализации
проекта.
Руководитель:
Плясунов Д.Ю.
________________
"ИГРА
- вид непродуктивной
деятельности,
мотив которой
заключается
не в ее результатах,
а в самом процессе.
В истории
человеческого
общества
переплеталась
с магией, культовым
поведением
и др. ... Свойственна
также высшим
животным".
Советский
энциклопедический
словарь
ВВЕДЕНИЕ
Все, кто имеет
дело с компьютером,
так или иначе
сталкивались
с компьютерными
играми, и подавляющее
большинство
может сходу
назвать несколько
игр, которые
им особенно
понравились.
Те, кто уже совсем
наигрался,
почти наигрался
или еше не наигрался,
но в процессе
общения с компьютером
уже начал совмещать
игры с чем-нибудь
более полезным,
возможно, хотели
бы придумать
какие-нибудь
свои, не похожие
ни на какие
другие игры
(1).
Многое
захватывает
в таком творчестве.
И не сам процесс
игры, а разработка
игровой вселенной,
ее проектирование
и реализация.
Когда можно
слить воедино
сценарий, графику,
музыку, искусно
задуманный
и умело запрограммированный
алгоритм —
создать единый
фантастический
мир, живущий
по законам,
которые ты же
для него и придумал.
В данной
курсовой работе
речь пойдет
о создании
несложной
игровой программы
«Морской бой»,
которая и будет
являться объектом
исследования.
В первой главе
данной курсовой
работы рассматриваются
аспекты программирования
игр с использованием
визуальных
компонентов,
в пункте 1.1. приводится
аналитический
обзор игрового
программного
обеспечения,
классификация
игр. В пункте
1.2. приводится
описание компонентов,
используемых
при реализации
практической
части курсовой
работы. В пункте
1.3. показываются
возможности
использования
визуальных
компонентов.
Во второй
главе приведены
этапы разработки
программы,
такие как постановка
задачи, алгоритм
реализации
и описание
пользовательского
интерфейса.
В заключении
приведены
выводы по курсовой
работе, достоинства
и недостатки
визуальных
методов программирования.
Список
использованных
источников
содержит полный
перечень технической
литературы,
использованной
для написания
данной курсовой
работы.
Приложения
содержат блок-схемы
всех процедур
программы, и
текст самой
программы.
1. ПРОГРАММИРОВАНИЕ
ИГР С ИСПОЛЬЗОВАНИЕМ
ВИЗУАЛЬНЫХ
КОМПОНЕНТОВ
- Аналитический
обзор
В последнее
время продажи
программного
обеспечения
увеличиваются
незначительно,
в то время как
продажи игровых
программ возрастают
экспоненциально.
Игры для платформы
Windows
составляют
подавляющее
большинство.
Игровое программное
обеспечение
– это третья
по размерам
доходов отрасль
индустрии
программного
обеспечения
после текстовых
процессоров
и электронных
таблиц (1).
До недавнего
времени среда
Windows использовалась
в основном как
платформа для
создания игр,
первоначально
разработанных
для Macintosh. Это
осуществлялось
на базе пакета
QuickTime фирмы Apple. Примерами
таких игр могут
быть Mysl (Broderbund/Cyan), Wrath of the
Gods (Maxis/Luminaria) и некоторые
другие. В ряде
случаев использовался
пакет Video for Windows,
позволяющий
отображать
оцифрованное
видео. Затем
появились
библиотеки
WinG и WinToon, на базе
которых фирма
Sierra создала игру
King's Quest VII.
Это были первые
попытки использовать
Windows как платформу
для создания
игровых программ.
Преимущества
такого подхода
достаточно
очевидны
— единый
интерфейс,
наличие стандартных
драйверов для
большинства
мультимедийных
устройств и
возможность
управления
ими стандартными
способами.
Затем появилась
новая версия
— Windows
95, в состав
которой была
включена библиотека
WinG (как подсистема
GDI), и перед разработчиками
открылись более
широкие возможности.
Указать точное
число компьютерных
игр очень трудно.
Можно только
примерно оценить
число различных
наименований
игр, находящихся
на рынке в любое
время (2).
Классификация
компьютерных
игр может быть
следующая:
1. Приключенческие
игры.
Игры могут
быть великолепным
средством
рассказа истории.
Эти игры представляют
собой мультиплицированный
рассказ, в котором
можно видеть
и контролировать
основной персонаж
(а иногда и более
одного) в очень
детальном
повествовании.
Это -
компьютерные
версии обычных
повествований,
начиная от
душещипательных
рассказов до
технотриллеров,
научно-фантастических
приключений,
фантазий и
рассказов, до
предела набитых
разными обманами
и мошенничествами.
Приключенческие
игры развиваются
вокруг различных
загадок и
препятствий,
которые нужно
преодолеть
по мере развития
рассказа.
2. Фантастические
игры, в которых
требуется
играть некоторую
роль (ролевые
игры). Их
лучше всего
определить
как компьютеризованную
версию рассказа
Dungeons and Dragons («Подземелья
и драконы»), но
действие не
всегда происходит
в населенном
варварами
средневековом
мире. Часто оно
происходит
в открытом
космосе или
в каких-либо
областях будущего.
В этих играх
обычно нужно
управлять
группой персонажей,
которые становятся
по мере развития
игры сильнее
и умнее, и делать
некоторые
другие вещи.
Так же изменяются
и враги. Сами
рассказы в
играх этого
типа обычно
менее детальны,
чем в приключенческих
играх, с большим
упором на задачу
побить чудовгщ,
чем решить
загадки.
3. Имитаторы
воздушных и
космических
сражений.
Это не военные
игры, в которых
может оказаться
неограниченное
число вооружений
и врагов, эти
игры пытаются
быть точными
имитаторами
полетов и сражений
на реальных
боевых самолетах.
Эти игры предназначены
для тех, кто
хочет летать
на больших и
очень мощных
машинах. Кабины
пилотов выглядят
как настоящие,
инструменты
работают как
в настоящем
бою, оружие
является имитацией
реально существующего,
а полетные
характеристики
самолета (и
самолета врага)
соответствуют
действительным.
Имитаторы
космических
сражений выдуманы,
однако они
разработаны
с целью точно
повторить
реальные маневры
в космосе.
4. Имитаторы
наземных и
морских сражений.
Игры разработаны
для военного
оборудования
и военных машин.
Эта категория
игр включает
в себя симуляторы
настоящих
подводных
лодок, кораблей
и танков, и позволяет
игрокам испытать
реальные сценарии
сражений, и
выжить для
того, чтобы
понять, как
использовать
правильную
тактику в следующей
игре.
5. Самолеты,
поезда и автомобили.
В отличие от
этих имитаторов,
все прочие
являются имитаторами
военного типа
или имеют очень
сильный упор
на сражение.
Эти же игры не
относятся к
таким имитаторам.
Конечно, можно
проехать на
автомобиле
по береговой
дороге в Калифорнии
со скоростью,
вдвое превышающей
разрешенную,
и потанцевать
на всех четырех
колесах. Но
также можно
использовать
эти игры, чтобы
научиться
безопасно
летать среди
облаков, и
получать удовольствие
от свободы
полета. Даже
можно делать
такие вещи, как
постройка и
управление
собственной
железной дорогой.
6. Спортивные
имитаторы.
Здесь необходимо
обучать профессионалов
и управлять
ими. Эти игры
- нечто
большее, чем
простое изображение
бейсбольных
игр в картинках,
в некоторых
из них можно
даже контролировать
реальное действие.
Спортивные
имитаторы дают
возможность
вести рискованную
игру в нужное
время, доказать,
что можно выиграть
с помощью быстроты,
иметь в команде
Генри Аарона
и Теда Вильямса,
или переиграть
Томми Лазорду.
7. Аркадные
игры/игры действия.
Это классические
«игры действия»
- все зависит
от того, насколько
быстро руки
могут дергать
джойстик. Обычно
о них говорят
как о бессмысленных,
так часто и
бывает. С другой
стороны, бывают
времена, когда
появится потребность
дать отдохнуть
мозгам. Во многие
из этих игр
можно играть
с помощью клавиатуры
или мыши, и джойстики
не всегда необходимы.
В чем есть
необходимость,
так это в быстрых
рефлексах.
8. Настольные
игры, солитер
и салонные
игры. Многие
старые любимые
игры появились
в компьютерном
варианте. Больше
не нужно заниматься
поисками партнера,
чтобы поиграть
в шахматы, бэкграммон
и риск. Некоторые
из этих игр
даже научат
мошенничать
наедине с монитором,
и при этом не
придется возвращаться
домой с пустым
карманом после
неудачной ночи.
9. Имитаторы
реальности
(«игры в бога»).
Это игры, которые
позволяют
создавать
реальный мир
из ничего. Это
игры, которые
позволят создать
компьютерный
мир из набросков,
управлять
городом, страной
или даже миром.
10. Игры,
в которых делаются
деньги.
Они копируют
игровую деятельность
и учат высшим
формам азартных
предприятий:
фондовая биржа,
торговля
недвижимостью.
Они также позволят
попробовать
управлять
корпорацией.
В эти игры можно
играть для
удовольствия,
или использовать
их для того,
чтобы научиться
карабкаться
вверх по лестнице
карьеры.
11. Стратегические
и военные имитаторы.
Здесь можно
принимать
участие в великих
исторических
событиях, взять
на себя командование
немецкой армией
у Ленинграда
или армией
Наполеона
у Ватерлоо. Это
военные стратегии
прошлого,
настоящего
или будущего.
12. Игры
для детей.
Если есть домашний
компьютер, и
чтобы дети
научились его
использовать,
то эти игры
достойны
внимания. Реальность
нашей культуры
такова, что,
как только
малыши станут
координированы
настолько,
чтобы правильно
пользоваться
клавиатурой
или мышью, они
хотят сразу
приняться за
такие игры, как
Wing Commander, Populous или Eye of the
Beholder.
Однако же вокруг
существует
множество игр,
в которые дети
могут играть
просто чтобы
получить
удовольствие,
или же научиться
чему-либо.
13. Игры
«On-line».
Было бы ошибкой
считать, что
все компьютерные
игры для IBM PC приходят
к нам на дискетах
или CD-дисках,
плотно упакованных
в красивые
пакеты. Фактически,
весь обширный
мир компьютерных
игр доступен
и по телефону.
Эта категория
игр известна
как «он-лайн»
и включает в
себя разнообразные
игры, которые
имеются в больших
коммерческих
«он-лайн» сетях
и во многих
локальных сетях
типа «доска
объявлений»
(bulletin board system —
BBS). Для игр «он-лайн»,
кроме личного
компьютера,
необходимы
модем и кредитная
карточка.
14. Игры
Shareware. Будет
ошибкой предположить,
что все компьютерные
игры приходят
в красивых
упаковках.
Многие хорошие
игры приходят
вовсе без упаковок,
и стоят от
10 до
30 долларов.
Обычно можно
их опробовать
за очень низкую
плату или вовсе
бесплатно в
течение нескольких
дней и, если
захочется
получить легальную
копию, следует
послать по
почте чек компании
или лицу, которые
создали игру.
15. Классические
игры. Мир
PC-игр во
многом похож
на мир популярной
музыки и фильмов:
создается много
игр различных
наименований,
некоторые
становятся
хитами и держат
популярность
в течение некоторого
времени, другие
пропадают.
Постепенно
эти хиты становится
трудно отыскать,
и мало-помалу
они заменяются
другими лучшими
играми. Очень
мало PC-игр
живут более
2-3 лет. Из
тех, что действительно
остаются, многие
настолько
хороши, что
становятся
вечными, и они
заслуживают
того, чтобы в
них играли.
Некоторые, как
Flight Simulator или King's Quest, обновляются
время от времени,
так что их можно
рассматривать
как практически
новые игры.
Остальные
остаются неизменными,
и уровень продаж
у них таков,
что они остаются
в обращении,
но уже не рекламируются
активно их
производителями.
Это игры, которые
не бросаются
в глаза, «золотые»
игры —
классические
PC-игры.
Компьютерные
игры —
отнюдь не новое
изобретение.
Их история
началась не
с конца
1970 годов.
Начало лежит
гораздо раньше,
тогда, когда
Джон Кеннеди
уже пробыл
президентом
Соединенных
Штатов всего
несколько
месяцев (2).
На самом деле
все началось
с модели железной
дороги. Студенты
Технологического
института в
Массачусетсе
были немало
удивлены
количеством
способов, с
помощью которых
можно было
разместить
органы управления
миниатюрной
железной дорогой.
Позднее, когда
они наконец
получили возможность
работать на
больших компьютерах
института, их
работа в бинарных
вычислениях
— ведь
именно такие
вычисления
имитируются
выключателями
железной дороги
— позволили
им пройти хорошую
подготовку
в компьютерном
деле.
Стив Рассел
был одним из
членов Клуба
Моделей Железных
дорог Высокой
Технологии
в Технологическом
институте.
Будучи хорошим
программистом,
он летом
1961 года работал
в Статистической
лаборатории,
когда у него
и его друзей
появилась идея
перенести
«мыльные»
научно-фантастические
рассказы Е.Е.Смита
на компьютеры.
В 1962
году Стив разработал
программу для
PDP-1. Эта самая
машина теперь
выставлена
в компьютерном
музее Бостона
в Массачусетском
Технологическом
институте.
В «Космической
Войне», как
называлась
эта программа,
два синтезированных
компьютером
ракетных космических
корабля (один
похожий на
толстую сигару,
а другой на
длинную обтекаемую
трубу) могли
летать по экрану,
на котором
помещалось
изображение
космоса. Игроки
могли нажимать
на кнопки, чтобы
заставить
ракеты менять
направление
движения почти
так же, как позднее
в игре Asteroids владельцы
игровых машин
Atari управляли
своими кораблями.
Каждая ракета
несла на себе
31 торпеду,
и, в то время
как они летели
по экрану, игрок
мог выстрелить
точечку из носа
своей ракеты
в направлении
другой. Если
точка действительно
пересекала
очертания
другого корабля,
программа
определяла,
что торпеда
успешно поразила
другой корабль
и другой корабль
«взрывался».
Взорванный
корабль пропадал
с экрана и заменялся
нагромождением
точек, которые
изображали
его остатки.
Конечно,
общество
программистов
и взломщиков
программ не
может удовлетвориться
качеством любой
программы,
независимо
от того, насколько
она легка или
интересна.
Изменения были
неизбежны.
Один из друзей
программиста,
будучи недовольным
случайным
образом построенной
картой звездного
неба, которую
Рассел первоначально
поместил в
игру, взял звездный
атлас и ухитрился
запрограммировать
нашу собственную
галактику,
вплоть до звезд
пятой величины.
Другой добавил
гравитацию
в игру, а третий
ввел возможность
побега в гиперпространство,
при этом, чтобы
показать место,
где корабль
покинул звездную
систему, на
экране оставался
след ускорения.
Даже Рассел
сделал некоторые
изменения.
Зная, что у
настоящих
торпед вероятность
поражения цели
не 100%,
а меньше, он
решил придать
звездным торпедам
возможность
ошибки, и добавить
случайный
элемент в траектории
ракет и время
взрыва. Его
друзья терпеть
не могли новую
версию, поскольку
они хотели бы
иметь в игре
ту же степень
уверенности,
которая существовала
в программировании.
Рассел вернул
программу к
прежней версии
и, не успели
оглянуться,
как «Космические
войны» оккупировали
компьютеры
колледжей
по всей стране.
«Космические
войны» стали
настолько
популярны к
середине
шестидесятых,
что Нолан Бушнелл,
создатель
Atari, очень привязался
к игре во время
учебы в университете
штата Юты. К
1970 году Бушнелл
построил свою
собственную
машину, использовав
185 встроенных
цепей для
подсоединения
к телевизору
и для выполнения
одной-единственной
функции. Эта
функция была
игрой «Компьютерный
Космос», вариант
«Космических
Войн», в котором
ракета сражалась
с летающими
тарелками
вместо другого
корабля.
«Космические
Войны» были
не единственным
предшественником
коммерческих
компьютерных
игр, появившихся
на больших
компьютерах
в колледжах.
Какой-то неизвестный
автор начал
играть в игру
Star Trek («Звездный
путь») в шестидесятых
годах. Никто
не знает, кто
первым создал
такую игру —
он или она, вероятно,
подали бы судебный
иск, если бы
автор игры был
точно определен
— но эта
игра также
появилась на
колледжских
компьютерах
по всей стране
к 1969
году.
Игра «Звездный
путь» сама по
себе была не
очень изощренной.
В игре были
линии наподобие
решеток, которые
позволяли
звездным
кораблям
путешествовать
от одной точки
к другой, игра
использовала
символы для
идентификации
кораблей,
предоставляла
численную
информацию
в процентах,
и позволяла
летать быстрее,
чем скорость
света. К середине
70-х годов почти
на каждой домашней
компьютерной
системе была
доступна та
или иная форма
этой игры.
Существовала
версия этой
же игры для IBM
под названием
Star Fleet («Звездный
Флот»).
Наконец, стоит
упомянуть
пожалуй наиболее
важную игру,
Adventure («Приключения»).
В игре использовались
двухсловные
команды, имя
ее разработчика
Вилл Краудер.
Это была первая
приключенческая
компьютерная
игра.
Кроме того,
в конце 70-х была
создана игра
по имени Zork, которая
стала доступна
для пользователей
домашних компьютеров
в 1981
году. Эту игру
до сих пор можно
купить. Игра
Zork основывается
на игре Adventure (2).
- Описание
компонентов,
используемых
при реализации
практической
части курсовой
работы
В практической
части данной
курсовой работы
используются
следующие
визуальные
и невизуальные
компоненты
(3, 4, 5) среды программирования
Borland
Delphi
6.0.
1.2.1. Компонент
TMainMenu
T
MainMenu
позволяет
поместить
главное меню
в программу.
При помещении
TMainMenu на форму это
выглядит, как
просто иконка.
Иконки данного
типа называют
невидимым
(невизуальным)
компонентом,
поскольку они
невидимы во
время выполнения
программы.
Создание меню
включает три
шага:
1) помещение
TMainMenu на форму,
2) вызов Дизайнера
Меню через
свойство Items в
Инспекторе
Объектов,
3) определение
пунктов меню
в Дизайнере
Меню.
Этот компонент
доступен из
модуля MENUS,
и находится
на странице
Палитры компонентов
Standard
Этот компонент
представляет
главное меню
формы и наследует
все методы и
свойства TMenu.
Особенность
его в том, что
в нем реализован
сложный механизм
объединения
меню. Это необходимо
по следующим
причинам:
Если в приложении
имеется несколько
форм со своими
меню, то для
упрощения
работы целесообразно
соединить их
в одно и управлять
меню из главной
формы.
Объединение
меню нужно при
работе с интерфейсом
MDI
и его подокнами.
Механизм
объединения
меню используется
серверами OLE,
запускаемыми
по месту нахождения
объекта OLE.
Загружаясь,
сервер дописывает
осуществляемые
им операции
к меню другого
приложения.
Для того чтобы
реализовать
объединение
меню, у тех форм,
меню которых
будут присоединены
к главному,
необходимо
установить
в True
свойство: (Рb)
property
AutoMerge:
Boolean.
При этом у
главного меню
оно должно
оставаться
равным False,
иначе главное
меню будет
вообще невидимым.
Объединение
будет происходить
автоматически
при активизации
новых форм или
серверов OLE.
Кроме автоматического
режима, объединение
меню можно
выполнить при
вызове метода:
procedure
Merge(Menu:
TMainMenu).
Присоединяемое
меню при необходимости
может быть
легко отсоединено
вызовом метода:
procedure
Unmerge(Menu:
TMainMenu).
При установленном
в True
свойстве AutoMerge
ссылка на
присоединенное
меню будет
сохраняться
в специальном
поле компонента
и отсоединяться
в нужных случаях
автоматически
(например, при
закрытии формы,
которой оно
принадлежит).
Объединение
меню происходит
по специальным
правилам, в
основе которых
лежит использование
группового
индекса (свойства
Group
Index)
каждого объекта
TMenuItem.
У пунктов
меню одного
уровня, в частности
всех подменю
верхнего уровня
в главном меню,
свойство GroupIndex
является неубывающим,
т. е. у последующего
пункта групповой
индекс больше
либо равен
индексу предыдущего.
Это требование
отслеживается
как на этапе
разработки,
так и на этапе
исполнения.
Например, пусть
пункты меню
имеют индексы
0, 3, 4, 5, 6. Если включить
пункт меню с
индексом 5 между
пунктами с
индексами 0 и
3, то 3 и 4 будут
изменены на
5. А вот изменить
большее значение
Х на меньшее
Y,
если впереди
есть пункты
с индексом,
большим Y,
невозможно.
Если в этом
примере попытаться
изменить индекс
6 на 4, то это приведет
к возникновению
исключительной
ситуации EMenuError.
Для обычных
форм объединение
происходит
только на верхнем
уровне в главном
меню во время
их активизации.
В объединенном
меню все подменю
будут располагаться
по возрастанию
номера группового
индекса, при
этом:
если в присоединяемом
меню есть пункты
с таким же групповым
индексом, что
и в исходном,
то все их
множество
заменяет все
множество
таких пунктов
в исходном
меню;
все пункты
присоединяемого
меню, групповой
индекс которых
не встречается
в исходном,
добавляются
к нему и вставляются
на соответствующие
их индексу
места.
К окнам интерфейса
MDI
все сказанное
относится
только при
запуске приложения.
Если в формах
приложения
со стилем fsMDIChild
есть свои главные
меню, то в этот
момент они
автоматически
сольются с
главным меню
формы fsMDIForm
независимо
от состояния
AutoMerge.
На уровне
работы с серверами
OLE
предусмотрены
дополнительные
возможности
по объединению
меню. Если в
компонент
TOLEContainer
загружен объект
OLE,
то в конец подменю
Edit
обычно добавляется
подменю, из
которого можно
вызвать функции
открытия и
редактирования
этого объекта.
После активизации
сервера он
может не только
вставлять свои
подменю в главное,
но и добавлять
новые пункты
к уже существующим
подменю.
Три метода
TMainMenu
используются
для работы с
меню OLE:
procedure PopulateOle2Menu(SharedMenu: HMenu; Groups:
array of Integer; var Widths: array of Longint);
procedure GetOle2AcceleratorTable(var hAccel : THandle;
var numAccels: Word; Groups: array of Integer) ;
procedure Set01e2MenuHandle(Handle:
HMENU);
1.2.2. Компонент
TLabel
T
Label
служит
для отображения
текста на экране.
Можно изменить
шрифт и цвет
метки, если
дважды щелкнуть
на свойство
Font в Инспекторе
Объектов. Видно,
что это легко
сделать и во
время выполнения
программы,
написав всего
одну строчку
кода.
Этот компонент
доступен из
модуля STDCTRLS,
и находится
на странице
Палитры компонентов
Standard.
Компонент
представляет
собой статический
текст. С помощью
этого компонента
на рабочей
поверхности
формы можно
отобразить
информацию,
сделать пояснения
и показать
названия других
компонентов.
Но он имеет и
другую важную
функцию — если
в составе текста
TLabel
есть символы-акселераторы,
информация
об их нажатии
может передаваться
от TLabel
другому элементу
управления.
Свойства
компонента
приведены в
табл.1:
Таблица 1
Свойства
компонента
TLabel
Свойство
|
Описание
|
(Pb) property Caption: TCaption;
TCaption = string[255]; |
Содержит
строку с выводимым
текстом. |
(Pb) property Alignment:
TAlignment; |
Устанавливает
правило выравнивания
текста — по
правому, левому
краю или по
центру клиентской
области. |
(Pb) property AutoSize: Boolean; |
В
случае True
происходит
автоматическое
приведение
размеров
компонента
к размерам
текста и высоте
шрифта. |
|
|
|
|
|
Продолжение
табл.1 |
(Pb)
property
ShowAccelChar: Boolean; |
Показывает,
отображается
ли в TLabel
акселератор
(символ, перед
которым стоит
знак амперсанда
— '&'). Если оно
равно False,
амперсанд
никак не
интерпретируется.
В случае True
акселератор
выделяется
в строке подчеркиванием
и нажатие клавиш
<Аlt>+<символ>
приводит к
передаче фокуса
окну FocusControl
(т.к. TLabel
сам не является
оконным компонентом).
|
(Pb) property FocusControl:
TWinControl; |
Определяет
оконный компонент,
которому
посылаются
сообщения о
вводе акселератора. |
(Pb)
property
Transparent: Boolean; |
Прозрачность
фона компонента.
Если свойство
установлено
в True,
то при перерисовке
элемента
управления
не происходит
закрашивание
клиентской
области. В
противном
случае — происходит
закрашивание
кистью bsSolid
и цветом Color. |
(Pb)
property WordMrap: Boolean; |
Определяет
возможность
разрыва слов
в случае, если
длина выводимого
текста превышает
ширину компонента. |
1.2.3. Компонент
TPanel
T
Panel
- управляющий
элемент, похожий
на TGroupBox, используется
в декоративных
целях. Чтобы
использовать
TPanel, просто поместите
его на форму
и затем положите
другие компоненты
на него. Теперь
при перемещении
TPanel будут передвигаться
и эти компоненты.
TPanel используется
также для создания
панели инструментов
и окна статуса.
Этот компонент
доступен из
модуля EXTCTRLS,
и находится
на странице
Палитры компонентов
Standard.
Этот компонент
— является
несущей конструкцией
для размещения
других элементов
управления.
В отличие от
простой рамки
(TBevel)
панель сама
является оконным
элементом
управления
и родителем
для всех размещенных
на ней компонентов.
Часто ее используют
для создания
панелей инструментов,
строк состояния
и т. п.
За внешнее
оформление
панели отвечают
свойства:
(Pb) property Bevel Inner: TPanelBevel;
(Рb)
property BevelOuter: TPanelBevel;
TPanelBevel = (bvNone, bvLowered, bvRaised) ;
(Pb) property BevelWidth: TBevelWidth;
TBevelWidth = 1..Maxint;
(Pb) property BorderWidth: TBorderWidth;
TBorderWidth = 0..Maxint ;
На границах
панели размещаются
две специальные
окаймляющие
рамки (bevels):
Bevellnner
и BevelOuter.
При помощи
комбинации
белого и серого
цветов они
имитируют
трехмерность
— приподнятость
(bvRaised) или утоп-ленность
(bvLowered). Обе рамки
имеют ширину
BevelWidth.
Наружная —
BevelOuter
— расположена
прямо по периметру
панели, вторая
— Bevellnner
— внутри на
расстоянии
BorderWidth
от нее. Обе могут
быть невидимыми
(bvNone),
приподнятыми
или утопленными.
Комбинируя
сочетания
bvLowered/bvRaised,
можно создать
вокруг панели
"ров" или "вал".
Иллюзию
трехмерности
может подчеркнуть
также стиль
обрамления
компонента:
(Pb) property BorderStyle: TBorderStyle;
TBorderStyle = bsNone .. bsSingle;
Значение
bsSingle
означает, что
панель будет
окаймлена
черной линией
единичной
толщины (по
периметру,
снаружи от
обеих рамок).
Выравнивание
текста заголовка
панели определяется
при помощи
свойства:
(Pb) property Alignment:
TAlignment;
Свойство
(Pb)
property
Locked:
boolean;
предназначено
для определения
способа взаимодействия
панели с размещенными
на ней объектами
OLE.
Если оно равно
True,
последние при
активизации
сервера OLE
"по месту'" не
могут заместить
панель.
В обработчике
события: (Pb)
property
OnResize:
TNotifyEvent;
может быть
предусмотрена
реакция пользователя
на изменение
размеров панели.
1.2.4. Компонент
TBitBtn
T
BitBtn
- кнопка
вроде TButton, однако
на ней можно
разместить
картинку (glyph).
TBitBtn имеет несколько
предопределенных
типов (bkClose, bkOK и др),
при выборе
которых кнопка
принимает
соответствующий
вид. Кроме того,
нажатие кнопки
на модальном
окне (Form2.ShowModal) приводит
к закрытию окна
с соответствующим
модальным
результатом
(Form2.ModalResult).
Этот компонент
доступен из
модуля BUTTONS,
и находится
на странице
Палитры компонентов
Additional.
Эта кнопка,
будучи потомком
TButton,
может нести
на себе пиктограмму
и имеет рад
дополнительных
удобств в
использовании.
В Delphi
уже определены
стандартные
виды кнопок:
(Pb)
property
Kind:
TBitBtnKind;
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes,
bkNo, bkClose, bkAbort, bkRetry, bklgnore, bkAll);
Для каждой
из них определены:
передаваемый
форме результат
(ModalResult):
BitBtnModalResults:
array[TBitBtnKind] of TModalResult =
(0, mrOk, mrCancel, 0, mrYes, mrNo, 0, mrAbort, mrRetry,
mrlgnore, inrAll);
а также название
и картинки для
разных состояний.
Достаточно
установить
значение свойства
Kind,
и кнопка сразу
приобретет
нужный вид.
Более того,
некоторые из
видов кнопок
при нажатии
сразу совершают
определенные
действия. Так,
bkHelp осуществляет
инициализацию
системы помощи
со своим (или
ближайшим
ненулевым
родительским)
контекстом.
Кнопка вида
bkClose
закрывает
форму, которой
она принадлежит,
вызывая ее
метод Close.
Кнопка будет
отнесена к виду
bkCustom, если она:
назначена
Default,
но при этом не
принадлежит
множеству
[bkOk,
bkYes];
назначена
Cancel,
но не принадлежит
множеству
[bkCancel,
bkNo];
у нее изменена
пиктограмма;
модальный
результат не
соответствует
определенному
для этого вида
кнопок.
За внешний
вид этой кнопки
отвечают свойства,
рассмотренные
ниже. Стиль
изображения
кнопок в зависимости
от операционной
системы задается
свойством:
(Pb) property Style: TButtonStyle;
TButtonStyle = (bsAutoDetect, bsWin31, bsNew);
Стиль bsNew
соответствует
Windows
95. В любом случае
корректным
будет применение
стиля bsAutoDetect, который
сам распознает
версию системы.
Пиктограмма
кнопки, которая
вместе с текстом
видна на ее
поверхности,
определяется
свойством:
(Pb)
property
Glyph:
TBitmap;
Для создания
эффекта нажатия
картинка должна
немного изменяться
в зависимости
от состояния;
кроме того,
отдельная
картинка нужна
для неактивного
состояния
(когда нажатие
не воспринимается).
В свойстве
Glyph
должна быть
одна битовая
карта, но она
может содержать
картинки сразу
для нескольких
состояний
кнопки (максимум
четыре). Они
интерпретируются
как соответствующие
нормальному
(отжатому),
запрещенному
(неактивному),
нажатому и
утопленному
состояниям
(последнее
применяется
только для
кнопок TSpeedButton).
Для этого картинки
должны быть
расположены
подряд вплотную
по горизонтали.
Например, при
размере картинок
16х16 нужна объединенная
битовая карта
64х16. Если каждая
из картинок
квадратная
и ширина общей
картинки нацело
делится на
высоту, то при
присвоении
ее свойству
Glyph
система сможет
распознать
их и скорректировать
количество,
определяемое
свойством:
(Pb) property NumGlyphs: TNumGlyphs ;
TNumGlyphs = 1..4;
При отрисовке
в зависимости
от состояния
из большой
битовой карты
будет использована
нужная часть.
Три свойства
отвечают за
расположение
текста и картинки
на поверхности
кнопки:
(Pb)
property
Layout:
TButtonLayout;
Способ выравнивания
пиктограммы
относительно
краев кнопки.
Может быть
одним из четырех:
TButtonLayout = (biGlyphLeft, biGlyphRight,
biGlyphTop, biGlyphBottom);
Расстояние
от соответствующего
способу выравнивания
края кнопки
до пиктограммы
описывается
свойством:
(Pb)
property
Margin:
Integer;
Промежуток
между пиктограммой
и текстом равен:
(Pb)
property
Spacing:
Integer;
Если свойства
Margin,
Spacing
или оба не заданы
(по умолчанию
равны -1), значения
этих промежутков
выбираются
системой. Кнопка
также имеет
метод Click
и свойства
Caption,
ModalResult,
Default
и Cancel.
Статус Default
получают кнопки
видов bkOk,
bkYes,
a
Cancel
— кнопки видов
bkCancel, bkNo.
1.2.5. Компонент
TSpeedButton
T
SpeedButton
- кнопка
для создания
панели быстрого
доступа к командам
(SpeedBar). Пример - SpeedBar
слева от Палитры
Компонент в
среде Delphi. Обычно
на данную кнопку
помещается
только картинка
(glyph).
Этот компонент
доступен из
модуля BUTTONS,
и находится
на странице
Палитры компонентов
Additional.
Эта кнопка
с изображением
может иметь
как зависимую,
так и независимую
фиксацию. Она
удобна для
применения
в составе панелей
инструментов.
Поведение
этих кнопок
во многом
определяется
свойством:
(Pb)
property
Grouplndex:
Integer;
Если Grouplndex
равен нулю, у
кнопки вообще
нет фиксации
в нажатом состоянии
и она не зависит
от остальных
кнопок, принадлежащих
тому же родительскому
элементу. Кнопки
в группе (то
есть с одинаковым
ненулевым
значением
Grouplndex)
имеют зависимую
фиксацию. Она
также зависит
от свойства:
(Pb)
property
AllowAlIUp:
Boolean;
которое
описывает
поведение
кнопок в группе,
а именно: могут
ли все кнопки
одновременно
быть отжаты.
Если AllowAlIUp равно
False
(по умолчанию),
нажатую кнопку
в группе можно
отпустить, лишь
нажав другую.
Если AllowAlIUp равно
True,
кнопку можно
отпустить
повторным
нажатием.
Если необходимо
фиксировать
одну кнопку
TSpeedButton,
ей нужно присвоить
уникальный
групповой
индекс, а AllowAlIUp
установить
в True.
Поскольку
в группе не
могут одновременно
находиться
кнопки с различным
значением этого
свойства, при
нажатии кнопки
и изменении
Grouplndex
свойство
AllowAlIUp "рассылается"
(присваивается)
остальным
кнопкам с тем
же значением
Grouplndex.
В группе не
может быть
нажато более
одной кнопки.
Определяет,
нажата ли кнопка,
свойство:
(Pb)
property
Down:
Boolean;
Это свойство
может изменяться
как системой,
так и программистом.
Например, если
при запуске
программы
необходимо,
чтобы одна из
кнопок уже была
нажатой, ее
свойство Down
устанавливают
в True.
Текст кнопки
определяет
свойство Caption.
Компонент имеет
те же правила
и свойства
рисования
картинки, что
и TBitBtn.
Они описываются
свойствами
Glyph,
NumGlyphs,
Layout,
Margin
и Spacing.
Для имитации
щелчка предусмотрен
метод Click.
Двойной щелчок
для TSpeedButton
возможен только
на нажатой
кнопке — иначе
он интерпретируется
как обычный.
Описывается
свойством:
(Pb) property OnDblClick;
1.2.6. Компонент
TImage
TImage - отображает
графическое
изображение
на форме. Воспринимает
форматы BMP, ICO, WMF. Если
картинку подключить
во время дизайна
программы, то
она прикомпилируется
к EXE файлу.
Этот компонент
доступен из
модуля EXTCTRLS,
|