Перечислим опции, находящиеся в пункте меню File (таблица 1):
Опция
Назначение
Опция-заголовок. При ее выборе раскрывается подменю со следующими опциями:
Открывает ранее созданную форму.
Открывает ранее созданный проект.
Вызывает список ранее загружавшихся проектов и форм для выбора и повторной загрузки.
Сохраняет активную форму.
Сохраняет активную форму под другим именем.
Сохраняет файл проекта под другим именем.
Сохраняет файл проекта и все открытые модули.
Закрывает активную форму.
Закрывает проект.
Вставляет в текущую форму ссылку на другой модуль.
Печатает активную форму или модуль.
Прекращает работу Delphi.
Окно репозитория Delphi открывается при выборе File | New | Other и имеет вид, показанный на рисунке 1:
Рис.1. Окно репозитория
На его страницах расположены пиктограммы для выбора прототипов форм, модулей, проектов и экспертов построения форм и проектов. Зависимые переключатели Copy, Inherit и Use определяют режим связи между хранящимся в репозитории прототипом и его копией в проекте:
Ниже кратко описывается методика размещения в репозитории разработанной программистом формы.
Рис.2. Окно регистрации формы в репозитории
Вновь размещенную форму можно сделать главной. Такая форма создается при старте нового проекта (опция главного меню File | New Application). Для определения главной формы выберите опцию Tools | Repository, укажите страницу размещения в левом списке Pages диалогового окна и форму в правом списке Objects, после чего установите флажок в переключателе Main Form. Если установить флажок в переключателе New Form, форма будет создаваться при щелчке по пиктографической кнопке New Form или при выборе опции File | New Form.
Перечислим опции, находящиеся в пункте меню Edit (таблица 2):
Опция
Назначение
Отменяет последнее изменение проекта.
Восстанавливает последнее изменение проекта.
Вырезает выбранный компонент формы или фрагмент
текста и помещает его в буфер Clipboard.
Копирует в Clipboard выделенные компоненты
формы или фрагмент текста модуля.
Извлекает из буфера и переносит компоненты
на форму или копирует текст в модуль (в позицию, указываемую текущим положением
текстового курсора).
Удаляет выделенные компоненты или фрагмент
текста.
Выделяет все компоненты формы или весь текст
модуля.
Привязывает выделенные компоненты к масштабной
сетке так, чтобы их левые верхние углы располагались в ближайших точках
сетки.
Перемещает выделенные компоненты на передний
план.
Перемещает выделенные компоненты на задний
план.
Вызывает окно выравнивания выделенных компонентов (рис.3).
Вызывает окно изменения размеров выделенных
компонентов (рис.4).
Масштабирует выделенные компоненты (рис. 5).
Изменяет порядок обхода компонентов клавишей Tab.
Изменяет порядок создания невизуальных компонентов.
Lock Controls,
Add to interfaceИзменяет свойство BiDiMode для всех или
только для выделенных компонентов Блокирует возможность перемещения компонентов
на форме Определяет новые свойства, методы и события для компонентов ActiveX.
Показанные ниже окна (рис.3-5) обрабатывают группу выделенных на форме компонентов по образу (или относительно) первого выделенного. Чтобы выделить группу компонентов, нужно нажать и удерживать клавишу Shift, после чего щелкать по компонентам левой кнопкой мыши. Каждый отмеченный таким образом компонент выделяется серыми квадратиками по углам его видимых границ. Затем вызываются опции Align, Size или Scale для соответственно выравнивания, изменения размеров или масштабирования компонентов. Другой вариант - не отпуская Shift, щелкнуть правой кнопкой мыши по любому свободному месту формы и выбрать нужную опцию в локальном меню.
Рис.3. Окно выравнивания компонентов
Переключатели этого окна определяют выравнивание всех выделенных компонентов относительно самого первого выделенного компонента (эталона):
Группа переключателей Width (рис.4) регулирует ширину выделенных компонентов, а группа Height - их высоту:
Рис.4. Окно изменения размеров компонентов
С помощью окна Scaling factor вводится коэффициент масштабирования в процентах от текущих размеров (рис.5):
Рис.5. Окно масштабирования компонентов
Перечислим опции, находящиеся в пункте меню Search (таблица 3):
Опция
Назначение
Ищет фрагмент текста и подсвечивает его, если он найден.
Ищет фрагмент текста во всех файлах проекта, или только в открытых файлах.
Ищет и заменяет фрагмент текста во всех файлах текущего каталога.
Повторяет поиск или поиск и замену.
Ищет текст по мере его ввода - сначала первую
букву, затем две первые буквы и т. д..
Перемещает курсор на строку с указанным номером от начала файла.
По адресу ошибки периода прогона программы
отыскивает фрагмент кода, связанный с ней.
Показывает место возникновением определения
символа программы (опция доступна только после успешного прогона программы).
Символом считается любой глобальный идентификатор вашего проекта.
Перечислим опции, находящиеся в пункте меню View (таблица 4):
Опция
Назначение
Показывает окно Менеджера проекта.
Открывает доступ к Менеджеру трансляций.
Показывает окно Инспектора объектов.
Показывает окно Дерева объектов.
Открывает доступ к списку To-Do.
Показывает окно палитры выравнивания компонентов.
Показывает окно браузера объектов.
Показывает спрятанное ранее окно Навигатора кода.
Показывает окно для выбора компонентов.
Показывает окно открытых окон проекта.
Отладочные окна. Эта опция-заголовок открывает
доступ к подменю со следующими опциями:
Управляет конфигурациями основных окон.
Эта опция-заголовок открывает доступ к подменю со следующими опциями:
Переключает активность из окна формы в окно
кода программы и обратно.
Показывает окно со списком модулей.
Показывает окно со списком форм.
Показывает окно библиотеки типов.
Открывает новое окно с кодом текущего модуля.
Показывает окно настроек панелей инструментальных
кнопок:
Отладочные окна подробнее рассматриваются в разделе, посвященном отладке программ. Остальные окна, вызываемые опцией View, описываются ниже.
Центральную часть окна менеджера проекта (рис. 6) занимает список всех связанных с проектом форм.
Рис.6. Окно Менеджера проекта
Кнопка New открывает доступ к репозиторию, чтобы добавить новый модуль к проекту. Кнопка Remove удаляет модуль из проекта. После щелчка правой кнопкой мыши по модулю появляется локальное меню, с помощью которого можно открыть модуль или сохранить его под другим именем.
С помощью менеджера проектов осуществляется компиляция проекта на тот или иной язык локализации. Если для проекта определены языки локализации, в группе проектов помимо исполняемого файла хххх.ехе будут дополнительные проекты с тем же именем, но разными расширениями (по одному проекту на каждый язык локализации). Если, например, язык локализации английский (Великобритания), в группе будет проект xxxx.eng. Сделайте активным нужный проект и вызовите опцию Project | Build хххх (хххх - имя вашего проекта). В результате будет откомпилирован нужный ресурсный файл. После, этого вновь активизируйте проект хххх.ехе, с помощью опции Project | Language | Set Active, укажите язык локализации и вновь откомпилируйте проект. К нему будет подключен нужный ресурсный файл, и ваша программа станет локализованной.
Менеджер трансляций упрощает создание локализованных версий программных продуктов. Он становится доступным только после указания языков, на которые будут переводится текстовые сообщения, надписи, опции и другие текстовые ресурсы программы. Для каждого языка создается своя динамически подключаемая библиотека ресурсов. Изменение этой библиотеки перед компиляцией программы изменяет ее язык.
Для выбора языка (языков) локализации используется опция меню Project | Language. Главным языком программы по умолчанию считается язык локализации Windows, так что если Delphi работает под управлением русскоязычной Windows, главным языком будет русский.
Вкладки менеджера трансляций показаны на рисунке 7:
Рис.7. Вкладки Менеджера трансляций
Для представленного на нем примера главным языком программы является русский, а языком локализации - английский (США).
Список ТО-DO предназначен для координации работы нескольких программистов в рамках одного проекта. Он содержит все комментарии проекта, которые начинаются символами //todo: (рис. 8, 9):
Рис.8. Комментарий для списка TO-DO
Рис.9. Пример списка ТО-DO
Комментарии содержат сообщения руководителя проекта и/или программистов об обнаруженных ошибках и обычно располагаются там, где обнаружена неточность.
После вызова списка ТО-DO переход к нужному комментарию осуществляется двойным щелчком мыщи на соответствующей строке списка.
Программист может сообщить об устранении ошибки, отметив переключатель в левой части строки списка, - в этом случае текст строки выводится перечеркнутым шрифтом.
В списке можно указать приоритет сообщения (колонка "! "), его собственника (Owner) и категорию.
Эти параметры можно задать с помощью соответствующих ключей непосредственно в комментарии (см. рис. 8) или после вызова редактора сообщения в списке (он вызывается после активизации сообщения и нажатия клавиши F2).
Браузер объектов доступен только после успешного прогона программы. Он представляет в наглядной форме используемые в проекте и доступные объекты, позволяя просмотреть их иерархию и входящие в них свойства и методы.
Перечислим опции, находящиеся в пункте меню Project (таблица 5):
Опция
Назначение
Добавляет файл к проекту.
Удаляет файл из проекта.
Импортирует в проект библиотеку типов элементов
ActiveX.
Помещает проект в репозиторий.
Показывает окно с кодом проекта.
Позволяет добавить новый, удалить или сделать
главным один из существующих языков локализации. Имеет следующие опции:
Добавляет программу, DLL или пакет к текущей
проектной группе.
Открывает проект и добавляет его к текущей
проектной группе.
Компилирует модули, которые изменились с
момента предыдущей компиляции проекта.
Компилирует все модули проекта и создает
исполняемую программу.
Проверяет синтаксическую правильность программы.
Показывает информацию о программе.
Компилирует все файлы данной проектной группы,
которые изменились с момента предыдущей компиляции.
Компилирует все файлы данной проектной группы
независимо от того, изменялись ли они или нет с момента последней компиляции.
Устанавливает компонент ActiveX или ActiveForm
на Web-сервере. Вызывается перед компиляцией проекта.
Устанавливает компонент ActiveX или ActiveForm
на Web-сервере. Вызывается после компиляции проекта.
Показывает диалоговое окно установки параметров
проекта.
После выбора Project | Languages | Add вызывается окно эксперта выбора языков локализации проекта (рис. 10):
Рис.10. Окно выбора языков локализации
В нем указывается один или несколько проектов, для которых осуществляется локализация, и главный язык проекта (код $419 соответствует русскому языку). В следующем окне (после щелчка по кнопке Next) вы сможете выбрать языки локализации, отметив их флажками. На следующем шаге эксперт предложит вам указать каталоги размещения библиотек, которые будут содержать локализованные ресурсы. Все библиотеки имеют одинаковое название хххх.drc (хххх - имя проекта), поэтому они должны размещаться в разных каталогах. Для компиляции программы с тем или иным языком локализации используются менеджер проекта и опция Project | Language | Set Active.
Управление опциями проекта осуществляется с помощью диалогового окна, вызываемого опцией Project | Options.
На странице Forms окна опций проекта (рис. 11) указывается главная форма проекта, а также автоматически создаваемые формы (Auto-create forms) и доступные проекту формы (Available forms).
Рис.11. Окно опций проекта
Кнопки между панелями этого окна позволяют переносить формы из одной панели в другую. Переключатель Default разрешает/запрещает использовать текущие установки страницы как умалчиваемые для других проектов.
На странице Application указывается подпись под пиктограммой свернутой программы (Title), сама пиктограмма (Icon) и имя Help-файла (Help file).
На странице Compiler собраны переключатели, управляющие параметрами процесса компиляции. В том числе (в фигурных скобках указана соответствующая директива компилятора):
Страница Linker определяет параметры компоновщика, в том числе:
Страница Directories/Conditionals задает каталоги размещения и условные символы:
На странице Versioninfo сосредоточены параметры управления информацией о версии программы:
Перечислим опции, находящиеся в пункте меню Run (таблица 6):
Опция
Назначение
Компилирует и выполняет программу.
Позволяет присоединиться в режиме отладки
к одному из уже запущенных процессов на другой сетевой машине.
Позволяет задать командную строку запуска программы.
Регистрирует проект в реестре Windows. Опция доступна для ActiveX-проектов.
Удаляет проект из реестра Windows. Опция доступна для ActiveX-проектов.
Регистрирует в проекте объект MTS.
В отладочном режиме выполняет текущую строку
кода и не прослеживает работу вызываемых подпрограмм.
В отладочном режиме выполняет текущую строку
кода и прослеживает работу вызываемых подпрограмм.
Программа выполняется до ближайшего от текущего положения курсора исполняемого оператора.
В отладочном режиме выполняет программу
и останавливается перед выполнением кода в строке с текстовым курсором.
В отладочном режиме выполняет текущую подпрограмму
и останавливается.
Отображает в окне кода оператор, на котором
было прервано выполнение программы.
Приостанавливает прогон отлаживаемой программы.
Прекращает прогон программы и восстанавливает
режим конструирования программы.
Открывает окно проверки текущего значения.
Открывает окно проверки/изменения переменных.
Добавляет переменную или выражение в окно
наблюдения.
Добавляет точку останова.
Перечислим опции, находящиеся в пункте меню Component (таблица 7):
Опция
Назначение
Открывает окно создания компонентов.
Инсталирует компонент в существующий или новый пакет.
Добавляет к проекту библиотеку типов ActiveX-компонентов.
Помещает шаблон в палитру компонентов.
Указывает пакеты, необходимые на этапе конструирования
и прогона программы.
Вызывает диалоговое окно настройки палитры компонентов.
Перечислим опции, находящиеся в пункте меню Database (таблица 8):
Опция
Назначение
Вызывает инструмент исследования баз данных
- Database Explorer или SQL Explorer (в зависимости от версии Delphi).
Вызывает инструмент запросов к БД - SQL Monitor.
Вызывает окно эксперта форм для создания
формы, отображающей наборы данных из удаленных или локальных БД.
Перечислим опции, находящиеся в пункте меню Tools (таблица 9):
Опция
Назначение
Вызывает окно настройки параметров среды
Delphi и ее инструментов.
Вызывает окно настройки параметров редактора Delphi.
Вызывает окно настройки параметров отладчика Delphi.
Диалоговое окно настройки параметров среды вызывается опцией Tools | Environment Options:
Рис.12. Окно настройки параметров среды
Закладка Preferences открывает доступ к параметрам среды Delphi:
Закладка Designer содержит настройки для процесса конструирования форм:
Закладка Object Inspector открывает окно настройки параметров Инспектора объектов:
Закладка Palette предоставляет средства для настройки палитры компонентов: вы может изменять порядок следования компонентов и страниц, переименовывать страницы, добавлять к ним новые компоненты, удалять существующие и т. д.
Закладка Library определяет каталоги размещения библиотек Delphi:
Закладка Explorer позволяет настроить свойства кодового браузера, окно которого обычно "причалено" к окну редактора кода:
Переключатели Initial browser view позволяют выбрать приоритет показа классов, модулей или глобальных определений.
Закладка Type Library служит для управления свойствами редактора библиотеки типов (используется при разработке многозвенных приложений баз данных).
Закладка Environment variables определяет т. н. переменные среды разработки, в том числе тип ОС, положение основных файлов ОС и т. п.
С помощью небольшой странички Delphi Direct можно управлять автоматической связью с сайтом Delphi для обновления информации об этом программном продукте.
Закладка Internet управляет форматами создаваемых файлов для передачи по Интернет (интранет).
Закладка General окна кодового редактора (вызывается Tools | Editor Options) позволяет настроить общие свойства кодового редактора:
Символ
Назначение
В начале строки означает, что искомый образец
должен располагаться с начала строки.
В конце строки означает, что искомый образец
должен располагаться в конце строки.
На этом месте может стоять любой символ.
После символа указывает на любое число этих
символов в этом месте: bо@ означает boo, bo, bot.
После символа указывает на любое число символов,
которые следуют дальше: bо+ означает boo, bonus, bot, но не b или bo.
Выбор одного из выражений - до или после
черты: bar|car выбирает bar или car. На этом месте не должен стоять следующий
символ.
На этом месте должен стоять любой из указанных
в скобках символов: [~bot] означает b, о или t.
На этом месте не должен стоять любой из
указанных в скобках символов: [^bot] означает любой символ, кроме b, о
или t.
Задает диапазон символов. Например [b-o]
- любой символ в диапазоне от b до о включительно.
Определяет вложенный шаблон. Среда допускает
до 10 уровней вложенности.
Отменяет действие стоящего за ним специального
символа.
Закладка Display определяет настройку экрана:
Закладка Color позволяет выбрать цвета для отдельных синтаксических элементов. Эти цвета будут использованы для синтаксического цветовыделения.
Закладка Key Mappings позволяет настроить "горячие" клавиши, используемые в кодовом редакторе для ускорения решения типовых задач.
Закладка Code insight определяет используемые интеллектуальные возможности кодового редактора:
Перечислим опции, находящиеся в пункте меню Help (таблица 11):
Опция
Назначение
Основная справочная служба Delphi.
Справочная служба по инструментам Delphi.
Справочная служба по Windows API.
Домашняя страничка Borland.
Домашняя страничка Delphi.
Страничка поддержки разработчиков.
Окно Интернет-поддержки разработчика.
Вызов службы OpenHelp.
Окно с краткой информацией о Delphi.
Рис.13. Окна справочной службы
Служба OpenHelp предназначена для модификации справочной службы Delphi: с ее помощью можно удалять ненужные разделы и, что наиболее важно, вставлять новые. Последнее связано с тем, что существует множество относительно небольших фирм, занимающихся разработкой и продажей пакетов компонентов для Delphi и C++ Builder (пакеты компонентов для этих двух инструментов идентичны), а также компонентов ActiveX. Сама Delphi имеет развитые средства создания новых компонентов. Поставщики компонентов обычно поставляют вместе с ними нужные файлы справочной помощи, которые OpenHelp может сделать частью справочной службы Delphi.
Служба OpenHelp вызывается опциями Help | Customize главного меню. Ее окно показано на рис. 14:
Рис.14. Окно службы OpenHelp
Четыре закладки этого окна управляют содержанием:
Чтобы удалить раздел содержания, файл справки или проект, нужно на соответствующей закладке щелкнуть по удаляемому компоненту и выбрать в меню Edit | Remove Files или щелкнуть по инструментальной кнопке.
Для добавления к содержанию нового раздела требуется предварительно создать два специальных файла:
Toe-файл, как следует из документации, есть стандартный файл содержания cnt, создаваемый утилитой hcw.exe, за тем отличием, что в нем нельзя использовать секции include. Файл cnt, в свою очередь, отличается от стандартного тем, что в нем должны быть только две директивы: base и title, причем содержимое title у обоих файлов должно быть одинаковым и они должны располагаться в одной папке. После создания файлов вызывается OpenHelp, и на закладке Content щелкается кнопка или вызывается опция Edit | Add Files. В появляющемся вслед за этим диалоговом окне нужно указать положение файла toe.
Для добавления справочного файла (.hlp) выбирается закладка Index, щелкается та же кнопка и указывается положение hlp-файла. Как показывает практика, эти два действия вполне достаточны для нормального подключения к справочной службе новой информации.
Если вы закроете окно OpenHelp, появится запрос - нужно ли обрабатывать внесенные изменения. После утвердительного ответа новый вариант справочной службы будет готов к работе.
Все команды редактора можно разделить на:
Перечислим команды, применяемые для перемещения курсора (таблица 12):
Клавиша(а)
Назначение
На символ влево.
На символ вправо.
На слово влево.
На слово вправо.
На строку вверх.
На строку вниз.
В начало строки.
В конец строки.
В начало экрана.
В конец экрана.
В начало файла.
В конец файла.
На страницу вверх.
На страницу вниз.
В начало блока.
В конец блока.
Клавиша(и)
Назначение
Включить/отключить режим вставки.
Стереть символ справа от курсора.
Вставить строку.
Стереть слово справа от курсора.
Удалить строку.
Стереть остаток строки справа от курсора.
Стереть символ слева от курсора.
Отменить последнее изменение текста.
При подготовке текстов программ часто возникает необходимость перенести фрагмент текста в другое место или удалить его. Для такого рода операций удобно использовать блоки - фрагменты текста, рассматриваемые как единое целое. Длина блока может быть достаточно большой, он может занимать несколько экранных страниц. В каждый момент в одном окне редактора может быть объявлен только один блок. Обмен блоками между окнами возможен только через буфер Clipboard.
Перечислим основные команды работы с блоками (таблица 14):
Клавиша(и)
Назначение
Пометить в качестве блока слово слева от
курсора.
Напечатать блок.
Убрать выделение блока цветом; повторное
использование Ctrl+K+H вновь выделит блок.
Удалить блок.
Читать блок из дискового файла в позицию,
определяемую текстовым курсором.
Записать блок на диск.
Сместить блок вправо на два символа.
Сместить блок влево на два символа.
Вырезать блок и поместить его в Clipboard.
Копировать блок в буфер Clipboard.
Вставить содержимое Clipboard в позицию,
указываемую текстовым курсором.
Клавиша(и)
Назначение
Искать по образцу (продолжить поиск).
Искать по образцу и заменить.
Установить маркер; n = 0..9 (см. ниже).
Искать маркер.
Искать парную скобку (см. ниже).
Вставить настройку компилятора в начало
файла (см. ниже).
Начинает и заканчивает определение макроса.
Выполняет ранее определенный макрос.
Назначение большинства команд понятно без каких-либо комментариев, но некоторые нуждаются в пояснении.
Ctrl+K+n. Устанавливает в текущую позицию курсора маркер с номером n = 0..9. Маркер на экране появляется в виде небольшого окошка с номером маркера в служебном поле слева от текста. Он никак не влияет на исполнение программы. Команда используется совместно с командой Ctrl+Q+n (искать маркер с номером n) для ускорения поиска нужных фрагментов текста при разработке крупных программ. Раз установленный маркер нельзя удалить, но можно его поместить в другое место файла. При записи на диск маркеры не запоминаются, т. е. после чтения файла с диска в нем нет маркеров.
Ctrl+Q+]. Эта команда используется для поиска ближайшей парной скобки. Она позволяет отыскивать пары скобок ( и ), { и }, [ и ]. Подведите курсор так, чтобы он расположился непосредственно перед одной из скобок, и дайте команду - редактор отыщет нужную парную скобку.
Ctrl+0+0. Эта команда заставит редактор поместить в самое начало файла строки, содержащие текущую настройку среды в виде директив компилятора, например:
{$A+,B-,C+,D+,E-,F-,G+,H+,
I+,J+,K-,L+,M-,N+,0+,P+,
Q-,R-,S-,T-,U-,V+,W-,X+,
Y-}
{$MIKSTACKSIZE $00004000}
{$MAXSTACKSIZE $00100000}
{$IMAGEBASE $00400000}
{$APPTYPE GUI}
В окне кода можно запрограммировать часто повторяющиеся манипуляции с клавишами в виде макроса. Для начала указания макроса используется команда Ctri+Shift+R. После этого любые действия программиста с клавиатурой запоминаются вплоть до повторения команды Ctrl+Shift+R. Запомненный макрос исполняется командой Ctrl+Shift+P.
Термин "интеллектуальные возможности" носит условный характер - он обозначает действия, которые редактор выполняет автоматически или по вашей команде и которые существенно упрощают анализ текстов программ, подготовку стандартных программных заготовок, отладку программ.
Если активизировать окно кода и перемещать в нем указатель мыши при нажатой и удерживаемой клавише Ctrl, текст программы приобретает свойства гипертекста: на идентификаторах стандартный указатель мыши заменяется на руку с пальцем, а соответствующий идентификатор выделяется цветом и подчеркиваеся. Если в этот момент нажать левую кнопку мыши, редактор попытается отыскать исходный текст модуля, в котором объявлен соответствующий тип, подпрограмма или глобальная переменная, и, если поиск окажется удачным, загрузит текст модуля в окно кода и установит в нем текстовый курсор в начале описания типа (подпрограммы, переменной). Такого же эффекта можно достичь, если щелкнуть по идентификатору правой кнопкой мыши и выбрать опцию Find Declaration.
Поиск идет в следующем порядке (ниже указаны опции меню и элементы соответствующих окон, содержащие нужные каталоги):
Нельзя искать объявления, если текущий программный модуль еще ни разу не был сохранен на диске.
Если мышь перемещается над идентификатором без нажатой и удерживаемой клавиши Shift, рядом с указателем мыши появляется небольшое окно, в котором сообщается, к какому элементу языка относится идентификатор (к процедуре, функции, переменной и т. д.), а также имя модуля и номер строки в нем, где этот идентификатор впервые описан.
При объявлении новых свойств класса в интерфейсной секции вы можете написать лишь имя свойства и его тип.
После нажатия Ctrl+Shift+C или щелчка правой кнопкой мыши и выбора продолжения Complete Class at Cursor редактор добавит необходимые элементы Read и Write в описание свойства и внесет другие изменения в текст программы.
Пусть, например, вы написали:
type TMyButton = class(TButton) property Size: Integer; procedure DoSomething; end;
и нажали Ctrl+Shift+C (текстовый курсор при этом должен находиться в любом месте внутри описания класса). Редактор изменит описание класса следующим образом:
type TMyButton = class(TButton) property Size: Integer read FSize write SetSize; procedure DoSomething; private FSize: Integer; procedure SetSize(const Value: Integer); end;
{ TMyButton } procedure TMyButton.DoSomething; begin end; procedure TMyButton.SetSize(const Value: Integer); begin FSize := Value; end;
Вы можете также вставить в раздел implementation новый метод класса и нажать Ctrl+Shift+C - редактор вставит прототип метода в объявление класса в секции interface.
Клавиши курсора вверх (Up) и вниз (Down) в сочетании с нажатыми и удерживаемыми клавишами Ctrl и Shift осуществляют переключение между секциями interface и implementation текущего модуля. Если в секции interface вас заинтересовала реализация того или иного метода, щелкните по нему мышью и нажмите Ctrl+Shift+Down - редактор отыщет реализацию и покажет ее вам. Наоборот, чтобы из секции implementation переместиться к заголовку метода в секции interface, нажмите Ctrl+Shift+Up.
Редактор может вставлять в текст множество текстовых заготовок, позволяющих сэкономить время ввода кода программы.
Просмотреть имеющиеся текстовые заготовки и при необходимости добавить к ним собственные можно с помощью Tools | Editor Options | Code Insight.
В средней части окна (рис.15) с помощью списка Templates можно выбрать имя и краткое описание образца, а в окне Code увидеть и при желании отредактировать соответствующую текстовую заготовку.
Рис.15. Окно настройки параметров Code Insight
С помощью кнопки Add можно добавить новый образец, с помощью Edit - изменить его имя и краткое описание, а с помощью Delete - удалить его.
При редактировании имеющейся или вставки новой заготовки учтите, что символ "|" определяет позицию текстового курсора после вставки заготовки в текст программы.
Для вставки заготовки напечатайте ее имя в окне кода и нажмите Ctrl+J - имя заменится на полный текст заготовки.
Если вы не помните всех имен заготовок, их можно выбрать из списка. Для этого установите текстовый курсор в то место, где вы хотите вставить заготовку, и нажмите Ctrl+J - на экране появится окно с именами и краткими описаниями всех заготовок.
Остальные элементы окна Code Insight:
Рис.16. Окна Code Insight
В Delphi имеется мощный встроенный отладчик, значительно упрощающий отладку программ. Основными инструментами отладки являются точки контрольного останова и окно наблюдения за переменными.
Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прервет свою работу и управление будет передано среде Delphi. Точка останова задается с помощью опции View | Debug windows | Breakponts.
Окно точек останова (рис.17) содержит список всех установленных в проекте точек, перед выполнением которых происходит прекращение работы программы и управление получает среда Delphi.
Рис.17. Окно точек останова
Для добавления новой точки следует щелкнуть по окну правой кнопкой мыши и выбрать опцию Add. В этом случае появляется окно, с помощью которого можно указать положение добавляемой точки (рис.18):
Рис.18. Окно добавления новой точки останова
Наблюдать за состоянием переменной или выражения можно с помощью специального окна, вызываемого опцией View | Debug Windows | Watches.
Окно наблюдения (рис.19) используется в отладочном режиме для наблюдения за изменением значений выражений, помещенных в это окно. Для добавления нового выражения щелкните по окну правой кнопкой мыши и выберите опцию New Watch:
Рис.19. Окно наблюдения и окно добавления в него нового выражения
В последних версиях Delphi вы можете просмотреть в отладочном режиме текущее значение любой переменной, если укажите на нее курсором: значение появится в ярлычке рядом с курсором.
Если программа запущена из среды Delphi, ее работу можно прервать в любой момент с помощью клавиш Ctrl+F2, опцией Run | Program Pause или, наконец, установив точку контрольного останова в той части программы, которая выполняется в данный момент или будет выполнена.
Перед исполнением оператора, в котором установлена точка контрольного останова, работа программы будет прервана, управление получит среда Delphi, a в окне наблюдения отразится текущее значение наблюдаемых переменных и/или выражений. Теперь программист может прослеживать работу программы по шагам с помощью клавиш F7 и F8 или инструментальных кнопок.
При нажатии F8 будут выполнены запрограммированные в текущей строке действия, и работа программы прервется перед выполнением следующей строки текста программы. Заметим, что контрольная точка останова выделяется по умолчанию красным цветом, а текущая прослеживаемая строка - синим. Если программа остановлена в контрольной точке, т.е. когда текущая строка совпадает со строкой останова, строка выделяется красным цветом, Признаком текущей строки является особое выделение строки в служебной зоне слева в окне редактора:
Рис.20. Фрагмент окна редактора в режиме отладки
Кстати, чтобы установить/снять точку контрольного останова, достаточно щелкнуть мышью по служебной зоне слева от нужной строки или установить в эту строку текстовый курсор и нажать F5.
При нажатии F7 среда выполняет те же действия, что и при нажатии F8, однако, если в текущей строке содержится вызов подпрограммы пользователя, программа прервет свою работу перед выполнением первого исполняемого оператора этой подпрограммы, т.е. клавиша F7 позволяет прослеживать работу вызываемых подпрограмм.
После трассировки нужного фрагмента программы можно продолжить нормальную ее работу, нажав клавишу F9.
В Delphi 5 и 6 с любой точкой можно связать одно или несколько действий. Для этого нужно активизировать окно точек останова, вызвать его локальное меню (щелчок правой кнопкой) и выбрать продолжение Properties. В появившемся окне свойств щелкнуть по кнопке Advanced (рис.21).
Рис.21. Окно связывания точки останова с действием
В нижней части окна имеется панель Actions, с помощью которой и определяются действия для точки останова, указанной в верхней части окна:
В Delphi 5 и 6 имеется возможность объединения точек останова в группы. Для этого используется все то же окно рис.21: в строке Group следует указать имя группы, к которой принадлежит точка, а в строках Enable Group и Disable Group соответственно разрешить или запретить действие всех точек останова, относящихся к соответствующей группе.
С помощью окна Evaluate/Modify (рис.22) можно узнать значение любого выражения или установить в переменную другое значение. Это окно вызывается в режиме отладки после нажатия Ctrl+F7:
Рис.22. Окно прослеживания изменения значениий
Это окно - модальное, т. е. оно прерывает отладку программы до тех пор, пока не будет закрыто. В строке Expression можно написать имя переменной или интересующее вас выражение. После щелчка по кнопке Evaluate в поле Result появится текущее значение переменной (выражения). Если в Expression содержится имя переменной, одновременно становится доступной кнопка Modify, а в строке New value повторяется текущее значение переменной. Если изменить эту строку и нажать Modify, в переменную будет помещено новое значение, которое и будет использоваться при дальнейшем прогоне программы (если определяется значение выражения, кнопка Modify и строка New value будут недоступны).
В Delphi 5 и 6 используются также дополнительные кнопки этого окна Watch и Inspect. Если вы щелкните по первой из них, выражение (переменная) из окна Evaluate будет перенесено в окно наблюдений Watch, щелчок по второй отображает выражение (переменную) в специальном окне Inspect.
В ряде случаев бывает неудобно или невозможно пользоваться пошаговой отладкой программ. Если вы, например, установите точку останова в подпрограмме прорисовки сетки TDBGrid, программа после останова не сможет нормально продолжить свою работу, т. к. в этом случае она будет пытаться восстановить экран и вновь будет остановлена и т. д. В таких ситуациях вам могут помочь контрольные точки, которые не прерывают работу программы, а лишь помещают некоторую информацию в специальный файл трассировки. Для реализации такой точки раскройте окно Run | Add Breakpoint | Source Breakpoint, уберите флажок в переключателе Break и напишите сообщение в строке Log message. Вы можете также в строке Eval expression указать некоторое выражение, которое будет вычислено и вместе с сообщением помещено в протокол работы программы. Этот протокол можно просмотреть в любой момент (в том числе и после завершения прогона программы) с помощью опции View | Debug Windows | Event Log.