Глава 2
ЗНАКОМСТВО СО СРЕДОЙ DELPHI
Среда Delphi - это сложный механизм, обеспечивающий высокоэффективную работу программиста. Визуально она реализуется несколькими одновременно раскрытыми на экране окнами. Окна могут перемещаться по экрану, частично или полностью перекрывая друг друга, что обычно вызывает у пользователя, привыкшего к относительной “строгости” среды текстового процессора Word или табличного процессора Excel, ощущение некоторого дискомфорта. После приобретения опыта работы с Delphi это ощущение пройдет, и вы научитесь быстро отыскивать нужное окно, чтобы изменить те или иные функциональные свойства создаваемой вами программы, ибо каждое окно несет в себе некоторую функциональность, т. е. предназначено для решения определенных задач.
Запустите Delphi - и вы увидите нечто, похожее на рис. 2.1 (на рисунке показаны окна Delphi версии 6; для других версий окна могут иметь незначительные отличия). На нем изображены шесть наиболее важных окон Delphi: главное окно 1, окно Дерева объектов (Object Tree View) 2, окно Инспектора объектов 3, окно браузера 4, окно формы 5 и окно кода программы 6.
Чтобы упорядочить окна так, как они показаны на рисунке, вам придется вручную изменять их положение и размеры, т. к. обычно окно кода программы почти полностью перекрыто окном формы. Впрочем, добиваться максимального сходства того, что вы видите на экране вашего ПК, с изображением, показанным на рис. 2.1, вовсе не обязательно: расположение и размеры окон никак не влияют на их функциональность; если вы не видите на экране окна кода, но хотите его увидеть, просто нажмите клавишу F12 [Если к этому моменту активным было окно Инспектора Объектов, вам придется нажать на F12 еще раз.]. Повторное нажатие F12 вновь активизирует окно формы и т. д. - эта клавиша работает как двоичный переключатель, попеременно показывая окно формы или окно кода программы.
Замечу, что при первом запуске Delphi поверх всех окон появится окно, показанное на рис. 2.2.
Рис. 2.1. Наиболее важные окна Delphi:
Рис. 2.2. Окно связи с Inprise (Borland)
С помощью этого окна вы сможете получить доступ к Web-страницам корпорации Inprise для просмотра самой свежей информации о корпорации и ее программных продуктах, копирования дополни тельных файлов, чтения ответов на наиболее часто задаваемые вопросы и т. д. При повторных запусках Delphi это окно появляется автоматически с некоторой периодичностью, определяемой настройками на странице окна Tolls | Environment Options, связанной с закладкой Delphi Direct. Вы также сможете его вызвать в любой момент с помощью опции Help | Delphi Direct главного меню.
2.1. ГЛАВНОЕ ОКНО
Главное окно осуществляет основные функции управления проектом создаваемой программы. Это окно всегда присутствует на экране и упрямо занимает его самую верхнюю часть. Не пытайтесь его распахнуть на весь экран: даже в максимизированном состоянии его размеры и положение практически не отличаются от обычных.
Связано это с функциональностью главного окна: с одной стороны, оно несет в себе элементы, которые всегда должны быть под рукой у программиста, с другой - окно не должно отнимать у остальных окон Delphi значительного пространства экрана. Минимизация главного окна приводит к исчезновению с экрана других окон Delphi[Эти окна появятся, как только будут восстановлены размеры главного окна.], а его закрытие означает окончание работы программиста с системой программирования.
В главном окне располагается главное меню Delphi, набор пиктографических командных кнопок и палитра компонентов.
Главное меню [Помимо главного меню в Delphi широко используется система вспомогательных меню, доступ к которым осуществляется правой кнопкой мыши.] содержит все необходимые средства для управления проектом. Все опции главного меню представляют собой опции-заголовки, открывающие доступ к выпадающим меню второго уровня. Для начального знакомства с Delphi мы вполне обойдемся пиктографическими кнопками, и нам не понадобится обращаться к главному меню, вот почему подробное описание его опций вы найдете не здесь, а в прил. 1.
Все элементы главного окна располагаются на специальных панельках, в левой части которых имеются кнопки управления , позволяющие с помощью мыши перетаскивать панельки с помещенными на них элементами. Любую панельку (кроме главного меню) можно убрать из окна (сделать ее невидимой) или “пустить плавать” по экрану в отдельном окне. Для этого нужно лишь “стащить” панельку с помощью мыши за кнопку из пределов главного окна.
Для изменения состава показываемых на панельке кнопок нужно предварительно щелкнуть по ней правой кнопкой мыши. В появившемся после этого окне вспомогательного меню (рис. 2.3, а) перечислены названия всех панелек и указан их статус (отмеченные флажками панельки видны в главном окне; если отметку убрать, панелька исчезнет). После выбора customize (Настройка) появится окно настройки (рис. 2.3, б). Теперь можно “стаскивать” с панелек ненужные кнопки, выбирать из списка в окне commands (закладка Commands) нужные кнопки и перетаскивать их на экран.
а), б).
Рис. 2.3. Настройка инструментальных панелек: а) вспомогательное меню; б) окно настройки с выбранной закладкой Command
Для примера на рис. 2.4 показано главное окно с нестандартным расположением панелек и набором отображаемых в них кнопок.
При его создании мне хотелось, с одной стороны, получить больше места для размещения страниц галереи компонентов, а с другой поместить в главное окно пиктограммы часто используемых мною команд меню: Project | Syntax check (проверка синтаксиса кода программы), View | Debug Windows | Watches) доступ к окну наблюдения отладочного режима) и View | Debug windows | Breakpoints (доступ к окну точек останова).
(Левая часть окна)
(Правая часть окна)
Рис. 2.4. Главное окно с нестандартным расположением своих элементов
2.1.1. Пиктографические кнопки
Пиктографические кнопки открывают быстрый доступ к наиболее важным опциям главного меню. По функциональному признаку они разделены на 7 групп. Каждая группа занимает отдельную панельку. В следующей таблице описаны команды, реализуемые стандартным набором пиктографических кнопок (пиктографические кнопки галереи компонентов рассматриваются отдельно в гл. 4).
Реализуемое кнопкой действие |
|
Группа Standard |
|
Открывает доступ к Репозиторию Объектов. Эквивалент опции File | New | Other (этой кнопки нет в версиях 1, 2 и 3) |
|
Открывает существующий файл. Эквивалент опции File | Open File |
|
Сохраняет файл на диске. Эквивалент опции File | Save File (клавиши быстрого доступа Ctrl-S) |
|
Сохраняв все файлы проекта. Эквивалент опции File | Save All |
|
Открывает созданный ранее проект программы. Эквивалент опции File | Open Project (клавиши быстрого доступа Ctrl-F11) |
|
Добавляет новый файл к проекту. Эквивалент опции Project | Add to project (клавиши быстрого доступа Shift-F11) |
|
Удаляет файл из проекта. Эквивалент опции Project | Remove from Project |
|
Группа View |
|
Выбирает модуль из списка модулей, связанных с текущим проектом. Эквивалент опции View | units (клавиши быстрого доступа Shift-F12) |
|
Выбирает форму из списка форм, связанных с текущим проектом. Эквивалент опции View | Forms (клавиши быстрого доступа Ctrl-F12) |
|
Переключает активность между окном формы и окном кода программы. Эквивалент опции View | Toggle Form/Unit (клавиша быстрого доступа F12) |
|
Создает новую форму и добавляет ее к проекту. Эквивалент опции File | New | Form (этой кнопки нет в версиях 1 и 2) |
|
Группа Debug |
|
Компилирует и выполняет программу. Эквивалент опции Run | Run (клавиша быстрого доступа F9) |
|
Реализует паузу в работе отлаживаемой программы. Эквивалент опции Run | Program Pause |
|
Осуществляет пошаговую трассировку программы с прослеживанием работы вызываемых подпрограмм. Эквивалент опции Run | Trace into (клавиша быстрого доступа F7) |
|
Осуществляет пошаговую трассировку программы, но не прослеживает работу вызываемых подпрограмм. Эквивалент опции Run | Step Over (клавиша быстрого доступа F8) |
|
Группа Custome |
|
Открывает доступ к встроенной справочной службе. Эквивалент опции Help | Delphi Help (этой кнопки нет в версиях 1, 2 и 3) |
|
Группа Desktops |
|
Список выбора возможных вариантов настройки остальных окон Delphi |
|
Сохраняет текущую настройку окон Delphi |
|
Выбирает настройку окон, соответствующую отладочному режиму |
|
Группа Internet |
|
Начинает создание нового приложения по технологии WebSnap (для Интернет) |
|
Создает новую страницу приложения WebSnap |
|
Создает новый модуль данных приложения WebSnap |
2.1.2. Настройка окон
Начиная с версии 5, главное окно обогатилось тремя новыми интерфейсными элементами, указанными в группе Desktops предыдущей таблицы. С помощью этих инструментов программист может подготовить несколько вариантов расположения остальных окон Delphi и сохранить их в настроечном файле.
Обычно выбираются две или три основные конфигурации окон: для режима разработки форм, для кодирования и для отладки. При разработке формы на экране должна быть видна сама форма, Дерево объектов и Инспектор объектов. Настроив соответствующие размеры и положение этих окон, такую настройку можно сохранить под именем, например, Design Desk. Для режима кодирования обычно нужно только максимально распахнутое на экран окно кода с браузером Code Explorer и пристыкованное к нему окно Дерева объектов. Такую конфигурацию можно сохранить под именем code-Desk. Наконец, в отладочном режиме к окну кода желательно “прицепить” некоторые отладочные окна, такие как Watches (окно наблюдений за переменными/выражениями) и Breakpoints (окно создания/настройки точек контрольного останова). Такую конфигурацию можно сохранить под именем DebugDesk, например. Теперь при переходе к тому или иному режиму достаточно раскрыть список и выбрать из него нужную настройку. Если вы предварительно укажете с помощью кнопки настройку для отладочного режима, эта стройка появится автоматически, как только среда перейдет в режим отладки.
2.1.3. Палитра компонентов
Палитра компонентов - это главное богатство Delphi. Она занимает правую часть главного окна и имеет закладки, обеспечивающие быстрый поиск нужного компонента. Под компонентом понимается некий функциональный элемент, содержащий определенные свойства и размещаемый программистом в окне формы. С помощью компонентов создается каркас программы, во всяком случае - ее видимые на экране внешние проявления: окна, кнопки, списки выбора и т. д.
Как и панель кнопок, палитра компонентов может настраиваться. Для этого используется специальный редактор, окно которого появляется на экране после щелчка правой кнопкой мыши на любой пиктограмме в палитре компонентов и выбора опции properties (Свойства) (рис. 2.5).
Нет смысла удалять какой-то из компонентов, а создавать новые мы с вами пока еще не умеем, поэтому я не рекомендую вам экспериментировать с редактором палитры. Тем не менее один совет все-таки дам. В стандартном наборе страниц палитры компонентов есть страница Samples, содержащая довольно часто используемые компоненты. В то же время ее закладка в палитре закрыта двумя небольшими кнопками “прокрутки” закладок палитры. Имеет смысл поменять ее местами с менее используемой страницей, например, со страницей ADO. Вы можете “перетащить” строку Samples в окне Pages редактора палитры вверх и “положить” ее на строку ADO. После такой перестановки закладка Samples станет доступна в любой момент. Если, к тому же, вы не планируете использовать в своих проектах технологию ADO для доступа к базам данных, перетащите строку ado в самый конец списка.
Рис. 2.5. Окно редактора палитры компонентов
2.2. ОКНО ФОРМЫ
Окно формы представляет собой проект Windows-окна будущей программы. Вначале это окно пусто. Точнее, оно содержит стандартные для Windows интерфейсные элементы - кнопки вызова системного меню, максимизации, минимизации и закрытия окна, полосу заголовка и очерчивающую рамку. Вся рабочая область окна обычно заполнена точками координатной сетки, служащей для упорядочения размещаемых на форме компонентов (вы можете убрать эти точки, вызвав с помощью меню Tools | Environment options соответствующее окно настроек и убрав флажок в переключателе Display Grid на окне, связанном с закладкой Preferences).
Значительную часть времени программист занят увлекательным занятием, напоминающим работу с набором деталей конструктора Lego: он “достает” из палитры компонентов, как из коробки с деталями, нужный компонент и размещает его на “наборном поле” окна формы, постепенно заполняя форму интерфейсными элементами. Собственно, именно в этом процессе наполнения формы и заключается главная изюминка визуального программирования. Программист в любой момент времени контролирует содержание окна создаваемой программы и может внести в него необходимые изменения.
2.3. ОКНО ДЕРЕВА ОБЪЕКТОВ
Это окно появилось в версии 6 и предназначено для наглядного отображения связей между отдельными компонентами, размещенными на активной форме или в активном модуле данных. Щелчок по любому компоненту в этом окне активизирует соответствующий компонент в окне формы и отображает свойства этого компонента в окне Инспектора объектов. Двойной щелчок приводит к срабатыванию механизма Code Insight, который вставляет в окно кода заготовку для обработчика события OnClick. Наконец, компонент можно “перетащить” в окне и таким образом поменять его владельца (свойство parent). В предыдущих версиях такую замену можно было сделать только с помощью межпрограммного буфера обмена Clipboard.
2.4. ОКНО ИНСПЕКТОРА ОБЪЕКТОВ
Любой размещаемый на форме компонент характеризуется некоторым набором параметров: положением, размером, цветом и т. д. Часть этих параметров, например, положение и размеры компонента, программист может изменять, манипулируя с компонентом в окне формы. Для изменения других параметров предназначено окно Инспектора объектов. Это окно содержит две страницы - Properties (Свойства) и Events (События). Страница properties служит для установки нужных свойств компонента, страница Events позволяет определить реакцию компонента на то или иное событие. Совокупность cвойств отображает видимую сторону компонента: положение относительно левого верхнего угла рабочей области формы, его размеры и цвет, шрифт и текст надписи на нем и т. п.; совокупность событий - его поведенческую сторону: будет ли компонент реагировать на щелчок мыши или на нажатие клавиш, как он будет вести себя в момент появления на экране или в момент изменения размеров окна и т. п.
Каждая страница окна Инспектора объектов представляет собой двухколончатую таблицу, левая колонка которой содержит название свойства или события, а правая - конкретное значение свойства или имя подпрограммы [Если вам еще не знаком этот термин, считайте, что подпрограмма - это просто относительно небольшой фрагмент программы. Подробнее о подпрограммах см. п. 5.6.], обрабатывающей соответствующее событие.
Строки таблицы выбираются щелчком мыши и могут отображать простые или сложные свойства. К простым относятся свойства, определяемые единственным значением - числом, строкой символов, значением True (Истина) или False (Ложь) и т. п. Например, свойство caption (Заголовок) представляется строкой символов, свойства Height (Высота) и width (Ширина) - числами, свойство Enabled (Доступность) - значениями True или False. Сложные свойства определяются совокупностью значений. Слева от имени таких свойств указывается значок “+”, а щелчок мышью по этому символу приводит к раскрытию списка составляющих сложного свойства. Чтобы закрыть раскрытый список, нужно щелкнуть по значку “-” сложного свойства [Для версий Delphi 1...4 раскрыть или закрыть список составляющих сложного свойства можно только двойным щелчком.].
Щелчок мышью на правой колонке строки таблицы активизирует указанное в ней значение свойства, при этом в правом конце строки может появиться одна из кнопок: !!!!! или !!!!!!!. Щелчок по кнопке !!!!!!! приводит к появлению на экране диалогового окна, с помощью которого устанавливается значение сложного свойства. Щелчок по кнопке !!!!!!! ведет к раскрытию списка возможных значений простого свойства.
В верхней части окна Инспектора объектов располагается раскрывающийся список всех помещенных на форму компонентов. Поскольку форма сама по себе является компонентом, ее имя также присутствует в этом списке. В отличие от предыдущих версий раскрывающийся список содержит не только имена компонентов, но и их классы.
В локальном меню окна, которое появляется после щелчка по нему правой кнопкой, имеется ряд опций, позволяющих настроить окно. В частности, после выбора stay on Top, окно Инспектора объектов будет “всплывать” над всеми другими окнами независимо от его активности. Такое состояние окна удобно при частом его использовании, например, при конструировании сложной формы, содержащей множество компонентов. Если выбрать в локальном меню опцию Arrange и затем by Category, все строки окна Инспектора объектов будут представлять собой раскрывающиеся списки свойств, упорядоченные по категориям (рис. 2.6).
Рис. 2.6. Списки свойств упорядоченные по категориям
Любые категории можно сделать невидимыми. Для этого нужно в локальном меню выбрать view и затем в дополнительном меню убрать флажок слева от категории.
В отличие от предыдущих версий Delphi в версии 6 сложные свойства, ссылающиеся на объекты, выделяются в окне Инспектора объектов цветом и показываются на странице Events. Если такое свойство определено, слева от него появляется кнопка “+”, позволяющая увидеть (и при необходимости изменить) свойства и обработчики событий связанного объекта. Для примера на рис. 2.7 показано, как с помощью окна Инспектора объектов, связанного с формой Form1, определить обработчик OnClick для одной из опций связанного с формой меню.
С помощью опции properties локального меню окна Инспектора объектов можно отменить такую его функциональность, если в списке SpeedSettings соответствующего диалогового окна выбрать Delphi 5 emulation.
Поэкспериментируйте самостоятельно с локальным меню Инспектора объектов, чтобы понять назначение тех или иных его опций. Если вы случайно или намеренно сделаете окно невидимым, нажмите F 11 или выберите опцию view | object inspector, чтобы оно вновь появилось на экране.
Рис. 2.7. Установка обработчика OnClick опции меню для формы Form1
2.5. ОКНО КОДА ПРОГРАММЫ
Окно кода предназначено для создания и редактирования текста программы. Этот текст составляется по специальным правилам и описывает алгоритм работы программы. Совокупность правил записи текста называется языком программирования. В системе Delphi используется язык программирования Object Pascal, который представляет собой расширенную и усовершенствованную версию широко распространенного языка Паскаль, впервые предложенного швейцарским ученым Н. Виртом еще в 1970 г. и усовершенствованного сотрудниками корпорации Borland (созданные ими языки назывались Turbo Pascal, Borland Pascal и Object Pascal). Несмотря на то, что визуальная среда Delphi берет на себя многие рутинные аспекты программирования, знание языка Object Pascal является непременным условием для любого программиста, работающего в этой среде.
Первоначально окно кода содержит минимальный исходный текст, обеспечивающий нормальное функционирование пустой формы в качестве полноценного Windows-окна. В ходе работы над проектом программист вносит в него необходимые дополнения, чтобы придать программе нужную функциональность. Поскольку для создания даже простых программ вам понадобится создавать и изменять (редактировать) код программы, ниже описываются основные приемы работы с окном кода.
Сразу после открытия нового проекта в нем будут такие строки:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Frms, Dialogs;
type
TFormI = class(TForm) private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{SR *.DFM}
end.
Эти строки Delphi автоматически вставляет в окно кода для новой формы. Как уже говорилось, окно кода определяет поведенческую сторону окна программы (т. е. окна, появляющегося после начала работы программы), а окно формы - его внешние проявления. Оба окна тесно связаны друг с другом, причем Delphi “хозяйничает” в его верхней части, вставляя необходимые строки между
unit Unit1;
и implementation
Пока не стоит изменять эту часть текста. В дальнейшем мы будем вставлять в окно текст программы между строками
{$R-*.DFM}
и
end.
в нижней части окна.
Чтобы вставить в окно новую строку (строки), нужно сначала, с помощью клавиш курсора или щелкнув по окну мышью, поставить текстовый указатель (мигающую вертикальную черту) на нужное место, а затем с помощью клавиатуры ввести текст. Обычно текст кода программы располагается в нескольких строках. Для перехода на новую строку используйте клавишу Enter. Если в процессе ввода вы ошиблись и тут же заметили свою ошибку, удалите ошибочный символ клавишей Backspace (продолговатая серая клавиша в правом верхнем углу зоны алфавитно-цифровых клавиш или расположенная там же клавиша с левой стрелкой). Клавиша Backspace удаляет символ слева от мигающего указателя, а клавиша Delete - справа от него. Если понадобится удалить сразу всю строку текста, поставьте в любое место строки мигающий указатель, нажмите клавишу Ctrl и, не отпуская ее, клавишу с латинской буквой Y. Такое совместное нажатие клавиш в дальнейшем будем обозначать символом “+”: Ctrl+Y. Чтобы отменить последнее изменение текста, нажмите Ctrl+Z или выберите
Пункт меню Edit | Undo.
Более полное руководство по работе с текстовым редактором окна кода приводится в прил. 1.
Текстовый редактор версий Delphi 4, 5 и б имеет расширенные “интеллектуальные” возможности Code Insight cвяхaнные с контролем текста по мере его ввода программистом. К сожалению, этот контроль отнимает у компьютера определенные ресурсы. Чтобы избавиться от раздражающих пауз в момент набора кода, особенно заметных на ПК с памятью менее 32 Мб, оснащенных процессорами с тактовой частотой 100 и менее МГц, раскройте список опции Tools главного меню, щелкните по опции Editor Options (для вёрсии 4-на опции Environment options) и на странице, связанной с закладкой code insight, уберите флажки в переключателях Code Completion, Code Parameters И Tooltip Symbol Insight. Увы! Вы лишитесь чудесных возможностей режима Code Insight, но зато обретете полный контроль над клавиатурой. (Переключатель Tooltip Expression Evaluation разрешает/запрещает вычисление и показ значения переменной в режиме отладки, когда нау переменной останавливается указатель мыши. Убирать флажок в этом переключателе не имеет смысла, т. к. на этапе ввода текста программы этот, сервис среды заблокирован и активизируется лишь после перехода к режиму отладки).
Вместе с окном кода обычно активизируется) браузера Code Explorer, облегчающее поиск нужных элементов в случае, когда в окне набрано много строк кода (рис. 2.8).
Рис. 2.8. Окно кода с расположенным слева браузером Code Explorer
Двойной щелчок мышью на элементе в окне браузера приводит к позиционированию текстового указателя в окне кода на описание соответствующего объекта или его первое упоминание. При разработке несложных учебных программ можно закрыть окно браузера маленькой кнопкой в его верхнем правом углу. Восстановить закрытое окно можно после щелчка правой кнопкой мыши по окну кода и выбора опции view Explorer. Замечу, что окно браузера располагается на вспомогательной панели и имеет управляющую полосу в верхней части рамки. “Схватив” ее мышью, вы можете перетащить окно на любое свободное место экрана или “причалить” его к окну Инспектора объектов.
В версии 6 на нижней кромке окна кода располагаются две закладки - Сode и Diagram. Щелчок по последней активизирует страницу диаграмм (рис. 2.9). Первоначально эта страница пуста. Чтобы наполнить ее, нужно “перетащить” мышью два и более компонента из окна Инспектора компонентных связей. На рис. 2.9 это окно пристыковано к верхней части окна браузера. Чтобы перетащить компоненты в поле диаграмм, нужно нажать и удерживать клавишу Shift, после чего щелкнуть по компонентам и, продолжая удерживать Shift, переместить указатель мыши в поле диаграмм и щелкнуть по нему левой кнопкой.
Рис. 2.9. Пример страницы диаграмм
Для сложных форм с множеством компонентов можно подготовить несколько диаграмм. Дав каждой диаграмме уникальное имя, можно в любой момент с помощью выпадающего списка выбрать нужную.
Страницу диаграмм можно напечатать.