    Интегрированная среда Delphi 

    Марк Причард 

    ГЛАВА 2 

    Главное окно, или центр управления 

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

    Средства разработки интерфейса 

    Рассматриваются два средства - инспектор объектов (Object Inspector) и 
проектировщик форм (Form Designer), позволяющие разработать удобный для 
пользователя графический интерфейс. 

    Редактор кода (Code Editor) 

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

    Управление проектами с помощью IDE 

    Рассмотрен менеджер проектов (Project Manager), предназначенный для 
оказания помощи в организации вашего проекта. 

    Хранилище объектов (Object Repository) 

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

    Нa заре визуального программирования создание приложения было довольно 
хлопотной задачей. Чтобы разработать интерфейс, вам приходилось устанавливать 
каждое свойство каждого экранного элемента в отдельности, от правого нижнего 
до левого верхнего угла каждой кнопки. Вы покорно выполняли эту рутинную 
работу, вводя в редактор строку за строкой, сохраняя текст, запуская затем 
компилятор, который включал сотни ваших строк кода в выполняемую программу. 
После компиляции, взглянув на полученный результат, вы сразу же старались его 
улучшить и, наметив пару изменений, снова запускали редактор, чтобы 
модифицировать соответствующие строки кода. Добившись, наконец, 
удовлетворительной работы интерфейса, вы приступали к программированию логики 
приложения, а затем с помощью другого средства занимались отладкой. Этот 
процесс не только требовал огромных затрат времени и сил, но и был невероятно 
скучен, однообразен и способствовал появлению ошибок. 
    Теперь же благодаря интегрированной среде разработки Delphi (Integrated 
Development Environment, или IDE) ваша участь будет значительно облегчена. Под 
этим шикарным названием скрывается целая коллекция окон, меню и программ, 
которые позволяют проектировать интерфейс, связывать код с каждым экранным 
элементом и полностью отлаживать приложение внутри Delphi. 
    Для тех, кто никогда не работал с Delphi, эта глава окажется весьма 
полезной, поскольку в ней описаны все основные компоненты IDE. С ее помощью вы 
пройдете через мириады инструментов, экранов и опций. Тем, кому не терпится 
скорее ударить по клавиатуре, тоже стоит потратить время на знакомство с 
мощным интерфейсом Delphi хотя бы для того, чтобы выяснить, где набирать 
исходный текст! 

24


    Использование главного окна 

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

    Рис. 2.1. Главное окно, или центр управления IDE 

    Главное окно разделено на три следующих раздела. 

    •   Главное меню (Menubar). Строки меню являются самыми распространенными 
элементами приложений Windows. Главное меню Delphi позволяет получить доступ 
ко всем функциям, предоставляемым IDE, таким как инсталляция компонентов, 
настройка среды и опций компилятора, активизация процесса отладки и открытие 
информационных окон либо создание форм и модулей. Главное меню располагается 
непосредственно под строкой заголовка главного окна. 
    •   Панель инструментов (Speedbar). Панель инструментов предоставляет 
быстрый доступ к большинству команд главного меню. Вы можете "перекроить" 
среду в соответствии с вашим индивидуальным стилем разработки. Панель 
инструментов расположена в левой части главного окна, под главным меню. 
    •   Палитра компонентов (Component Palette). Это просто фантастический 
ресурс, положенный в основу быстрой разработки приложений! Он предоставляет 
возможность доступа к центральному хранилищу для таких компонентов, как строки 
ввода и метки, которые можно помещать на различные формы, создавая тем самым 
интерфейс приложения. 

    Главное меню 

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

    На заметку 

    Главное меню Delphi ведет себя довольно странно для приложения с 
различными типами окон — оно не изменяется при изменении активного окна. Такое 
поведение обусловлено тем, что Delphi является приложением с однодокументным 
интерфейсом (Single Document Interface, или SDI), в отличие многодокументного 
интерфейса (Multiple Document Interface, или MDI). Более подробно различия 
между приложениями SDI и MDI описаны в главе 8, "Создание приложений". 

    I Совет I

    Для получения контекстной справки по любому элементу главного меню 
достаточно с помощью клавиш управления курсором выделить интересующий вас 
элемент и нажать <F1>. 

    I Совет I 

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

    Меню File 

    Кроме стандартных команд Open, Save и Close, меню File предоставляет 
команды для создания нового приложения, формы или модуля данных. 
    После щелчка на команде New откроется диалоговое окно New Items, которое 
позволит создать объект любого допустимого типа (приложение MDI, подзадачу или 
компонент). В этом диалоговом окне отображаются объекты, сохраняемые в 
хранилище объектов (Object Repository), которое подробно рассматривается в 
разделе данной главы "Использование хранилища объектов". 

    Глава 2. Интегрированная среда Delphi 25 

    I Совет I 
    Чтобы открыть недавно используемый файл или проект, воспользуйтесь 
командой Reopen. 

    I Совет 1      
    Для компиляции файла или библиотеки динамической компоновки Delphi 
использует в качестве имени файла имя проекта

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

    Чтобы добавить еще один модуль в раздел uses открытой в данный момент 
формы, используйте команду Use Unit. По этой команде откроется диалоговое окно 
Use Unit, показанное на рис. 2.2. А зачем это делать, вы узнаете из главы 3, 
"Object Pascal: основные понятия", точнее, из раздела, посвященного модулям 
Delphi и команде uses. 

    Команды управления проектами 

    Две команды управления проектами (Add to Project и Remove from Project) 
подробно описаны в разделе этой главы "Использование менеджера проектов". 

    Печать форм и модулей 

    Команда Print используется для печати активной формы или модуля, причем 
для установки перечисленных ниже параметров печати вы можете воспользоваться 
диалоговым окном Print Selection, показанным на рис. 2.3. 
    •   Header/page number (заголовок/номер страницы). При выборе данного 
параметра вверху каждой страницы Delphi отобразит имя модуля, текущую дату и 
номер страницы. 
    •   Line numbers (номера строк). Этот параметр придает печатному документу 
вид программы, написанной на языке Basic старого образца. Номера строк 
печатаются в левой части страницы. 
    •   Syntax print (синтаксис). Благодаря этой опции можно эмулировать 
цветовое выделение синтаксиса, отображаемое в редакторе кода при использовании 
полужирного шрифта, подчеркивания или курсива. 
    •   Use color (использование цвета). Данный параметр использует цвет для 
печати синтаксических выделений. Если у вас черно-белый принтер, эта опция недоступна. 
    •   Wrap lines (перенос строк). При выборе этой опции выполняется перенос 
длинных строк, создаваемых в редакторе кода, на несколько печатных строк, что 
гораздо полезнее усечения длинных строк, которое действует по умолчанию. 
    •   Left margin (левое поле). Этот параметр позволяет задавать число 
символов, используемых в качестве левого поля. Такая система измерения 
используется при печати моноширинным шрифтом, а пустое поле вам пригодится для 
внесения собственных комментариев по поводу тех или иных фрагментов кода. 

    Выход из Delphi 

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

    Меню Edit 

    Меню Edit содержит такие распространенные команды редактирования, как 
Redo, Cut и Paste. Они применяются как к компонентам в режиме работы 
проектировщика форм, так и к тексту в редакторе кода. 
    По команде Select All выбираются все компоненты формы, которая отображена 
в текущий момент в проектировщике форм. 
    Если вы не любите пользоваться правой кнопкой мыши, у вас есть 
альтернатива: меню Edit дублирует функции панели инструментов проектировщика форм. 
    При выборе команды Object вы сможете отредактировать объект, содержащийся 
в компоненте контейнера OLE. Предыдущие версии Delphi такой возможности не 
предоставляли. Если вас интересует программирование OLE, прочтите главы 18, 
"Работа с OLE, серверы документов и элементы управления ActiveX", и 20, 
"Автоматизация OLE". 

    Меню Search 

    В меню Search содержатся распространенные команды обработки текста, 
например Find, Replace и Go to line "x". которые работают только в редакторе 
кода. Если вы сделаете попытку перехитрить Delphi и применить их к активной 
форме, в тот же миг будет активизирован редактор кода. 

    26 Часть I. Основные положения 


    Поиск кода, из-за которого произошла ошибка времени выполнения 

    Если при работе вашего приложения отображается ошибка времени выполнения 
(вместе с соответствующим адресом), то для обнаружения источника этой ошибки в 
исходном коде можете воспользоваться командой Find Error. От вас требуется 
только ввести адрес последней ошибки времени выполнения в диалоговом окне Find 
Error (рис. 2.4), щелкнуть на кнопке ОК — и Delphi перенесет вас прямо к 
строке, из-за которой случилась эта неприятность. 

    Рис. 2.2. С помощью диалогового окна Use Unit в раздел uses можно добавить 
еще один модуль 

    Рис. 2.3. Диалоговое окно Print Selection позволяет задать параметры печати 

    Рис. 2.4. Диалоговое окно Find Error поможет найти фрагмент исходного кода 
программы, вызвавший ошибку 

    Команда Browse Symbol и окно Object Browser 

    Окно Object Browser (броузер объектов) — великолепное средство, с помощью 
которого можно просматривать свойства, методы и переменные для каждого 
объекта, используемого вашим приложением. Броузер объектов упорядочивает эту 
информацию в соответствии с иерархией объектов, как показано на рис. 2.5. 

    Рис. 2.5. В окне броузера объектов (Object Browser) отображаются все 
объекты приложения 

    Несмотря на то что броузер объектов очень полезен, с ним довольно хлопотно 
общаться и для поиска искомого объекта требуется время. Вот когда вам 
пригодится команда Browse Symbol. Она активизирует именно ту часть броузера 
объектов, которая отвечает за отображение указанного вами идентификатора или 
объекта. Чтобы использовать эту команду, выполните следующие действия. 
    1.   Откройте меню Search и щелкните на команде Browse Symbol. В 
результате будет отображено диалоговое окно Browse Symbol, показанное на рис. 2.6. 
    2.   Введите имя идентификатора или объекта, который вы хотите найти, 
например TForm. 
    3.   Щелкните на кнопке ОК, и на экране появится окно броузера объектов, 
настроенное на отображение объекта TForm (рис. 2.7). 

    Глава 2. Интегрированная среда Delphi 27 


    Меню View 

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

    I Совет I
    Чтобы закрыть окно с помощью клавиатуры, нажмите <Alt+F4>. 

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

    ПРЕДОСТЕРЕЖЕНИЕ 

    Будьте осторожны при внесении изменений в исходную информацию о проекте, 
поскольку именно из этого источника Delphi узнает о том, какие формы она может 
автоматически создавать и из каких файлов в действительности состоит ваш проект! 

    •   Window List. При выборе этой команды отображается диалоговое окно 
Window List (рис. 2.8), которое облегчает перемещение по IDE. He стоит 
пренебрегать такой помощью, особенно если вас занесло неизвестно куда и вы в 
растерянности начинаете заглядывать во все доступные окна подряд. 

    Рис. 2.6. Диалоговое окно Browse Symbol позволяет наложить фильтр на 
перечень отображаемых объектов в окне Object Browser 

    Рис. 2.8. Диалоговое окно Window List поможет быстро сориентироваться в IDE 

    Рис. 2.7. Броузер объектов (Object Browser) после выполнения фильтрации по 
объекту Tform 

    •   Toggle Form/Unit. Данная команда выполняет переключение между 
редактором кода и проектировщиком форм. Вам частенько придется прибегать к 
услугам этой команды, поэтому для ее выбора стоит воспользоваться ее 
клавиатурным эквивалентом. 
    •   New Edit Window. Если вы можете одновременно писать несколько разделов 
программы, Delphi с готовностью отобразит для вас столько окон редактора кода, 
сколько потребуется. Но, как показывает опыт, с помощью этой команды вы будете 
колдовать над разделом реализации, посматривая объявления в разделе интерфейса 
(рис. 2.9). 
    •   Speedbar и Component Palette. Эти команды переключают фокус видимости 
на соответствующие разделы главного окна. Они пригодятся в том случае, если у 
вас есть много компонентов, и вас не беспокоит утрата панели инструментов либо 
если вы хотите использовать все кнопки панели инструментов и можете спокойно 
обойтись без команды Component List. 

    28 Часть I. Основные положения 


    Рис. 2.9. Delphi позволяет открыть сразу несколько окон редактора кода 

    На заметку 

    Можете добавить в меню View команду CPU Window, после выбора которой 
открывается окно Disassembly View с такими "секретными" данными, как 
содержимое регистров процессора и дамп программы, представленный в 
шестнадцатеричном коде: Для этого отредактируйте системный реестр (Registry). 
Под ключом (элементом иерархической структуры базы данных реестра ) 
HKEY_CURRENTUSER\SOFTWARE\BORLAND\DELPHI3\DEBUGGING добавьте строковое 
значение EnableCPU. Чтобы включить упомянутый выше пункт в меню View, 
достаточно установить это строковое значение равным 1; значение, равное 0, 
приведет к его запрещению. 

    Меню Project 

    Под "крышей" меню Project объединились команды, связанные с работой над 
проектом. Команды Add to Project и Remove from Project описаны в разделе 
"Использование менеджера проектов", а команда Add to Repository — в разделе 
"Использование хранилища объектов". 

    Команды компиляции 

    Меню Project содержит также несколько команд компиляции, на которых стоит остановиться. 
    •   Compile. При выборе этой команды компилируются файлы, которые 
изменялись со времени последней компиляции. После этого выполняется компоновка 
скомпилированных файлов, в результате чего формируется выполняемая программа 
или библиотека динамической компоновки (DLL). 
    •   Build All. Эта команда аналогична предыдущей, но ее использование 
приводит к компиляции всех файлов проекта. 
    •   Syntax Check. По этой команде компилируются файлы, которые 
модифицировались со времени последнего построения. Компоновка в данном случае 
не выполняется. Обычно данная команда используется для выявления в тексте 
программы синтаксических ошибок. 
    •   Information. Команда отображает в одноименном диалоговом окне (рис. 
2.10) интересную информацию о конечном результате построения, включая 
количество скомпилированных строк и размер стека. 

    Рис. 2.10. Диалоговое окно Information с информацией о результатах компиляции 


    Параметры проекта 

    Команда Options, которая позволяет настроить параметры, влияющие на 
создание проекта, более подробно рассмотрена в главе 6, "Использование 
компонентов Delphi". 

    Глава 2. Интегрированная среда Delphi 29 

    Меню Run 

    По команде Run (<F9>) программа начинает выполняться. Если при выборе этой 
команды окажется, что некоторые модули вашего проекта модифицировались со 
времени последнего построения, автоматически запускаемые компилятор и 
компоновщик построят выполняемый файл программы заново. 

    I Совет 1 
    Сохранение исходных файлов и макета (desktop layout) может выполняться 
автоматически до начала команды Run. Для этого нужно настроить опции Autosave, 
которые рассматриваются в разделе данной главы "Среда разработки приложения". 

    По команде Parameters отображается диалоговое окно Run Parameters, с 
помощью которого можно сделать следующее. 
    •   Определить главное приложение. Тестирование библиотек DLL в предыдущих 
версиях Delphi напоминало кошмарный сон, поскольку нельзя было использовать 
интегрированный отладчик. В поле Host application можете указать программу, 
которая запускает вашу библиотеку DLL, позволив интегрированному отладчику 
внедриться в вашу программу и превратить отладку в пустячное дело. Более 
подробно процесс отладки DLL описан в главе 27, "Тестирование и отладка". 
    •   Задать параметры командной строки. Параметры командной строки все еще 
находят применение в приложениях Windows. Если пользователь выполняет файл, 
тип которого зарегистрирован для вашего приложения, Windows запустит вашу 
программу для обработки этого файла. Windows может передать вам имя файла 
двумя путями: через DDE или в качестве аргумента ко мандной строки. Если вам 
не нужны проблемы, связанные с DDE, что вполне понятно, то использование 
аргументов командной строки — это самый простой выход из положения. 
Комбинированный элемент управления Run Parameters позволит настроить командную 
строку, передаваемую вашей программе в процессе выполнения через IDE, что 
полезно для тестирования. 
    Остальные команды меню, такие как Step Over, Add Watch и Evaluate/Modify, 
рассматриваются в главе 27. "Тестирование и отладка". 

    Меню Component 

    Меню Component позволяет создавать новые компоненты (New), инсталлировать 
их в библиотеке компонентов (Install) и добавлять шаблон компонента в палитру 
компонентов (Add Component Template). За подробностями об этих командах 
обращайтесь к главе 16, "Создание компонентов". 
    Команда Create Component Template дает возможность создавать 
пользовательский набор компонентов, таких как TLabel и TButton, а затем 
добавлять его в библиотеку компонентов. Эта команда позволяет построить 
коллекцию повторно используемых компонентных наборов, сокращая тем самым время 
разработки интерфейса. Более подробную информацию о шаблонах компонентов вы 
найдете в главе 16. 
    С помощью команды Configure Palette можно настроить палитру компонентов. 
Эта команда описана в разделе "Палитра компонентов". 

    Меню Database 

    При выборе команды Explore запускается проводник баз данных (Database 
Explorer), описанный в главе 12, "Использование генератора отчетов". 
    По команде SQL Monitor выполняется приложение SQL Monitor. Язык 
структурированных запросов (SQL) и приложение мониторинга подробно описаны в 
главе 10, "Работа с базами данных SQL". 
    Эксперт форм (вызываемый с помощью команды Form Expert) проведет вас через 
процесс создания форм управления данными. Компоненты и формы работы с данными 
детально рассматриваются в главе 9, "Работа с локальными базами данных". 

    Меню Tools 

    При выборе команды Options выводится диалоговое окно Environment Options, 
подробно описываемое в разделе "Среда разработки приложения". 
    По команде Repository отображается окно хранилища объектов, которое 
рассматривается в разделе "Использование хранилища объектов". 
    Команда Tools позволяет настроить список программ, отображаемых в меню 
Tools. Чтобы добавить новый элемент в свой список инструментов, выполните 
следующие действия. 

    30 Часть I. Основные положения 

    1.   Откройте меню Tools и щелкните на пункте Configure Tools. В 
результате откроется диалоговое окно Tool Options, показанное на рис. 2.11. 
    2.   Щелкните на кнопке Add, в результате чего появится диалоговое окно 
Tool Properties, показанное на рис. 2.12. 

    Рис. 2.11. С помощью диалогового окна Tool Options можно создать 
комбинации клавиш для часто используемых инструментов 

    Рис. 2.12. Используйте диалоговое окно Tool Properties для настройки 
компонентов меню Tools 

    3.   Введите в строку ввода Title текст, который должен быть отображен в 
меню Tools в качестве одного из его пунктов (например, Notepad). 
    4.   Введите в строку ввода Program команду, которая выполнится при выборе 
этого пункта (например, NOTEPAD.EXE). 
    5.   Щелкните на кнопке ОК. Диалоговое окно Tool Properties закроется, а в 
диалоговом окне Tool Options появится новый инструмент. 
    6.   Щелкните на кнопке Close. Диалоговое окно Tool Options закроется, и в 
меню Tools появится новый пункт. 

    Панель инструментов 

    Панель инструментов — это группа кнопок, которые обеспечивают 
альтернативные средства доступа к функциям, содержащимся в главном меню 
Delphi. Вы можете настроить панель инструментов по своему вкусу. Если вам 
часто приходится печатать файлы, открывая меню File и щелкая на пункте Print, 
можете добавить эту команду в панель инструментов, выполнив следующие действия. 
    1. Щелкните правой кнопкой мыши в любом месте панели инструментов, и 
появится контекстное меню. 
    2.   Выберите из контекстного меню пункт Properties. В результате появится 
диалоговое окно Speedbar Editor, показанное на рис. 2.13. 
    3.   В списке категорий (Categories) выберите пункт File. При этом в 
списке доступных команд (Commands) будут перечислены команды, касающиеся 
работы с файлами. 
    4.   Прокрутите список до появления в окне списка пункта Print active form 
or unit (печать активной формы или модуля). 
    5.   Перетащите команду Print active form or unit из диалогового окна 
Speedbar Editor и опустите ее на панель инструментов. В результате на панели 
инструментов будет красоваться пиктограмма, представляющая команду Print. 
    6.   Щелкните на кнопке Close, чтобы закрыть диалоговое окно Speedbar Editor. 

    Рис. 2.13. Для настройки панели инструментов используйте диалоговое окно 
Speedbar Editor 

    Глава 2. Интегрированная среда Delphi 31 

    На заметку
    Вы можете сделать следующее. 
    •    Изменить размер панели инструментов, перетащив разделительную линию между 
панелью инструментов и палитрой компонентов. 
    •    Переместить кнопки на панели инструментов, перетащив их на новое 
место (если открыто окно Speedbar Editor). 
    •    Удалить кнопки с панели инструментов, перетащив их за пределы панели 
инструментов при условии открытого окна Speedbar Editor. 
    •    Восстановить исходное положение кнопок на панели инструментов, 
щелкнув на кнопке Reset в диалоговом окне Speedbar Editor. 

    Палитра компонентов 

    В палитре компонентов отображаются компоненты, содержащиеся в библиотеке 
компонентов. Библиотека компонентов — это коллекция компонентов, которую можно 
использовать при построении интерфейса, а также логической части приложения. 
    Понятие компонент является отличительной чертой среды Delphi. Представьте 
себе компонент как набор функций, искусно связанных в один "многоразовый" 
пакет. В качестве примеров компонентов можно привести кнопку, на которой 
пользователь может щелкнуть для переключения функции, или строку ввода, 
предназначенную для ввода некоторого текста. 
    Объектно-ориентированная природа Delphi наделяет понятие компонент еще 
одним значением. Поскольку каждый компонент по своей сути является объектом, 
любой компонент можно использовать в качестве основы для создания нового 
компонента, демонстрирующего расширенное или модифицированное поведение. Этот 
новый компонент можно затем внести в библиотеку компонентов и использовать во 
многих приложениях. Использованию компонентов в приложении посвящены главы 6, 
"Использование компонентов Delphi", и 7, "Общие элементы управления Win32". 
Разработка компонентов описана в главе 16, "Создание компонентов". 
    Палитра компонентов группирует компоненты в соответствии с выполняемыми 
функциями и отображает каждую из этих групп на отдельной странице. 

    На заметку 
    Доступ к любому компоненту в библиотеке компонентов можно получить с 
помощью команды View=>Component List. В результате ее выполнения откроется 
диалоговое окно Components (рис. 2.14), позволяющее выбрать любой компонент и 
поместить его в активную форму. 

    Стандартная конфигурация страниц палитры компонентов выглядит следующим 
образом. 
    •   Standard. Страница Standard содержит базовые компоненты, которые 
существовали еще в ранних версиях Windows (например, TMainMenu, TButton, 
TList-Box и TLabel). 
    •   Additional. На этой странице "прописаны" более специализированные 
компоненты, введенные позднее. К ним относятся TSpeedButton, TStringGrid и 
TImage. Компонент TSplitter заслуживает особого внимания— благодаря ему можно 
разработать интерфейс с элементами значительных размеров, такими как главное 
окно Delphi с панелью инструментов и палитрой компонентов. Компонент TChart — 
еще один новичок на этой странице. С его помощью вы сможете легко включить в 
свои Delphi-программы профессионально оформленные диаграммы. 

    Рис. 2.14. Диалоговое окно Components предоставляет доступ ко всем 
компонентам библиотеки компонентов 

    •   System. На странице System хранятся компоненты, которые для 
обеспечения своих функций опираются на операционную систему. Примером может 
служить компонент TTimer, который выполняет свою функцию за определенный 
программистом интервал времени. Определение этих интервалов обрабатывается 
конкретной операционной системой. 
    •   CommCtrl. Эта страница содержит новые компоненты, введенные с 
обновленным интерфейсом Windows 95 и интерфейсом последних версий Windows NT. 
В качестве примера можно привести компоненты TTreeView и TListView. 
    •   Dialogs. На этой странице вы найдете компоненты, которые инкапсулируют 
функции таких предоставляемых Windows диалогов, как TOpenDialog и TSaveDialog. 

    32 Часть I. Основные положения 

    •   Data Access. Страница Data Access предоставляет компоненты, которые 
упрощают использование информации, связанной с наборами данных. Примерами 
могут послужить невизуальные компоненты ТТаblе и TSession, которые визуально не 
обнаруживают себя во время работы приложения. 
    •   Data Controls. Компоненты этой страницы известны как элементы 
управления данными. Они предоставляют визуальный интерфейс для невизуальных 
компонентов работы с наборами данных, содержащихся на странице Data Access. 
Речь идет, например, о таких компонентах, как TDBGrid, TDBChart и TDBCheckBox. 
    •   Win3.1. На странице Win3.1 представлены компоненты, относящиеся к 
Delphi 1, которые были заменены с появлением Win32 и нового интерфейса Windows 
95. Например, компонент Delphi 1 TTabbedNotebook был заменен компонентом TPageControl. 
    •   Internet. Назначение компонентов этой страницы, как нетрудно 
догадаться, — упростить создание приложений, работающих с Internet, и 
intranet-приложений. К представителям этой группы относятся такие компоненты, как 
TSMPT, THTML  HTClientSocket. 
    •   Samples. На странице Samples вы найдете примеры создаваемых 
пользователем компонентов. Компонент TGauge предназначен только для 
использования в целях совместимости. Страница CommCtrl содержит бегущую строку 
(progress bar), которая соответствует новому интерфейсу Windows. 
    •   ActiveX. Страница ActiveX содержит ряд компонентов, которые 
олицетворяют возможности Delphi по использованию управляющих элементов OLE и ActiveX. 
    •   Qreport. Сюда входят компоненты для создания отчетов без использования ReportSmith. 

    I Совет I   
    О каждом элементе палитры компонентов можно получить контекстную справку. 
Для этого достаточно выбрать интересующий вас компонент и нажать <F1>. 


    Настройка страниц палитры компонентов 

    Если вы хотите изменить группирование компонентов на палитре, используйте 
возможности создания и удаления страницы, перемещения компонентов с одной 
страницы на другую и даже их удаления. 
    Для отображения диалогового окна, используемого для настройки палитры 
компонентов, выполните следующие действия. 
    1.   Щелкните правой кнопкой мыши на палитре компонентов. Откроется 
контекстное меню. 
    2.   Выберите из контекстного меню пункт Properties. В результате появится 
диалоговое окно Environment Options со страницей конфигурации палитры 
(Palette), показанной на рис. 2.15. 

    Рис. 2.15. Страница Palette диалогового окна Environment Options позволяет 
изменять способ группировки компонентов на палитре компонентов 


    Глава 2. Интегрированная среда Delphi 33 
    2 Использование Delphi 3. Специальное издание 


    Настройка палитры компонентов может выполняться в различных аспектах. 

    •    Изменение порядка следования страниц или компонентов. Чтобы изменить 
порядок следования страниц или компонентов, достаточно выбрать нужный элемент 
из соответствующего списка (Pages или Components), а затем щелкнуть на кнопке 
Move Up (передвинуть вверх) или Move Down (передвинуть вниз). 

    I Совет I 
    Порядок элементов можно также изменить, перетащив интересующий вас элемент 
в новое место списка. 

    •   Добавление страницы. Для добавления страницы в палитру компонентов 
щелкните на кнопке Add и введите новое имя страницы. 
    •   Переименование страницы. Страницу можно переименовать, если выбрать ее 
из списка Pages, щелкнуть на кнопке Rename и ввести новое имя. 

    На заметку 
    При выборе элемента из списка Components кнопки Add и Rename будут заблокированы. 

    •   Удаление страницы. Чтобы удалить страницу, нужно выбрать ее из списка 
Pages и щелкнуть на кнопке Delete. Но прежде чем сделать это, необходимо 
скрыть все ее компоненты. Обратите также внимание на то, что кнопка Delete 
появляется только в случае, если выбран какой-нибудь элемент списка Pages. 
    •   Сокрытие компонента. Если компонент вам больше не нужен, можете его 
скрыть, выбрав его из списка Components и щелкнув на кнопке Hide. Обратите 
внимание на то, что кнопка Hide появляется только в случае, если выбран 
элемент списка Components. 

    Добавление новых компонентов в палитру компонентов 

    W W W 	Несмотря на то что библиотека компонентов — это довольно милая штука, 
по-настоящему она себя проявляет при добавлении новых компонентов (разработанных 
либо лично вами, либо независимыми компаниями, которые можно найти на многочисленных 
узлах Internet, посвященных Delphi). При этом запросы можно отправлять в несколько 
групп новостей по Delphi, например news://comp.lang.pascal.delphi.components.misc. 

    С появлением пакетов компонентов инсталляция компонентов разбивается на 
два этапа: создание пакета компонентов и его установку. 
    Подробнее о пакетах компонентов и об их использовании можно прочесть в 
главе 15, "Работа с пакетами". 

    Использование инспектора объектов 

    Инспектор объектов (Object Inspector), окно которого показано на рис. 
2.16, представляет собой один из трех ценнейших инструментов разработки 
интерфейса приложения. Об остальных двух средствах — проектировщике форм (Form 
Designer) и редакторе кода (Code Editor) — речь пойдет в разделе данной главы 
"Использование проектировщика форм и редактора кода". 
    Инспектор объектов используется для настройки опубликованных свойств 
компонента или формы. 

    На заметку 
    Свойства — это элементы данных, которые принадлежат объекту и описывают 
его. Например, цвет автомобиля можно считать свойством объекта "автомобиль", а 
ширина кнопки компонента TButton и текст, отображаемый компонентом TLabel, — 
это свойства компонентов TButton и TLabel. Подробнее об объектах и их 
свойствах можно прочесть в главе 4, "Object Pascal: углубленное изложение". 

    Рис. 2.16. Инспектор объектов позволяет устанавливать свойства компонентов формы 


    34 Часть I. Основные положения 

    В верхней части окна Object Inspector содержится раскрывающийся список, в 
котором перечислены все компоненты, расположенные в проектируемой форме. 

    На заметку 
    Объект формы определяет опубликованные свойства, которые можно 
изменить с помощью инспектора объектов. Для выбора формы достаточно 
выполнить одно из следующих действий. 
    •    Щелкнуть на свободном месте формы. 
    •    Выбрать форму из раскрывающегося списка, расположенного в верхней 
части окна Object Inspector. 
    •    Если выделен какой-либо компонент формы, нажимать клавишу <Esc> до 
тех пор, пока не будет выбрана сама форма. При этом должен быть активным 
проектировщик форм. 
    •    Нажать <Ctrl+Shift> и щелкнуть на выбранном компоненте. 

    В остальной части окна перечисляются свойства выбранного компонента. Окно 
содержит две вкладки. 
    •   Properties. В этой вкладке перечислены опубликованные свойства 
компонента, такие как ширина компонента и шрифт, используемый для отображения текста. 
    •   Events. Здесь дан список свойств специального типа, а именно — 
событий. Событие содержит не данные о компоненте, а связь с сегментом кода 
(написанного на языке Object Pascal), который выполняется, когда происходит 
данное событие. Дополнительно о событиях можно прочесть в разделе данной главы 
"Свойства событий" и в главе 6, "Использование компонентов Delphi". 
    Каждая страница списка свойств разделена на две колонки. В левой колонке 
перечислены имена свойств, а в правой — их значения. 

    Модификация свойств 

    Свойства хорошо написанного компонента инициализируются при его создании, 
гарантируя тем самым, что компонент всегда будет доступным. Представьте себе 
компонент TButton, у которого не установлен цвет фона. Как в таком случае 
прикажете его отображать? 
    Инспектор объектов позволяет изменять начальные параметры. Эти изменения 
записываются в файле формы DFM (Delphi ForM) и используются компилятором, 
чтобы автоматически генерировать код для настройки новых значений свойств во 
время работы приложения. 
    Существует четыре типа редакторов свойств. 
    •   Текст. Редактор текстовых свойств представляет значение свойства как 
текст, который можно редактировать. Он используется для таких числовых 
свойств, как Width, и таких строковых свойств, как Caption. 
    •   Перечислимый. Этот тип свойств позволяет взять одно значение из 
предопределенного набора возможных значений, который предоставляется 
инспектором объектов в виде раскрывающегося списка. Например, свойство Cursor 
является значением перечислимого типа, и компонент может отображать в каждый 
момент времени только один курсор, который должен выбираться из набора 
курсоров, доступных приложению. 
    •   Множество. Свойство этого типа может выбрать любое количество значений 
из предопределенного набора. Инспектор объектов отображает этот тип свойств в 
виде расширяемого списка пар True/False для каждого элемента в наборе. 
Примером такого типа свойства является свойство Borderlcons объекта TForm (вы 
можете включить или исключить любую из пиктограмм, которые можно отобразить 
на границе окна). 
    •   Объест. Этот тип свойств сам является объектом и отображается как 
расширяемый список свойств, каждое из которых можно редактировать отдельно. 
Некоторые объекты "запасаются" своими собственными редакторами свойств в виде 
диалоговых окон, которые позволяют сразу отредактировать свойство всего 
объекта. Такие пользовательские редакторы свойств активизируются с помощью 
двойного щелчка либо на значении свойства, либо на кнопке с многоточием. 
Свойство Font может служить примером обоих методов редактирования — его можно 
расширить до списка и в то же время воспользоваться его собственным 
пользовательским редактором. 
    Чтобы проиллюстрировать процесс изменения свойства, присвоим заголовку 
главной формы приложения звучное имя, например "Ну разве Delphi не 
прекрасна?". Для этого выполните следующие действия. 
    1.   Откройте меню File и выберите команду New Application. Появится 
хорошенькое, свеженькое такое, приложеньице. 
    2.   Нажмите клавишу <F9> для компиляции и запуска приложения, в 
результате чего будет отображена главная форма, показанная на рис. 2.17. 
Обратите внимание на название формы: оно должно быть весьма традиционным — "Forml". 
    3.   Закройте приложение. IDE Delphi снова готова служить вам. 

    Глава 2. Интегрированная среда Delphi	35 


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

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

    4.   В окне инспектора объектов (Object Inspector) щелкните на значении 
свойства Caption. В строке значения свойства появится курсор редактирования. 

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

    Рис. 2.17. Новое приложение Delphi 

    Рис. 2.18. Инспектор объектов позволяет вносить изменения в свойства 
компонентов без единой строки кода! 

    5.   Замените значение "Forml" на "Ну разве Delphi не прекрасна?". 
Обратите внимание на то, как изменяется название формы в процессе модификации 
значения свойства. 

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

    6.   Нажмите клавишу <F9> для компиляции и запуска приложения. Снова 
появится главная форма, но под другим названием (рис. 2.18). 
    7.   Закройте приложение. IDE Delphi снова появится перед вами, как будто 
вопрошая: "Чего изволите-с?". 

    Свойство Name 

    Довольно часто вам придется изменять свойства компонентов во время работы 
приложения. Может быть, вы захотите в своем приложении выводить имя 
отображаемого в текущий момент файла. Как видно из предыдущего примера, 
свойство формы Caption можно модифицировать с помощью окна Object Inspector 
(именно эта модификация происходила в процессе разработки). Но в нашем новом 
примере имя отображаемого файла доступно только во время работы приложения. 
Поэтому для присвоения нового значения свойству формы Caption необходимо 
написать специальный программный код на языке Object Pascal. 
    Имя свойства сообщает компилятору, какое свойство вы хотите изменить. Как 
же при этом сослаться на форму? Очень просто: через свойство Name. Снова 
воспользуемся предыдущим примером, в котором свойство формы Name также было 
равно "Forml". Для изменения свойства Caption запишите следующее: 

    Forml.Caption := 'AfileName'; 

    Этот оператор Object Pascal присваивает текст "AfileName" свойству формы 
Caption с именем "Forml". За дополнительной информацией об Object Pascal 
обращайтесь к главам 3, "Object Pascal: основные понятия", и 4, "Object 
Pascal: углубленное изложение". 

    36 Часть I. Основные положения 


    На заметку
    При каждом добавлении в приложение очередного компонента Delphi 
присваивает его свойству Name уникальное значение, которое подчиняется 
законам простои математической прогрессии. Вполне очевидно, что это 
значение не несет никакой смысловой нагрузки. Поэтому вам следует 
заменить безликий "больничный халат" с номером на "спецодежду"', которая 
отражала бы назначение компонента (например, чем "edtPassword" не имя для поля 
ввода, используемого для ввода пароля?). 


    Свойства событий 

    Программы, написанные для таких операционных систем, как MS DOS, известны 
как процедурные (приложение в них выполняется последовательно). Например, 
алгоритм ваших действий для ввода в программу MS DOS записи о новом покупателе 
выглядел бы приблизительно так. 
    1.	Ввести имя. 
    2.	Ввести адрес. 
    3.	Ввести номер телефона. 
    4.	Сохранить введенные данные о покупателе в базе данных. 
    Раньше, если покупатель не мог назвать номер телефона, приходилось вводить 
пробел только для того, чтобы все-таки добраться до места, где можно было бы 
сохранить вновь созданную запись. 
    Windows изменила такое положение дел. Работа приложений Windows основана 
на понятии события: сегменты приложения выполняются в ответ на возникновение 
определенной ситуации. Такой подход известен как обработка событий. 
Большинство компонентов заранее снабжено стандартной обработкой некоторых 
событий, например вдавливанием кнопки при щелчке на ней или добавлением 
символа в строку ввода при нажатии какой-нибудь клавиши. Несмотря на то что 
заложенная реализация таких деталей существенно облегчает жизнь, работы хватит 
и на ваш век! 

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

    Если бы вы вводили данные о покупателе в Windows-приложение, вы могли бы 
ввести его имя и адрес, а затем сохранить запись, щелкнув на кнопке с надписью 
Save. После щелчка на кнопке происходит событие, которое можно "отловить" и 
использовать для выполнения некоторого программного Object Pascal-кода, 
который сохранит запись. 
    Обработка событий выполняется путем установки свойства события равным 
имени Object Pascal-процедуры. Компонент, обнаружив возникновение события 
(например, щелчок мышью), вызывает процедуру, на которую ссылается свойство события. 

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

    Список аргументов процедуры события должен соответствовать шаблону, на 
котором основывается событие. 
    Вы можете позволить Delphi позаботиться о генерации имени процедуры, 
корректном списке аргументов и установке свойства события равным имени 
процедуры. Следующий пример иллюстрирует установку заголовка формы (свойство 
Caption) равным имени выполняемого модуля программы после щелчка на форме. 
    1.   Откройте меню File, выберите команду New Application, и появится 
пустое приложение. 
    2.   Щелкните на вкладке Events списка свойств инспектора объектов. 
    3.   Дважды щелкните на значении свойства OnClick. Появится окно редактора 
кода (Code Editor), в котором вы увидите текст аккуратно набранной вместо вас 
процедуры FormClick. Delphi сгенерировала для процедуры список аргументов и 
установила свойство события OnClick равным имени этой новой процедуры. 
    4.   Нажмите клавишу <ТаЬ>, чтобы обозначить уровень отступа, и введите 
следующий код (ваш экран должен быть приблизительно таким, как на рис. 2.19): 

    Caption   := Application.EXEName; 


    Глава 2. Интегрированная среда Delphi	37 


    Ha заметку 
    В предыдущем коде не указано, какой форме принадлежит свойство Caption. Но 
поскольку код обработки события принадлежит объекту формы, компилятор 
оказывается достаточно "сообразительным", чтобы автоматически добавить 
ссылку на форму. Такая "сообразительность" распространяется на все объекты, 
так как действующей по умолчанию областью видимости является сам объект. 


    Рис. 2.19. Delphi может сгенерировать структурные части процедуры и 
автоматически связать их с событиями 

    5.	Нажмите клавишу <F9> для компиляции и запуска приложения. Появится 
приложение с заголовком "FormГ 
    6.	Щелкните в любом месте формы. Заголовок заменится именем файла 
выполняемого модуля проекта. 
    7.	Закройте приложение. IDE Delphi появится снова. 


    I Совет I   
    Если дважды щелкнуть на компоненте, Delphi по умолчанию создаст обработчик 
события, такой как ОпClick для кнопки или OnChange — для поля ввода. 

    На заметку
    Если вы замените свойство Name компонента, Delphi автоматически 
переименует все его процедуры событий. 

    Те читатели, которые прошли "школу Visual Basic" и знакомы с концепцией 
массивов управления, могут подумать. что им можно использовать общий 
обработчик событий для обслуживания нескольких компонентов. И они будут правы! 
Этот трюк обсуждается в главе 8, "Создание приложений". 

    Поиск процедур обработки событий 

    Поскольку обработчики событий перечисляются в порядке создания, могут 
возникнуть трудности при их поиске в сложной форме, содержащей несколько 
компонентов. Однако существует способ, позволяющий непосредственно перейти к 
любому обработчику событий путем двойного щелчка на значении свойства, 
расположенного во вкладке Events. Для этого достаточно выполнить следующие действия. 
    1.   Откройте меню File, выберите команду New Application, и появится 
новое приложение. 
    2.   Дважды щелкните на форме. Редактор кода (Code Editor) отобразит 
автоматически сгенерированный обработчик событий OnCreate, а именно — 
процедуру FormCreate. 
    3.   Перетащите полосу прокрутки в правой части окна Code Editor вверх. 
Ваш экран должен быть приблизительно таким, как на рис. 2.20. 
    4.   Выберите вкладку Events в окне Object Inspector. 
    5.   Дважды щелкните на значении свойства OnCreate,  и редактор кода 
перенесет вас к обработчику события OnCreate, к процедуре FormCreate. 

    38 Часть I. Основные положения 


    Рис. 2.20. Delphi автоматически генерирует код, который поддерживает ваш 
интерфейс и события 


    Использование проектировщика форм и редактора кода 

    Проектировщик форм (Form Designer) и редактор кода (Code Editor) тесно 
взаимосвязаны и входят в набор средств, которые вы чаще всего будете 
использовать для создания приложений. 
    Возможно, вы помните, что для сохранения свойств компонентов Delphi 
использует DFM-файл, который отображается с помощью проектировщика форм (Form 
Designer). Программный код, связанный с формой (определение формы и процедуры 
событий), сохраняется в модуле Delphi или PAS-файле (подразумевается Object 
Pascal). PAS-файл отображается редактором кода. За дополнительной информацией 
о модулях Delphi обращайтесь к главе 3, "Object Pascal: основные понятия". 

    Проектировщик форм 

    Проектировщик форм (Form Designer) нельзя назвать отдельной программой, 
"пересаженной" в IDE. На самом деле это средство просмотра формы в период 
разработки, а не во время выполнения приложения. Такие невизуальные 
компоненты, как ТТаblе и TTimer, отображаются в проектировщике форм именно во 
время разработки, поэтому их можно выбрать и выполнить над ними 
соответствующие действия с помощью инспектора объектов (Object Inspector). Вы 
можете отобразить несколько форм во время разработки, но только одна из них 
может быть активной. В тесном содружестве с инспектором объектов проектировщик 
форм позволяет выполнить следующие действия. 
    •	Добавить компоненты в форму. 
    •	Модифицировать форму и ее компоненты. 
    •	Связать обработчики событий компонента с программой на Object Pascal, 
содержащейся в редакторе кода. 

    Добавление компонентов в форму 

    Добавление компонентов в форму — это центральный процесс в цикле быстрой 
разработки. В отличие от сред старого визуального программирования, визуальная 
разработка позволяет затрачивать на проектирование и тестирование интерфейса 
считанные минуты. 
    Добавление компонента в форму — довольно простая задача, которая обычно 
заключается в выполнении двух щелчков мышью. Вот что необходимо сделать. 
    1.   Откройте меню File, выберите команду New Application, и появится 
пустое приложение. 
    2.   Выберите любой компонент из палитры компонентов. 
    3.   Щелкните в любом месте формы. Отобразится компонент с привязкой его 
левой верхней точки к позиции щелчка мышью. На рис. 2.21 показана форма после 
опускания компонента TButton в центральной части формы. 

    Рис. 2.21. Два щелчка — и компонент уже в форме. Да здравствует скорость! 


    Глава 2. Интегрированная среда Delphi 39 


    I Совет I
    Чтобы переместить компонент, достаточно просто перетащить его в новое место. 

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

    I Совет I 
    Чтобы добавить несколько компонентов одного и того же типа, во время 
выбора компонента из палитры компонентов удерживайте нажатой клавишу <Shift>. 
После этого щелкайте левой кнопкой мыши по всей форме сколько душе угодно, 
создавая новые экземпляры выбранного компонента. Для возврата в режим выбора 
компонентов достаточно щелкнуть на пиктограмме указателя мыши, расположенной 
в левой части палитры компонентов. 

    Некоторые компоненты могут действовать подобно контейнерам компонентов, за 
что и получили название компонентов-родителей. А компоненты, предназначенные 
для содержания в контейнерах, называются дочерними. Примером таких 
"родственных" взаимоотношений может служить компонент TGroupBox. 
    1.	Откройте меню File, выберите команду New Application, и появится пустое приложение. 
    2.	Выберите из палитры компонентов компонент TGroupBox. Это третий справа 
компонент страницы Standard. 
    3.	Щелкните на форме, и появится компонент TGroupBox с именем GroupBoxl. 
    4.	Выберите из палитры компонентов компонент TButton. Это шестой слева 
компонент страницы Standard. 
    5.   Щелкните внутри компонента TGroupBox, который вы только что опустили 
в форму. Внутри рамки с названием GroupBoxl отобразится кнопка (компонент 
TButton), как показано на рис. 2.22. 
    6.   Перетащите группу в другое место. Заметьте, что кнопка перемещается 
вместе с ней. 

    Рис. 2.22. Одни компоненты могут действовать как родители других компонентов 


    ПРЕДОСТЕРЕЖЕНИЕ 
    Если вы щелкнете вне компонента TGroupBox, кнопка станет дочерним объектом 
формы, что аннулирует цель этого примера (а ведь вы хотите, чтобы компонент 
TButton стал "сыном" компонента TGroupBox). 

    На заметку 
    Такие свойства позиционирования, как Left и Тор, рассматриваются 
относительно координат родителя компонента. 


    40 Часть I. Основные положения 


    I Совет I 
    Если вы уже разместили компонент в форме и хотите сделать его "ребенком" 
другого компонента, используйте команду Edit=>Cut, чтобы переместить 
дочерний компонент в буфер обмена. После этого выберите родительский компонент 
и выполните вставку с помощью команды Edit=>Paste. 

    I Совет I 
    Чтобы выбрать родителя через ребенка, выберите ребенка, а затем нажмите 
<Escape> при активном проектировщике форм. 


    Работа с группой компонентов 

    Вероятно, вы помните пример с демонстрацией установки свойства формы 
Caption. Проектировщик форм позволяет выбрать несколько компонентов сразу и 
одновременно модифицировать их свойства. 
    Группу компонентов можно выбрать путем перетаскивания прямоугольника 
выбора с помощью мыши либо путем нажатия и удерживания нажатой клавиши <Shift> 
при выборе нескольких компонентов. 

    Совет 
    Если вы обладаете ловкостью рук, можете комбинировать эти методы выбора.

    При выборе компонентов инспектор объектов отобразит только общие свойства 
для каждого типа компонентов. Например, если выбрать компоненты TButton и 
TEdit, свойство Caption не попадет в список, так как оно не поддерживается 
всеми компонентами группы. 

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


    Контекстное меню проектировщика форм 

    После щелчка правой кнопкой мыши в любом месте проектировщика форм 
отобразится контекстное меню со следующими командами. 
    •   Align To Grid. Проектировщик форм покрывает форму сеткой. Мало того, 
команда Align To Grid модифицирует свойства компонента Left и Тор для гарантии 
их размещения на линии сетки. Эта команда полезна в случае, если вы хотите, 
чтобы все ваши компоненты располагались строго по прямым линиям. 

    I Совет I
    Дискретность сетки можно изменить с помощью диалогового окна Environment Options. 

   •    Bring To Front и Send To Back. Свойства Left, Top, Width и Height 
описывают двумерные аспекты компонента. Delphi позволяет перекрывать 
компоненты, которые используют третье измерение (глубину, или Z). Команда 
Bring To Front делает определенный компонент (компоненты) верхним по 
координате Z, в то время как команда Send To Back делает его (их) нижни м. 
   •    Revert to inherited. Если форма была выведена из другой формы, эта 
команда ликвидирует все ваши изменения, вернув первоначальное состояние формы. 
   •    Align. По этой команде отображается диалоговое окно Alignment, которое 
позволяет размещать компоненты, не применяя сетки формы. Например, если вы 
выберете пункт Space equally, проектировщик форм разместит компоненты так, 
чтобы между ними было одинаковое количество пробелов. 

    I Совет I 
    В окне Alignment Palette содержатся кнопки панели инструментов для каждой 
команды выравнивания. Откройте меню View и выберите команду Alignment Palette. 


    Глава 2. Интегрированная среда Delphi	41 

   •    Size. По этой команде отображается диалоговое окно Size, используемое для 
выравнивания свойств группы компонентов Width и Height. С помощью команды 
Size, например, можно установить ширину (свойство Width) каждого компонента 
равной максимальному значению в данной группе. 
   •    Scale. Данная команда позволяет ввести фактор масштабирования, который 
использует проектировщик форм для модификации свойств Left, Top, Width и 
Height каждого компонента формы. Например, фактор масштабирования, равный 50%, 
вдвое уменьшит координаты и размеры всех компонентов формы. 
   •    Tab Order. Один из первоначальных критериев разработки Windows состоял в 
том, что приложение должно работать и без мыши. Другими словами, приложение 
должно позволять пользователю переходить от одного компонента к другому с 
помощью клавиши <ТаЬ>. Свойство TabStop каждого компонента определяет 
последовательность обхода. По команде Tab Order открывается диалоговое окно 
Edit Tab Order (рис. 2.23), которое поможет вам справиться с модификацией 
последовательности обхода. 

    Рис. 2.23. Диалоговое окно Edit Tab Order позволяет легко настроить 
последовательность обхода для компонентов 


    I Совет I
    Если изменить свойство TabStop вручную, Delphi автоматически перенумерует 
это свойство для остальных компонентов. 

    Creation Order. Эта команда позволяет изменить порядок, в котором 
создаются невизуальные компоненты. 

    ПРЕДОСТЕРЕЖЕНИЕ 
    Программу нельзя назвать хорошей, если ее логика опирается на порядок 
создания. Ведь совершенно не эффективно постоянно регулировать порядок 
создания при добавлении и удалении компонентов, а потому такой стиль 
программирования не выдерживает критики. 

   •    Add To Repository. Это еще один способ добавления формы в хранилище 
объектов (Object Repository). Вероятно, вы уже не сомневаетесь в пользе 
хранилища объектов, не так ли? 
   •    View as Text. Возможно, некоторые из читателей вспомнят старые добрые 
времена зарождения визуального программирования, когда каждое свойство объекта 
настраивалось вручную. С помощью этой команды вы получите представление о 
закулисной работе Delphi путем отображения DFM-файла в текстовом виде. Чтобы 
вернуться к гораздо более привлекательному способ у просмотра формы, снова 
щелкните правой кнопкой мыши и выберите команду View as Form. 

    Редактор кода 

    Редактор кода (Code Editor), показанный на рис. 2.20, является именно тем 
местом, где вы "закручиваете все гаечки и винтики" своего приложения. С 
помощью проектировщика форм и инспектора объектов вы можете представить все 
виды частей "фасада" приложения, но без редактора кода, который поможет 
связать эти части в единое целое, ваш интерфейс останет ся красивой безделушкой. 
    Редактор кода можно настраивать с помощью диалогового окна Environment 
Options, которому посвящен раздел этой главы "Среда разработки приложения". 

    Контекстное меню редактора кода 

    Редактор кода предоставляет контекстное меню (Speedmenu), содержащее 
следующие команды. 

    I Совет I 
    Контекстное меню можно открыть, нажав <Alt+F10>. 

    •   Close Page. По этой команде закрывается активная страница. При 
необходимости вам будет предложено выполнить сохранение. 


    42 Часть I. Основные положения 


    I Совет I 
    Текущую страницу в редакторе кода можно сохранить, нажав <Ctrl+S>. 

    •   Open File at Cursor. При выборе этой команды происходит загрузка 
файла, на который указывает текущая позиция курсора. Сначала Delphi ищет файл 
в текущем каталоге, а затем — в маршруте поиска проекта. 

    I Совет I 
    На следующую страницу редактора кода можно перейти, нажав <Ctrl+Tab>, а 
для перехода на предыдущую страницу нажмите <Shift+Ctrl+Tab>. 

    •    New Edit Window. Отображает файл в другом окне редактора кода. 
    •    Browse Symbol at Cursor. Эквивалент команды ViewOBrowse Symbol с одним 
дополнением — вводит имя символа в диалоговом окне Browse Symbol. 
    •    Topic Search. Обращается к системе интерактивной справки по поводу текста, 
записанного в позиции курсора. 
    •    Debugging Commands. Подключает команды Breakpoint, Run to Cursor, 
Evaluate/Modify и Add Watch at Cursor, которые рассматриваются в главе 27, 
'Тестирование и отладка". 
    •    View as Form. Отображает текущую страницу как форму. Эта команда доступна 
только в том случае, если текущая страница представляет собой форму, отображенную 
в виде текста. 
    •    Read Only. Запрещает вносить изменения в текущий файл. 
    •    Message View. Открывает окно сообщений компилятора, которое располагается 
в нижней части окна редактора кода. 
    •    Properties. Отображает диалоговое окно Environment Options. 

    Code Insight 

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

    Code Completion 

    Это средство анализирует код в текущей позиции курсора и предоставляет 
список свойств, методов и событий, которые уместны в этой точке. Представьте, 
что у вас есть переменная формы с именем frmMain. Введите (с точкой в конце) 
в редактор кода frmMain. и нажмите <С1г1>+клавиша пробела, чтобы 
активизировать дополнение Code Completion, которое вызовет Delphi для 
отображения списка свойств, методов и событий, доступных для объекта frmMain. 

    Code Parameters 

    Code Parameters (параметры кода) — это просто находка для тех, кто 
постоянно обращается к интерактивной справочной системе за списком параметров 
функции или метода. Ввод имени функции с открывающейся скобкой, например 
Format, заставит Delphi отобразить требуемую структуру аргументов. 

    Code Templates 

    Code Templates (шаблоны кода) автоматически завершает такие стандартные 
программные конструкции, как if. . .then и for. . .do. Чтобы воспользоваться 
этим подспорьем, достаточно ввести первый символ конструкции (например, case) 
и нажать <Ctrl+J>. Редактор кода отобразит список шаблонов, показанный на рис. 
2.24. (Это тот самый список, который бесцеремонно расположился ниже и правее 
оператора case.) 
    Затем вы можете использовать клавиши управления курсором, чтобы выделить 
нужный шаблон, и нажать <Enter> для его выбора. Если вы передумаете 
использовать шаблон, нажмите <Escape> для удаления его списка. 

    Добавление своих шаблонов кода 

    Почти все в Delphi поддается настройке, даже шаблоны кода. Если вам 
неоднократно приходится вводить один и тот же блок кода, выполните следующие 
действия, чтобы добавить его в набор шаблонов. 
    1.   Выберите команду Tools=>Environment Options и вкладку Code Insight, и 
отобразится вкладка Code Insight, показанная на рис. 2.25. 
    2.   Щелкните на кнопке Add, и появится диалоговое окно Add Code Template, 
показанное на рис. 2.26. 

    Глава 2. Интегрированная среда Delphi 43 


    Рис. 2.24. Список существенно снижает ваши затраты времени на ввод 

    Рис. 2.25. С помощью вкладки Code Insight можно настроить поведение 
расширений по отношению к редактору кода 


    3.   Введите в строку ввода Shortcut Name краткое имя для этого шаблона кода. 
    4.   Используйте строку ввода Description для задания подробного описания 
этого шаблона. 
    5.   Щелкните на кнопке ОК. Диалоговое окно Add Code Template исчезнет, а 
новый шаблон пополнит список Templates, вполне готовый к употреблению. 
    6.   Введите код для этого шаблона в строку ввода Code. 
    7.   Щелкните на кнопке ОК для сохранения новоиспеченного шаблона кода. 


    Рис. 2.26. Диалоговое окно Add Code Template позволит добавить новый 
шаблон кода 


    I Совет I
    Чтобы оставить диалоговое окно Code Templates открытым и все-таки 
сохранить новый шаблон, достаточно Щелкнуть на Другом элементе 
списка Templates. Несмотря на то что Delphi запоминает изменения при открытом 
диалоговом окне, во время его закрытия вы все равно должны щелкнуть на кнопке 
ОК, чтобы изменения вступили в силу. 

    ПРЕДОСТЕРЕЖЕНИЕ 
    Сделанные вами изменения будут проигнорированы, если вы щелкнете на кнопке 
Add, не закрыв диалогового окна Code Templates или не выбрав другого элемента 
из списка Templates. 


    Среда разработки приложения 

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

    Опции среды 

    Чтобы отобразить диалоговое окно Environment Options, показанное на рис. 
2.27, выберите команду Tools=>Options. В диалоговом окне Environment Options 
содержится несколько вкладок. 
    •   Preferences. Позволяет настраивать несколько категорий параметров. 
Особенного внимания заслуживают две категории. 
    •   Autosave options. Здесь определяются элементы, которые Delphi сохраняет 
перед выполнением файла проекта. Параметр Editor files перед запуском 
приложения обеспечивает сохранение формы и модуля. Параметр Desktop 
автоматически сохраняет размер и позицию каждого окна IDE. 

    44 Часть I. Основные положения 

    Shared Repository. Эта категория позволяет указать каталог, в котором 
содержится общее хранилище формы, модуля данных и шаблонов приложения. Общее 
хранилище (Shared Repository) рассматривается в главе 8, "Создание приложений". 


    Рис. 2.27. Диалоговое окно Environment Options позволяет настроить IDE по 
вашему вкусу 


    •   Library. Содержит параметры, используемые компилятором при построении 
библиотеки компонентов. 
    •   Editor. Позволяет изменять набор средств окна Code Editor для эмуляции 
такой среды разработки, как Object Pascal для DOS. 

    I Совет I 
    Если вы создаете приложение в составе рабочей группы, отключите параметр 
Use tab character. 

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

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

    •   Colors. Позволяет изменять цвета, используемые для выделения кода в 
редакторе кода. 

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

    •   Palette. Позволяет добавлять компоненты в палитру компонентов и 
удалять их из нее. Такая возможность рассматривалась выше, в разделе этой 
главы "Палитра компонентов". 
    •   Browser. Позволяет изменять параметры для броузера объектов (Object Browser). 
    •   Code Insight. Позволяет разрешать, запрещать и модифицировать 
поведение дополнений по отношению к редактору кода. 

    Глава 2. Интегрированная среда Delphi 45 


    Построение первого приложения 

    Теперь, когда вы познакомились с IDE Delphi, приступим к написанию старой 
доброй демонстрационной программы, которая выполняет преобразование 
температуры. И не надо так тяжело вздыхать! Delphi способна даже на такие 
старые классические фокусы. Эта программа переводит температуру по Цельсию в 
температуру по Фаренгейту. Процесс программирования выполняется в два этапа. 
    •   Проектирование интерфейса. 
    •   Разработка функций интерфейса. 

    Проектирование интерфейса 

    Первый шаг к созданию приложения на основе GUI (графический интерфейс 
пользователя) заключается в построении интерфейса. Выполните следующие действия. 
    1.   Откройте меню File и щелкните на команде New Application. 
    2.   Поместите компонент TLabel  в верхний левый угол формы и замените 
существующее значение его свойства Caption значением Temperature. 
    3.   Разместите компонент TEdit   справа от компонента TLabel. Установите 
его свойство Name  равным edtTemperature, Width — равным 65 и очистите 
свойство Text. 
    4.   Поместите в форму еще один компонент TLabel (сразу под надписью 
"Temperature"). Установите его свойство Caption равным значению Result. 
    5.   Разместите рядом  с меткой "Result"  компонент TPanel.  Установите 
его свойство Name равным  pnlResult. Caption — равным Null, a 
BevelOuter— bvLowered. 
    6.   Выберите компоненты TPanel и TEdit. 
    7.   Щелкните правой кнопкой мыши, чтобы отобразить контекстное меню 
проектировщика форм (Form Designer). Выберите команду Size. 
    8.   В группах Width и Height установите параметр Shrink to smallest. 
Щелкните на кнопке ОК. 
    9.   Выберите форму. Установите ее свойство Height  равным значению 96, 
Width — 161, Caption— Temp Convert и HBorderStyle— bsSingle. Удалите из свойства 
Borderlcons  параметры biMaximize  и biMinimize. 
    После выполнения всех этих действий ваша форма должна быть приблизительно 
такой, как на рис. 2.28. Если вы оглянетесь назад и мысленно повторите путь, 
пройденный для достижения такого результата, вы скажете (или подумаете), что 
это было очень просто. Если вас интересует, какую закулисную работу для вас 
проделала Delphi, щелкните правой кнопкой мыши на форме и выберите команду 
View as Text. Вы увидите приблизительно 45 строк, детализирующих 
модификацию каждого свойства. Представьте себе, что вам пришлось бы писать 
их самостоятельно! Какой ужас! Чтобы вернуться к форме, щелкните правой 
кнопкой мыши на тексте программы и выберите команду View as Form. 

    Рис. 2.28. Интерфейс вашего первого приложения 

    Сейчас самое время сохранить проект. Выполните для этого следующие действия. 
    1.   Откройте меню File и выберите команду Save Project As. 
    Перед сохранением проекта Delphi предложит сохранить все формы и модули. 
Поскольку файл проекта содержит имена файлов каждой формы и модуля в проекте, 
в этом нет ничего удивительного. 
    2.   Выберите каталог для сохранения этого файла. Введите F_MAIN в 
качестве имени файла для модуля Unitl. 
    При этом выполняется сохранение сразу двух файлов: F_MAIN.PAS,, в котором 
содержится текст программы для формы на языке Object Pascal, и файла формы 
F_MAIN. DFM. 
    3.   Введите TEMPCONVERT в качестве имени файла для проекта Projectl. 

    46 Часть I. Основные положения 


    Разработка функций интерфейса 

    Создав интерфейс, можно приступить к написанию кода, который заставит 
программу выполнять преобразование температуры. 
    Возможно, вы заметили, что в интерфейсе отсутствует кнопка "перевода" для 
запуска процесса преобразования температуры. Такая кнопка была бы лишней, 
поскольку компонент TEdit вызывает событие OnChange при изменении вами текста, 
отображение которого входит в обязанности этого компонента. Обновленное 
значение воспринимается через свойство Text. Программе же остается 
"подкараулить" событие OnChange и преобразовать текущее значение температуры в 
значение по Фаренгейту. 
    Выполните следующие действия. 
    1.   Выберите поле ввода edtTemperature и щелкните на вкладке Events в 
окне инспектора объектов (Object Inspector). 
    2.   Дважды щелкните на значении свойства для события OnChange. Появится 
редактор кода, и Delphi автоматически сгенерирует обработчик событий с именем 
edtTemperatureChange. 
    3.   Между заголовком процедуры (строкой, начинающейся с ключевого слова 
procedure) и строкой, содержащей ключевое слово begin, добавьте следующий код: 

    var 
       iCelsius : Integer; 

    В этом фрагменте кода объявляется целая переменная iCelsius, которая 
используется для хранения значения температуры по Цельсию в компоненте TEdit. 
Более подробно переменные и типы описаны в главе 3, "Object Pascal: основные понятия". 
    4.   В тело процедуры edtTemperatureChange добавьте следующую строку кода: 

    iCelsius := StrToIntDef(edtTemperature.Text, 0); 

    С помощью этой строки выбирается значение, введенное в компонент 
edtTemperature. Поскольку iCelsius является целой переменной, необходимо 
преобразовать строковый тип, возвращаемый свойством Text, в целый, используя 
функцию StrToIntDef. 

    На заметку
    Функция StrToIntDef позволяет указать значение, которым нужно 
воспользоваться в случае, если строка не предоставит допустимого целого 
значения. Функция StrToInt, которая также переводит строку в целое 
значение, вызывает исключительную ситуацию при попытке преобразования 
недопустимого целого значения. Более подробно исключительные ситуации 
рассматриваются в главе 5, "Обработка исключительных ситуаций". 

    5.   Под строкой кода, введенной в пункте 4, вставьте следующую строку: 

    pnlResult.Caption := FloatToStr(iCelsius*1.8 + 32); 

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

    procedure  TForml.edtTemperatureChange(Sender:TObject); 
    var 
       iCelsius : Integer; 
    begin 
       iCelsius := StrToIntDef(edtTemperature.Text,0); 
       pnlResult.Caption := FloatToStr(iCelsius*1.8 + 32); 
    end; 


    Автоматически генерируемый код 

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

    unit F_Main; 
    interface 
    uses 


    Глава 2. Интегрированная среда Delphi	47 

    Первая строка используется компилятором для проверки того, что этот 
текстовый файл действительно является модулем Delphi и что этот модуль 
определяется конкретным именем файла. Вторая строка означает, что за ней 
должен следовать раздел интерфейса. Третья строка служит признаком начала 
команды uses для раздела interface данного модуля. Структура модуля описана в 
главе 3, "Object Pascal: основные понятия". 
    Девятая строка открывает блок объявления типов, который выглядит следующим образом. 

    type 
        TForml  =  class(TForm) 
          Labell : TLabell; 
          edtTemperature:   TEdit; 
          Label2 : TLabell; 
          pnlResult : TPanel; 
          procedure edtTemperatureChange(Sender : TObject); 
    private 
       { Сокрытые  объявления. } 
    public 
       { Открытые  объявления. } 
    end; 

    В этом блоке определяется класс TForml, являющийся шаблоном для формы, 
которую вы предварительно спроектировали. Заметьте, что здесь перечислены все 
компоненты, размещенные вами в форме. Процедура обработки события OnChange, 
которая называется edtTemperatureChange, представлена как метод объекта, 
объявленного в этом блоке. 
    Остальные строки имеют следующий вид. 

    var 
       Forml: TForml; 
    implementation 
    {$R *.DFM} 

    В первых двух строках приведенного фрагмента объявляется переменная 
объекта с именем Forml, имеющая тип TForml. 

    ПРЕДОСТЕРЕЖЕНИЕ 
    Ссылка на переменную объекта для формы, которая не была создана, приводит 
к нарушению доступа (Access Violation). Диалоговое окно Project Options 
позволяет определить, какие формы автоматически создаются в процессе 
выполнения приложения. Относительно проекта, который "вручную" создает формы 
во время своей работы, обращайтесь к главе 8, "Создание приложений". 

    Следующая строка означает начало раздела реализации (implementation) модуля. 
    Последняя строка данного фрагмента кода служит примером оператора, 
введенного специально для компилятора, и называется командой компилятора. 
Оператор $R Имя_файла указывает на файл ресурсов и приказывает компилятору 
включить все ресурсы, обнаруженные в файлах, совпадающих с шаблоном Имя_файла. 
Эта строка автоматически генерируется для модулей, которые определяют 
потомков объекта TForm, позволяя компилятору отыскать определения ресурсов 
компонентов. 

    Использование менеджера проектов 

    Теперь, когда вы создали свое первое приложение, рассмотрим несколько 
дополнительных возможностей IDE. Менеджер проектов (Project Manager), окно 
которого показано на рис. 2.29, предоставляет помощь в решении нескольких 
задач, связанных с проектами. Доступ к менеджеру проектов можно получить с 
помощью команды View=>Project Manager. 

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


    48 Часть I. Основные положения 


    Добавление и удаление файлов 

    Команда uses в любом модуле позволяет получить доступ к функциям, 
процедурам и объектам, содержащимся в других модулях. Компилятор станет искать 
указанный модуль в маршруте поиска. Добавлещю файла к проекту может облегчить 
процесс разработки следующими способами. 
    •   Перед компиляцией компилятор знает, какие файлы нужно проверить на 
предмет модификаций. 
    •   Вы можете быстро открыть формы и модули, связанные с проектом. 
    Чтобы добавить файл в проект с помощью менеджера проектов, выполните 
следующие действия. 
    1.   Откройте меню View и выберите команду Project Manager. Откроется окно 
менеджера проектов. 
    2.   Щелкните на кнопке панели инструментов Add (крайней слева), и 
появится диалоговое окно Add to Project. 
    3.   Выберите файл, который вы хотите добавить в свой проект. Выбранный 
файл появится в окне менеджера проектов. 
    Чтобы удалить файл из проекта, выберите его в окне менеджера проектов и 
щелкните на кнопке панели инструментов Remove (второй слева). 

    Создание и открытие форм и модулей 

    Многие приложения (такие, как текстовые редакторы) включают по крайней 
мере два типа форм — главную форму, содержащую меню и панель инструментов, и 
подчиненную форму для отображения документа. 
    Вы наверняка заметите, что несколько форм могут использовать общие 
функции, предназначенные, например, для проверки права доступа к определенным 
записям таблицы. Такие функции общего пользования могут размещаться в 
отдельном модуле, который не связан с конкретной формой. А каждая форма, 
которой требуются услуги общего модуля, просто добавляет его имя в команду uses. 
    Менеджера проектов можно использовать для создания формы или модуля. Для 
этого выполните следующие действия. 
    1.   Щелкните правой кнопкой мыши в окне менеджера проектов, и появится 
контекстное меню 
    2.   Выберите команду New Unit или New Form, и появится новый модуль или 
новая форма. 

    I Совет I
    Вы можете создавать модули или формы с помощью кнопок панели инструментов 
главного окна.

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

    I Совет I
    С помощью тех же кнопок View Unit и View Form, расположенных в главном 
окне, можно открывать формы и модули. 


    Параметры проекта 

    Кнопка панели инструментов Project Option (вторая справа) предназначена 
для отображения диалогового окна Project Option, которое позволит 
модифицировать некоторые параметры, относящиеся к управлению проектами. Более 
детально параметры проектов рассматриваются в главе 8, "Создание приложений". 

    Обновление файла проекта 

    Файл проекта, в котором хранятся модули и формы, задействованные в вашем 
приложении, имеет расщирение DPR (Delphi PRoject). Вспомните, что содержимое 
этого файла можно отобразить на экране, если открыть меню File и выбрать 
команду Ргоjес1 Source. Если у вас хватит смелости изменить этот файл вручную, 
информация, отображаемая в окне менеджера проектов мюжет стать некорректной. 
    Кнопка панели инструментов Update (крайняя справа на панели инструментов 
главного окна Delphi) заставит менеджера проектов просмотреть файл проекта и 
перестроить его список включаемых файлов. 

    Глава 2. Интегрированная среда Delphi	49 


    Использование хранилища объектов 

    Хранилище объектов (Object Repository) позволяет сохранять формы и 
объекты, чтобы использовать их в качестве шаблонов для дальнейшей разработки. 
На рис. 2.30 показано диалоговое окно New Items, активизируемое после открытия 
меню File и выбора команды New. В этом диалоговом окне вы сможете просмотреть 
содержимое хранилища объектов. 

    Рис. 2.30. В диалоговом окне New Items отображаются элементы хранилища объектов 

    Хранилище объектов может также содержать связь с экспертом, или 
надстройкой IDE, который призван оказывать помощь при выполнении определенных 
задач. Примером такого эксперта может служить объект Application Expert, 
включенный во вкладку Projects диалогового окна New Items. В главе 29, "Работа 
с интерфейсом Open Tools API", создание экспертов рассмотрено более подробно. 

    Составляющие хранилища объектов 

    Delphi поддерживает несколько базовых шаблонов объектов, каждый из которых 
можно использовать в качестве фундамента для построения другого, более 
сложного объекта. Эти шаблоны расположены в диалоговом окне New Items, во 
вкладке New. Шаблон Form может служить полезным примером базового шаблона— его 
можно настроить путем добавления компонентов и Object Pascal-кода, а затем 
добавить в хранилище объектов, используя вкладку Forms либо Dialogs. 

    Многократное использование объектов в разных проектах 

    Объекты, содержащиеся во вкладке Forms, Dialogs или Data Modules, можно 
использовать в нескольких проектах следующим образом. 
    •   Копирование. В этом случае в ваш проект добавляется точный дубликат 
конкретного объекта. Но изменения, внесенные либо в проект, либо в хранилище, 
не повлияют на объект-копию. 
    •   Наследование. Новый объект выводится из того, который находится в 
хранилище, а затем полученный объект снова добавляется в хранилище. Изменения, 
внесенные в объект проекта, не повлияют на объект, сохраняемый в хранилище. 
Изменения же, сделанные в объекте хранилища, повлияют на копию используемую в 
вашем проекте. Если бы одна и та же часть объекта изменилась как в хранилище, 
так и в объекте, версия проекта имела бы приоритет. Форма About с логотипом 
вашей компании — прекрасный пример наследования. 
    •   Использование. Объект из хранилища включается, как будто это другой 
файл в вашем проекте. Изменения, внесенные в объект в вашем проекте, 
немедленно отражаются в хранилище и во всех других проектах, использующих этот 
объект. 

    50 Часть I. Основные положения 


    Многократное использование объектов внутри дного проекта 

    Delphi также позволяет многократно использовать объект внутри одного 
проекта. Благодаря этому вы сможете определить базовый объект и использовать 
его функции без сохранения его в глобальном хранилище объектов. 

    На заметку 
    Многократное использование объектов внутри проекта логически 
ограничивается только наследованием. Создание точной копии (Копирование) здесь 
не подходит (чем же плоха существующая копия?). Включение объекта проекта как 
части проекта (Использование) является излишним, ведь он уже существует. 

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

    Многократное использование проектов 

    В хранилище объектов можно добавлять и проекты, а затем использовать их в 
качестве шаблонов для новых приложений. Delphi предоставляет несколько 
шаблонов проектов, таких как MDI Application, и сохраняет их на странице 
Projects диалогового окна New Items. 
    Если хотите, создайте проект, который будет определять стандартный 
интуитивно понятный интерфейс для вашей компании, и используйте его для новых разработок. 

    Резюме 

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

    Главное окно 

    В этом разделе рассматривались три составные части главного окна IDE — 
главное меню, панель инструментов и палитра компонентов. 
    Главное меню — это центр управления, откуда вы можете получить доступ ко 
всем "боевым" средствам IDE Delphi — броузеру объектов, диалоговому окну 
Project Options и командам компиляции. 
    Панель инструментов — это легко модифицируемая коллекция "кнопочных" 
эквивалентов команд главного меню, используемых вами чаще всего. 
    Палитра компонентов содержит набор визуальных и невизуальных компонентов, 
которые служат "кирпичиками" для быстрой разработки приложения. Вы можете 
изменить группирование компонентов и инсталлировать в свою библиотеку 
компоненты, созданные независимыми производителями. 

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

    Интерфейс приложения разрабатывается, главным образом, с помощью двух 
инструментов — инспектора объектов и проектировщика форм. Эти средства 
позволяют полностью покрыть часть "look" интуитивно понятного интерфейса 
"look-and-feel". 
    Инспектор объектов позволяет изменять свойства компонентов, расположенных 
в окне проектировщика форм. 
    Проектировщик форм помогает быстро создать форму, отображая ее визуальное 
представление во время разработки. 
    Часть "feel", заключающаяся в том, как приложение "ощущает" свое 
назначение, определяется связыванием процедур, написанных на языке Object 
Pascal, с событиями, предоставленными компонентами, из которых состоит ваш 
интерфейс. Эти процедуры создаются в редакторе кода. 

    Глава 2. Интегрированная среда Delphi 51 


    Построение приложения с помощью IDE 

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

    Два очень полезных инструмента 

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

    52 Часть I. Основные положения 
