- •Программирование.
- •Формальные параметры – это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.
- •6. Описание функции содержит ее имя, тип возвращаемого значения (если оно есть) и число и типы параметров, которые должны задаваться при вызове функции. Например:
- •7.Рекурсия в программировании
- •8. Описание файлов
- •1. Если размер записи не указан, подразумевается 128 байт (по умолчанию).
- •2. Обычно размер записи равен размеру кластера на устройстве (для дискет - 512 байт) или 1 байт.
- •Var f1: file of double; buf: double; II: byte;
- •14.2.1. Управление файлами
- •14.2.2. Последовательный ввод-вывода
- •14.2.3. Спецификация пакета последовательного ввода-вывода
- •14.2.4. Прямой ввод-вывод
- •14.2.5. Спецификация пакета прямого ввода-вывода
- •13. Абстракция
- •21. Редактор кода и текста
- •Visual Studio 2010
- •36. Размещение и настройка компонентов на форме
21. Редактор кода и текста
Visual Studio 2010
Другие версии
Visual Studio 2008
1 из 1 оценили этот материал как полезный - Оценить эту тему
Редактор — это текстовый процессор интегрированной среды разработки (IDE).При использовании для редактирования текста он называется текстовым редактором.При использовании для редактирования исходного кода на языке разработки Visual Studio (это наиболее распространенное использование) – используется термин "редактор кода".
Можно открыть несколько редакторов кода и просматривать код в различных формах или модулях, а также выполнять копирование и вставлять фрагменты из одного редактора кода в другой.В следующей таблице показаны различные способы открытия редактора кода.
Открытие редактора кода из |
Сделайте следующее |
Обозреватель решений |
Дважды щелкните форму или модуль или выберите его и нажмите кнопку Просмотреть код. |
Форма Windows Forms или веб-форма |
Выберите форму или любые ее элементы управления и затем в меню Вид выберите команду Код.Также можно щелкнуть форму правой кнопкой мыши и выбрать команду Просмотреть код.Во многих случаях при двойном щелчке компонента в рабочей области конструирования также открывается редактор кода. |
Меню Файл |
Для отображения файла кода выберите Создать или Открыть. |
Список всех открытых документов для редактирования в экземплярах редактора кода доступен в меню Windows.В этом редакторе также реализованы возможности среды IDE для конструктора HTML, редактора CSS и редактора XML.
Для большинства языков разработки редактор кода предлагает следующие возможности:
Доступ к свойствам объектов, методам и событиям во время разработки.
Завершение операторов IntelliSense.
Сворачиваемые разделы кода.
В окне определения кода выводится исходный код для объекта или элемента.
Вставка фрагментов кода позволяет добавлять готовые блоки модели кода.
Параметры определения отступов, табуляции и поведения перетаскивания.
Кодовые страницы Юникод.
Список
элементов пользовательского интерфейса
Панель кода
Область с кодом или текстом для редактирования.Панель кода обеспечивает возможность завершения операторов IntelliSense для языка разработки.Дополнительные сведения см. в разделе Использование технологии IntelliSense.
Поле индикаторов
Серый столбец в левой части редактора кода, в котором отображаются индикаторы на полях (например, точки останова, закладки и ярлыки).Если щелкнуть эту область, то в соответствующей строке кода будет задана точка останова.
Поле структуры
Столбец между полем индикаторов и окном редактирования, при щелчке на котором производится выделение строк текста.Изменения в коде отслеживаются здесь, если в диалоговом окне Параметры выбран параметр Отслеживать изменения.Дополнительные сведения см. в разделе Страница "Общие", папка "Текстовый редактор", диалоговое окно "Параметры".
Горизонтальные и вертикальные полосы прокрутки
Позволяют выполнять горизонтальную и вертикальную прокрутку области кода, чтобы просмотреть код, выходящий за пределы видимой области кода.
Содержание раздела
Автоматическая проверка парности фигурных скобок
В этом разделе описаны оперативные сведения о некорректно поставленных квадратных скобках или открытых/закрытых сегментах кода.
Практическое руководство. Использование выделения ссылок
Описание способа выделения одним щелчком мыши всех экземпляров одного символа.А также описание способа перемещения между выделенными символами.
Окно "Закладки"
Позволяет помечать строки в коде и переходить к ним.
Окно определения кода
Отображается определение знака, выбранного к окне редактирования.
выбор фрагмента кода
Позволяет вставлять сегменты кода, хранящиеся в папках фрагментов кода.
Диспетчер фрагментов кода
Позволяет назначить папки, в которых выполняется поиск фрагментов.
Связанные разделы
Редактирование текста, кода и разметки
Содержит ссылки на разделы о настройке и использовании редактора кода.
Настройка редактора
Руководство о том, как задать параметры редактора текста.
Страница "Общие", папка "Текстовый редактор", диалоговое окно "Параметры"
Позволяет задавать размер отступа и табуляции, параметры перетаскивания и эмуляции редактора, а также указывать, отображаются ли поля и полосы прокрутки редактора.
Страница "Общие", папка "Все языки", папка "Текстовый редактор", диалоговое окно "Параметры"
Позволяет установить параметры, которые применяются для всех языков разработки.
Практическое руководство. Управление фрагментами кода
Описание способов вставки готовых фрагментов кода и управления папками, в которых хранятся фрагменты кода.
Команды и функции для повышения удобства работы в редакторах
Описывает способы работы с текстом и кодом в редакторе.
Поиск и замена
Описание способов использования окна Поиск и замена и связанных средств поиска.
Установка закладок в коде
Описание способов пометки конкретных строк кода и перехода к ним.
Вспомогательные средства кодирования
Описывает средства для добавления и настройки элементов управления и перемещения по иерархиям объектов.
22. Если вам часто приходится заниматься ремонтом какой-либо вышедшей из строя техники, то вы знаете, как приятно всегда иметь под рукой нужный винт, болт или гайку. Легко представить радость создания программ с помощью Delphi: вам не придется бегать в скобяную лавку за каждой мелочью! Палитра компонентов (component palette) будет для вас ящиком с деталями, а мышь — единственным необходимым инструментом. Основная палитра компонентов Delphi имеет двенадцать страниц. Standard. Большинство компонентов на этой странице являются аналогами экранных элементов самой Windows. Меню, кнопки, полосы прокрутки — здесь есть все. Но компоненты Delphi обладают также некоторыми удобными дополнительными встроенными возможностям. Additional. Эта страница содержит более развитые компоненты. Например, компонент Outline удобен для отображения информации с иерархической структурой, а удивительный MediaPlayer позволит вашим программам воспроизводить звук, музыку и видео. Данная страница также содержит компоненты, главное назначение которых — отображение графической информации. Компонент Image загружает и отображает растровые изображения, а компонент Shape, украсит ваши формы окружностями, квадратами и т.д.
System. Поскольку не каждая потребность, связанная с обработкой файлов, может быть удовлетворена с помощью стандартных диалоговых окон, страница System предоставляет возможность комбинировать отдельные элементы, такие как списки дисков, каталогов и файлов. Страница System также содержит компоненты, обрабатывающие обмен высокого уровня между программами посредством OLE (Object Linking and Embedding). А компонент Timer может генерировать события через определенные, заранее установленные промежутки времени.
Win32. Эта страница содержит компоненты, позволяющие созданным с помощью Delphi программам использовать такие нововведения в пользовательском интерфейсе 32-разрядной Windows, как просмотр древовидных структур, просмотр списков, панель состояния, присутствующая в интерфейсе программы Windows Explorer (Проводник), расширенный текстовый редактор и др.
Dialogs. Windows 3.1 ввела в употребление стандартные диалоговые окна для операций над файлами, выбора шрифтов, цветов и т.д. Однако для использования их в обычной программе Windows может потребоваться написать немало вспомогательного кода. Страница , Dialogs предоставляет программам Delphi простой доступ к этим стандартным диалоговым окнам.
Data Access и Data Controls. Delphi использует механизм баз данных компании Borland (Borland Database Engine, BDE) для организации доступа к файлам баз данных различных форматов. Компоненты этих двух страниц облегчают программам Delphi использование сервиса баз данных, предоставляемого BDE, например многопользовательского считывания, записи, индексации и выдачи запросов для таблиц dBASE и Paradox.
С использованием этих компонентов создание программы просмотра и редактирования базы данных почти не требует программирования.
Win 3.1. На этой странице, как в сибирской ссылке, находятся компоненты Delphi 1.0, возможности которых перекрываются аналогичными компонентами Windows 95.
Internet. Эта страница предоставляет компоненты для разработки приложений, позволяющих создавать HTML-файлы непосредственно из файлов баз данных и других типов, взаимодействующих с другими приложениями для Internet. Delphi 4 дает вам возможность создавать приложения для Web-сервера в виде DLL-файлов : (Dynamic Link Library — Динамически компонуемая библиотека), способных содержать невизуальные компоненты. С помощью компонентов страницы Internet довольно просто создавать обработчики событий для обращения к определенному URL (Uniform Resource Locator — Унифицированный локатор ресурса), представлению документов в HTML-формате и пересылки их клиент-программе.
Samples. Эта отличающаяся полнотой страница содержит компоненты, которые не встроены в Delphi, но демонстрируют мощь системы компонентов. Для этих компонентов нет встроенной интерактивной справки.Все же они не менее полезны, чем компоненты с других страниц.
ActiveX. Эта страница содержит компоненты ActiveX, разработанные независимыми производителями программного обеспечения: сетка, диаграмма, средство проверки правописания.
QReport. Эта страница предоставляет компоненты баз данных. Здесь содержатся особые версии надписей, полей, примечаний и других элементов управления.
Midas и Decision Cube. Здесь собраны компоненты для доступа к удаленным серверам и осуществления SQL – запросов.
Размещение компонентов Размещать компоненты на форме очень просто. Требуется только щелкнуть на нужной вкладке палитры компонентов, затем на кнопке с пиктограммой соответствующего компонента и после этого щелкнуть в окне формы. Все! Или, если вам так больше нравится, можно щелкнуть на компоненте, а затем нарисовать прямоугольник с помощью мыши на форме — компонент появится внутри этого прямоугольника. Если размеры компонента поддаются изменению, при появлении на форме он заполнит собой прямоугольник. Если вы забыли, на какой странице расположен конкретный компонент, выберите пункт Component List (Компоненты) из меню View (Вид), и на экране появится список компонентов в алфавитном порядке. Если щелкнуть на компоненте в палитре компонентов, его кнопка окажется нажатой. Если щелкнуть на другом компоненте, первая кнопка вернется в исходное состояние — только один компонент может быть выбран в один момент времени. Для того чтобы все кнопки оказались в исходном состоянии и было восстановлено нормальное использование мыши, следует щелкнуть на кнопке со стрелкой выбора, которая появляется с левой стороны каждой страницы палитры (рис. 4.1). Рис. 4.1. Для того чтобы после добавления компонентов восстановить нормальное функционирование мыши, следует щелкнуть на кнопке со стрелкой выбора
Выберите страницу Standard палитры компонентов.
Поместите указатель мыши на компонент с изображением кнопки ОК. После того как мышь побудет в недвижимом состоянии секунду или две, появится поле помощи, идентифицирующее этот компонент как Button (см. рис. 4.1).
Щелкните на кнопке, затем щелкните на вашей форме. Появится кнопка среднего размера, озаглавленная Button 1.
Щелкните на компоненте Button опять, но на этот раз, удерживая ле-вую кнопку мыши, нарисуйте прямоугольник большого размера прямо на форме. Текст Button2 заполнит прямоугольник. Обратите внимание, что кнопка имеет небольшие квадратные маркеры (угловые и боковые), позволяющие изменять размер. Используйте их, чтобы с помощью мыши изменить размер кнопки.
Теперь щелкните на кнопке Button 1 и перетащите ее в новое место.
Вы заметите, что при перемещении и изменении размера компоненты выравниваются по точкам координатной сетки формы. Как правило, это хорошо — такая возможность помогает поддерживать порядок в формах. Если вы захотите отменить эту возможность или изменить плотность точек координатной сетки, выберите пункт Options из меню Tools. Первая страница параметров предназначена для настройки пользователем параметров среды. На этой странице имеется группа Form designer (Конструктор форм), флажки опций Display grid (Отображение сетки) и Snap to grid (Привязка к сетке) которой определяют, видна ли координатная сетка и активна ли она. Можно также изменить значения параметров Grid Size X (Шаг по оси X) и Grid Size Y (Шаг по оси Y), что приведет к изменению шага координатной сетки по горизонтали и вертикали, соответственно.
Совет: Для лучшего управления размещением и размерами своих компонентов попробуйте следующее. Установите значение шага координатной сетки равным 4 вместо 8, отключите изображение координатной сетки, но оставьте включенным параметр Snap To grid.
Невидимые компоненты Не каждый компонент виден на форме во время запуска программы. Например, размещение на форме компонента MainMenu приводит к появлению в разра-батываемом приложении меню, но соответствующая пиктограмма во время запуска программы не отображается. Компоненты, представляющие диалоговые окна общего назначения, вообше никак не визуализируются во время работы программы. Размеры невидимого компонента в процессе разработки не изменяются — он всегда отображается в виде пиктограммы.
23. Инспектор объектов предназначен для редактирования свойств объектов (форм и визуальных компонентов) во время разработки программы. С его помощью можно установить начальные свойства объектов и назначить обрабатываемые события. Рассмотрим окно инспектора объектов (рис. 1).
рис.1
В верхней части окна инспектора находится поле выбора объектов, в котором отображается название выбранного объекта. Для выбора нового объекта необходимо открыть автоматически раскрывающийся выпадающий список щелчком левой кнопки мыши по кнопке со стрелкой, затем выбрать необходимый объект из списка. После этого можно редактировать свойства выбранного объекта. Второй способ выбора объекта заключается в том, что производится щелчок левой кнопкой мыши по самому объекту. Третий способ выбора объекта состоит в том, что производится щелчок левой кнопкой мыши по названию объекта в окне просмотра дерева объектов Object Tree View (рис. 2).
рис.2
Ниже поля выбора объектов находятся кнопки закладок свойств Properties и событий Events . На закладке Properties располагаются все нескрытые свойства выбранною объекта. Закладка состоит из двух полей. В левом поле отображается название свойств, а в правом — их значение. Свойства могут быть вложенными с обозначением в виде плюса в квадратике левее названия свойства. Для их раскрытия и редактирования необходимо щелкнуть левой кнопкой мыши по этому значку» а затем по самому свойству. Если свойств много, их можно просматривать с помощью кнопки прокрутки. Например, свойство Caption отражает заголовок объекта, а свойство Name — имя объекта. На закладке Events располагаются события, на которые может реагировать объект. Эта закладка позволяет связать объект с событиями, происходящими в момент выполнения программы. Закладка Events так же разделена на два поля. В левом поле отображается название событий, на которые может реагировать объект, а в правом — название методов их об работки, или, проще, функций подпрограмм обработки. Для создания обработчика необходимо выполнить двойной щелчок левой кнопкой мыши в правом поле напротив названия выбранного события. При этом появится окно редактора кода, в котором автоматически создается заготовка текста программы обработчика события. Между фигурными скобками заготовки разработчиком дописывается программа обработки событий. В результате при возникновении событии для выбранного объекта будет выполниться данная программа. Например, событие OnClick означает щелчок левой кнопкой мыши по объекту.
24.—
25. файл проекта (.dbr) это текстовый файл используется для хранения информации о формах и модулях. В нем содержатся операторы инициализации и запуска программы на выполнение.
файл модуля (.pas) соответствующий файл модуль для хранения кода.
файл формы (.dfm) – это двоичный файл, который создается для хранения информации о ваших формах и фреймах.
файл опций проекта (.dof) - в нем хранится установки опций проекта.
файл конфигурации проекта (.cfg) в нем хранятся установки проекта.
файл ресурсов (.res) содержит пиктограмму и прочие ресурсы.
файл группы файлов (.bpg) для создания групп файлов.
резервные копии (~dp,~df,~pa).
26. Таблица 1.3
Тип Delphi |
Тип BCB |
Диапазон |
Формат |
Целые числа |
|||
ShortInt |
signed char |
от -128 до 127 |
8 бит со знаком |
Byte |
unsigned char |
от 0 до 255 |
8 бит без знака |
SmallInt |
short |
от -32768 до 32767 |
16 бит со знаком |
Word |
unsigned short |
от 0 до 65567 |
16 бит без знака |
Integer, Longint |
integer, long |
от -2147483648 до 2147483647 |
32 бита со знаком |
Cardinal |
unsigned int |
от 0 до 4294967295 |
32 бита без знака |
Int64 |
int64 |
от -263 до 263-1 |
64 бита со знаком |
Currency |
Currency |
от -922337203685477.5808 до + 922337203685477.5807 |
64 бита со знаком (*10-4) |
Вещественные числа |
|||
Single, Real |
float |
от -3.4*1038до-1.4*10-45 , 0 и от 1.4*10-45 до 3.4*1038 |
32 бита, пл. зпт. |
Double |
double |
от -1.8*10308 до -4.9*10-324, 0 и от 4.9*10-324 до 1.8*10308 |
64 бита, пл. зпт. |
Comp |
Comp |
от -263 до 263-1 |
64 бита, пл.зпт. |
Extended |
long double |
от -1.1*104932 до -3.4*10-4932, 0 и от 3.4*10-4932 до 1.1*104932 |
80 бит, пл. зпт. |
Логические данные |
|||
Boolean |
bool |
true или false |
8 бит |
ByteBool |
unsigned char |
true/false или целое без знака |
8 бит |
WordBool |
|
true/false или целое без знака |
16 бит |
LongBool |
BOOL |
true/false или целое без знака |
32 бита |
Символьные (строковые) данные |
|||
Char, AnsiChar |
char |
8-битовый символ |
8 бит |
WideChar |
wchar_t |
16-битовый символ (Unicode) |
16 бит |
String[n] |
SmallString<n> |
строка до 255 символов |
|
String, AnsiString |
AnsiString |
длинная строка до 2 Гбайт |
|
PChar |
unsigned char * |
указатель на строку |
32 бита |
Указатель без типа |
|||
Pointer |
void * |
|
32 бита |
Календарные даты и время |
|||
TDateTime |
TDateTime |
|
64 бита |
27. Успешное завершение процесса компиляции не означает, что в программе нет ошибок. Убедиться, что программа работает правильно можно только в процессе проверки ее работоспособности, который называется тестирование.
Обычно программа редко сразу начинает работать так, как надо, или работает правильно только на некотором ограниченном наборе исходных данных. Это свидетельствует о том, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой.
28. Трассировка программы во многом аналогичная ее выполнению по
шагам. Единственное исключение состоит в том, что когда встреча-
ется оператор вызова процедуры или функции, при трассировке эти
процедуры и функции также выполняются по шагам, а при простом вы-
полнении по шагам управление возвращается вам после завершения
выполнения подпрограммы.
29. Ошибки, которые могут быть в программе, принято делить на три группы:
синтаксические;
ошибки времени выполнения;
алгоритмические.
Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.
Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.
При возникновении ошибки в программе, запущенной из Delphi, среда разработки прерывает работу программы, о чем свидетельствует заключенное в скобки слово Stopped в заголовке главного окна Delphi, и на экране появляется диалоговое окно, которое содержит сообщение об ошибке и информацию о типе (классе) ошибки. На рис. 13.1 приведен пример сообщения об ошибке, возникающей при попытке открыть несуществующий файл.
После возникновения ошибки программист может либо прервать выполнение программы, для этого надо из меню Run выбрать команду Program Reset, либо продолжить ее выполнение, например, по шагам (для этого из меню Run надо выбрать команду Step), наблюдая результат выполнения каждой инструкции.
30. Базовые классы VCL
Все классы библиотеки визуальных компонентов (VCL) произошли от группы базовых классов, которые лежат в основе иерархии. Самый общий предок компонентов — это класс TObject, инкапсулирующий простейший объект. Как известно (см. гл. 1), каждый объект наследует свойства и методы родительского класса. К объекту можно добавить новые свойства и методы, но нельзя удалить унаследованные. Объект-наследник в свою очередь может стать родительским для нового класса, который унаследует возможности всех своих предков.
Поэтому иерархия базовых классов VCL продумана чрезвычайно тщательно — ведь на их основе создано все множество компонентов. Особое место среди базовых классов, помимо TObject, занимают TComponent (от него происходят все компоненты) и TControl (от него происходят все элементы управления).
В этой главе рассматриваются иерархия базовых классов и их возможности. Представленные здесь сведения помогут разобраться с основными механизмами функционирования компонентов. Также глава послужит справочным материалом для тех, кто создает собственные объекты и элементы управления.
Иерархия базовых классов
В основе всего многообразия классов и компонентов, используемых в Delphi, лежат всего лишь несколько базовых классов (рис. 2.1). Благодаря механизму наследования свойств и методов, потомки базовых классов умеют "общаться" друг с другом, работают в среде разработки, взаимодействуя с Палитрой компонентов и Инспектором объектов, распознаются операционной системой как элементы управления и окна.
В основе иерархии классов лежит класс TObject. Он обеспечивает выполнение важнейших функций "жизнедеятельности" любого объекта. Благодаря ему каждый класс получает в наследство механизмы создания экземпляра объекта и его уничтожения.
Класс Tpersistent происходит непосредственно от класса TObject. Он обеспечивает своих потомков возможностью взаимодействовать с другими объектами.
Класс TComponent является важнейшим для всех компонентов. Непосредственно от него можно создавать любые невизуальные компоненты. Механиз-
мы, реализованные в классе TComponent, обеспечивают взаимодействие компонента со средой разработки, главным образом с Палитрой компонентов и Инспектором объектов. Благодаря возможностям этого класса компоненты начинают "работать" уже во время разработки проекта.
Рис. 2.1. Иерархия базовых классов VCL
Класс TControl происходит от класса TComponent. Его основное назначение — обеспечить функционирование визуальных компонентов.
Класс TwinControl расширяет возможности разработчиков по созданию элементов управления. Он наследует от TControl и обеспечивает создание оконных элементов управления. На уровне TwinControl обеспечивается взаимодействие с GUI (Graphic User Interface — Графический Интерфейс Пользователя).
На основе класса TwinControl создан еще один дополнительный класс — TCustomControl. Он обеспечивает создаваемые на его основе компоненты возможностями по использованию канвы — специального объекта, предназначенного для рисования графики (подробнее о канве см. гл. 8).
Ниже мы остановимся на основных свойствах и методах базовых классов, выделяя только те, которые могут пригодиться в реальной работе. Часть из них опубликована и доступна в Инспекторе объектов, часть может быть установлена и использована только в программном коде.
31. Класс TObject является родоначальником всей иерархии использующихся в Delphi классов VCL. Он реализует функции, которые обязательно будет выполнять любой объект, который может быть создан в среде разработки. Учитывая гигантское разнообразие возможных областей применения объектов в процессе создания приложений, можно сказать, что круг общих для всех классов операций весьма невелик.
В первую очередь — это создание экземпляра объекта и его уничтожение. Любой объект выполняет эти две операции в обязательном порядке. Процесс создания объекта включает выделение области адресного пространства, установку указателя на экземпляр объекта, задание начальных значений свойств и выполнение установочных действий, связанных с назначением объекта. В общем случае две последние операции могут не выполняться.
Указатель на экземпляр объекта передается в переменную объектного типа, которая в дальнейшем будет идентифицировать объект в программном коде приложения. В приведенном выше фрагменте кода переменная объектного типа someList объявлена как экземпляр типа TStrings. При создании экземпляра этого типа конструктор Create возвращает в переменную SomeList указатель на выделенную для нового объекта область памяти. Для этого применяется метод Newinstance, который вызывается в конструкторе автоматически:
Code: |
class function Newinstance: TObject; virtual; |
Объект класса TObject обеспечивает выполнение этого процесса для любого порожденного от него объекта. А уже внутри конструктора, который унаследован от класса TObject, можно предусмотреть инициализацию переменных и выполнение дополнительных операций. Объявление конструктора выглядит следующим образом:
Code: |
constructor Create; |
В конструкторах потомков это объявление может перекрываться, но при необходимости вызвать конструктор предка используется оператор inherited:
Code: |
constructor TSomeObject.Create; begin inherited Create; ... end; |
Для уничтожения экземпляра объекта в классе TObject предназначены методы Destroy и Free:
Code: |
destructor Destroy; virtual; procedure Free; |
Как видно из объявления, настоящим деструктором является метод Destroy. Он обеспечивает освобождение всех занимаемых экземпляром объекта ресурсов. Обычно при создании новых классов деструктор всегда перекрывается для того, чтобы корректно завершить работу с данными.
Примечание
Обратите внимание, что обычно унаследованный конструктор вызывается в первую очередь. Это необходимо для того, чтобы выполнить все нужные операции при создании объекта до инициализации его собственных свойств. При уничтожении объекта обычно сначала выполняются завершающие операции и только в самом конце вызывается унаследованный деструктор, чтобы выполнить собственно уничтожение объекта.
При уничтожении объектов рекомендуется вместо деструктора использовать метод Free, который просто вызывает деструктор, но перед этим проверяет, чтобы указатель на экземпляр объекта был не пустым (не был равен Nil). Это позволяет избежать серьезных ошибок.
Если объект является владельцем других объектов (например, форма владеет всеми размещенными на ней компонентами), то его метод Free автоматически вызовет эти же методы для всех объектов. Поэтому при закрытии формы разработчик избавлен от необходимости заботиться об уничтожении всех компонентов.
Для освобождения занимаемой объектом памяти деструктор автоматически Вызывает метод Freelnstance:
Code: |
procedure Freelnstance; virtual; |
Каждый объект должен содержать некоторую информацию о себе, которая используется приложением и средой разработки. Поэтому класс TObject содержит ряд методов, обеспечивающих представление этой информации в потомках.
Code: |
class function Classlnfo: Pointer; |
возвращает указатель на таблицу информации времени выполнения (RTTI). Эта информация используется в среде разработки и в приложении.
Code: |
class function ClassName: ShortString; |
возвращает имя типа объекта, которое может быть использовано для идентификации. Например, один метод-обработчик щелчка на кнопке может работать с несколькими типами компонентов кнопок:
Code: |
procedure TForml.BitBtnlClick(Sender: TObject); begin if Sender is TBitBtn then TBitBtn(Sender).Enabled := False; if Sender is TSpeedButton then TSpeedButton(Sender).Down := True; end; |
Метод
Code: |
class function ClassNamels(const Name: string): Boolean; |
позволяет определить, является ли данный объект того типа, имя которого передано в параметре Name. В случае положительного ответа функция возвращает True.
Как известно, программирование для Windows основано на событиях. Каждое приложение и каждый программный объект должны уметь реагировать на сообщение о событиях и, в свою очередь, рассылать сообщения. В выполнении этих операций заключается третья общая для всех объектов функция.
Метод
Code: |
procedure Dispatch(var Message); virtual; |
осуществляет обработку сообщений, поступающих объекту. Он определяет, сможет ли объект обработать сообщение при помощи собственных обработчиков событий. В случае отсутствия таких методов сообщение передается аналогичному методу Dispatch класса-предка (если он есть).
Класс TObject имеет предопределенный обработчик событий:
Code: |
procedure DefaultHandler(var Message); virtual; |
Кроме рассмотренных здесь методов, класс TObject имеет еще несколько методов, которые в основном применяются для взаимодействия объекта со средой разработки.
В целом класс TObject может служить для создания на его основе некоторых простых классов для использования в приложениях.
32.-
33. СТРАНИЦА STANDARD
На странице Standard палитры компонентов сосредоточены стандартные для Windows интерфейсные элементы, без которых не обходится практически ни одна программа.
Frame - рама. Наравне с формой служит контейнером для размещения других компонентов. В отличие от формы может размещаться в палитре компонентов, создавая заготовки компонентов. Впервые введен в версию Delphi 5.
MainMenu - главное меню программы. Компонент способен создавать и обслуживать сложные иерархические меню.
PopupMenu - вспомогательное или локальное меню. Обычно это меню появляется в отдельном окне после нажатия правой кнопки мыши.
Label - метка. Этот компонент используется для размещения в окне не очень длинных однострочных надписей.
Edit - строка ввода. Предназначена для ввода, отображения или редактирования одной текстовой строки. Memo - многострочный текстовый редактор. Используется для ввода и/или отображения многострочного текста.
Button - командная кнопка. Обработчик события OnClick этого компонента обычно используется для реализации некоторой команды.
CheckBox - независимый переключатель. Щелчок мышью на этом компоненте в работающей программе изменяет его логическое свойство Checked.
RadioButton - зависимый переключатель. Обычно объединяется как минимум еще с одним таким же компонентом в группу. Щелчок по переключателю приводит к автоматическому освобождению ранее выбранного переключателя в той же группе.
ListBox - список выбора. Содержит список предлагаемых вариантов (опций) и дает возможность проконтролировать текущий выбор.
ComboBox - комбинированный список выбора. Представляет собой комбинацию списка выбора и текстового редактора.
ScrollBar - полоса управления. Представляет собой вертикальную или горизонтальную полосу, напоминающую полосы прокрутки по бокам Windows-окна.
GroupBox - группа элементов. Этот компонент используется для группировки нескольких связанных по смыслу компонентов.
RadioGroup - группа зависимых переключателей. Содержит специальные свойства для обслуживания нескольких связанных зависимых переключателей.
Panel - панель. Этот компонент, как и GroupBox, служит для объединения нескольких компонентов. Содержит внутреннюю и внешнюю кромки, что позволяет создать эффекты “вдавленности” и “выпуклости”.
Actiontist - список действий. Служит для централизованной реакции программы на действия пользователя, связанные с выбором одного из группы однотипных управляющих элементов таких как опции меню, пиктографические кнопки и т. п. Впервые, введен в версии Delphi 4.
СТРАНИЦА ADDITIONAL В страницу Additonal помещены 18 дополнительных компонентов, с помощью которых можно разнообразить вид диалоговых окон.
BitBtn - командная кнопка с надписью и пиктограммой.
SpeedButton - пиктографическая кнопка. Обычно используется для быстрого доступа к тем или иным опциям главного меню.
MaskEdit - специальный текстовый редактор. Способен фильтровать вводимый текст, например, для правильного ввода даты.
StringGrid - таблица строк. Этот компонент обладает мощными возможностями для представления текстовой информации в табличном виде.
DrawGrid - произвольная таблица. В отличие от StringGrid ячейки этого компонента могут содержать произвольную информацию, в том числе и рисунки.
Image - рисунок. Этот компонент предназначен для отображения рисунков, в том числе пиктограмм и метафайлов.
Shape - фигура. С помощью этого компонента вы можете вставить в окно правильную геометрическую фигуру - прямоугольник, эллипс, окружность и т. п.
Bevel - кромка. Служит для выделения отдельных частей окна трехмерными рамками или полосами.
ScrollBox - панель с полосами прокрутки. В отличие от компонента Panel автоматически вставляет полосы прокрутки, если размещенные в нем компоненты отсекаются его границами.
CheckListBox - список множественного выбора. Отличается от стандартного компонента ListBox наличием рядом с каждой опцией независимого переключателя типа CheckBox, облегчающего выбор сразу нескольких опций. Впервые введен в версии 3.
Splitter - граница. Этот компонент размещается на форме между двумя другими видимыми компонентами и дает возможность пользователю во время прогона программы перемещать границу, отделяющую компоненты друг от друга. Впервые введен в версии 3.
StaticText - статический текст. Отличается от стандартного компонента Label наличием собственного windows-окна, что позволяет обводить текст рамкой или выделять его в виде “вдавленной” части формы. Впервые введен в версии 3.
ControiBar - полоса управления. Служит контейнером для “причаливаемых” компонентов в технологии Drag&Dock. Впервые введен в версии 4.
ApplicationEvents - получатель события. Если этот компонент помещен на форму, он будет получать все предназначенные для программы сообщения Windows (без этого компонента сообщения принимает глобальный объект-программа Application). Впервые введен в версии 5.
ValueListEditor - редактор строк, содержащих пары имя = значение. Пары такого типа широко используются в Windows, например, в файлах инициации, в системном реестре и т. п. Впервые введен в версии 6.
LabeledEdit - комбинация однострочного редактора и метки. Впервые введен в версии 6.
ColorBox - специальный вариант ComboBox для выбора одного из системных цветов. Впервые введен в версии 6.
Chart - диаграмма. Этот компонент облегчает создание специальных панелей для графического представления данных. Впервые введен в версии 3.
ActionManager - менеджер действий. Совместно с тремя следующими компонентами обеспечивает создание приложений, интерфейс которых (главное меню и инструментальные кнопки) может настраиваться пользователем. Впервые введен в версии 6.
ActionMainMenuBar - полоса меню, опции которого создаются с помощью компонента ActionManager. Впервые введен в версии 6.
ActionToolBar - полоса для размещения пиктографических кнопок, создаваемых с помощью компонента ActionManager. Впервые введен в версии 6.
CustomizeDig - диалог настройки. С помощью этого компонента пользователь может по своему вкусу настроить интерфейс работающей программы. Впервые введен в версии 6.
СТРАНИЦА WIN32
Страница Win32 содержит интерфейсные элементы для 32-разрядных операционных систем Windows 95/98/NT/2000 (в версии 2 эта страница называется win 9 5). Этой страницы нет в версии 1.
TabControl - набор закладок. Каждая закладка представляет собой прямоугольное поле с надписью и/или рисунком. Выбор той или иной закладки распознается программой и используется для управления содержимым окна компонента.
PageControl - набор панелей с закладками. Каждая панель может содержать свой набор интерфейсных элементов и выбирается щелчком по связанной с ней закладке.
ImageList - набор рисунков. Представляет собой хранилище для нескольких рисунков одинакового размера.
RichEdit - многострочный редактор форматированного текста. В отличие от компонента Memo страницы Standard текст в компоненте RichEdit подчиняется правилам Расширенного Текстового Формата (RTF - Rich Text Format) и может изменять такие свои характеристики, как шрифт, цвет, выравнивание и т. д.
TrackBar - регулятор. Используется для управления значениями некоторых величин в программах. Например, с его помощью удобно изменять громкость звучания в мультимедийных программах.
ProgressBar - индикатор процесса. С помощью этого компонента можно отображать ход исполнения достаточно длительного по времени процесса, например, процесса переноса данных на дискету.
UpDown - цифровой регулятор. Две кнопки этого компонента предназначены для увеличения (верхняя) или уменьшения (нижняя) связанной с компонентом числовой величины.
HotKey - управляющая клавиша. Компонент используется для ввода управляющих клавиш, таких как F1, Alt+A, Ctrl+Shift+1 и т. п.
Animate - мультипликатор. Предназначен для отображения последовательно сменяющих друг друга кадров движущихся изображений (видеоклипов). Компонент не может сопровождать видеоклип звуком. Впервые введен в версии 3.
DateTimePicker - селектор времени/даты. Этот компонент предназначен для ввода и отображения даты или времени. Впервые введен в версии 3.
TreeView - дерево выбора. Представляет собой совокупность связанных в древовидную структуру пиктограмм. Обычно используется для просмотра структуры каталогов (папок) и других подобных элементов, связанных иерархическими отношениями.
ListView - панель пиктограмм. Организует просмотр нескольких пиктограмм и выбор нужной. Этот компонент способен располагать пиктограммы в горизонтальных или вертикальных рядах и показывать их в крупном или мелком масштабе.
HeaderControl- управляющий заголовок. Представляет собой горизонтальную или вертикальную полосу, разделенную на ряд смежных секций с надписями. Размеры секций можно менять мышью на этапе работы программы. Обычно используется для изменения размеров столбцов или строк в разного рода таблицах.
StatusBar - панель статуса. Предназначена для размещения разного рода служебной информации в окнах редактирования. Посмотрите на нижнюю часть рамки окна кода Delphi или текстового редактора Word, и вы увидите этот компонент в действии.
ToolBar - инструментальная панель. Этот компонент служит контейнером для командных кнопок BitBtn и способен автоматически изменять их размеры и положение при удалении кнопок или при добавлении новых. Впервые введен в версии 3.
CoolBar - инструментальная панель. В отличие от ToolBar используется как контейнер для размещения стандартных интерфейсных компонентов Windows, таких как Edit, ListBox, ComdoBox и т. д. Впервые введен в версии 3.
РageScroller - прокручиваемая панель. Служит для размещения узких инструментальных панелей. При необходимости автоматически создает по краям панели стрелки прокрутки. Впервые введен в версии 4.
CombоВохЕх - компонент в функциональном отношении подобен comboBox (страница standard), но может отображать в выпадающем списке небольшие изображения. Впервые введен в версии 6. СТРАНИЦА SYSTEM На этой странице представлены компоненты, которые имеют различное функциональное назначение, в том числе компоненты, поддерживающие стандартные для Windows технологии межпрограммного обмена данными OLE (Object Linking and Embedding -связывание и внедрение объектов) и DDE (Dynamic Data Exchange -динамический обмен данными). Технология DDE в современных программах полностью вытеснена гораздо более мощной технологией СОМ, и поэтому соответствующие им компоненты в книге не рассматриваются.
Timer - таймер. Этот компонент служит для отсчета интервалов реального времени.
PaintBox - окно для рисования. Создает прямоугольную область, предназначенную для прорисовки графических изображений.
MediaPlayer - мультимедийный проигрыватель. С помощью этого компонента можно управлять различными мультимедийными устройствами.
OleContainer - OLE-контейнер. Служит приемником связываемых или внедряемых объектов.
Компоненты этой страницы имеются во всех предыдущих версиях Delphi. СТРАНИЦА DIALOGS
Компоненты страницы Dialogs реализуют стандартные для Windows диалоговые окна.
OpenDialog - открыть. Реализует стандартное диалоговое окно “Открыть файл”.
SaveDialog - сохранить. Реализует стандартное диалоговое окно “Сохранить файл”.
OpenPictureDialog - открыть рисунок. Реализует специальное окно выбора графических файлов с возможностью предварительного просмотра рисунков.
SavePictureDialog - сохранить рисунок. Реализует специальное окно сохранения графических файлов с возможностью предварительного просмотра рисунков.
FontDialog - шрифт. Реализует стандартное диалоговое окно выбора шрифта.
ColorDialog - цвет. Реализует стандартное диалоговое окно выбора цвета.
PrintDialog - печать. Реализует стандартное диалоговое окно выбора параметров для печати документа.
PrinterSetupDialog - настройка принтера. Реализует стандартное диалоговое окно для настройки печатающего устройства.
FindDialog - поиск. Реализует стандартное диалоговое окно поиска текстового фрагмента.
ReplaceDialog - замена. Реализует стандартное диалоговое окно поиска и замены текстового фрагмента.
Компоненты OpenPictureDialog И SavePictureDialog введены в версии 3, остальные имеются в предыдущих версиях. Разумеется, интерфейс окон для Windows 16 (версия 1) отличается от интерфейса Windows 32.
СТРАНИЦА WIN31
Большинство компонентов этой страницы введены для совместимости с версией 1. В современных программах вместо них рекомендуется использовать соответствующие компоненты страницы Win32.
TabSet - набор закладок. В приложениях для Windows 32 вместо него рекомендуется использовать компонент TabControl.
OutLine - дерево выбора. В приложениях для Windows 32 вместо него рекомендуется использовать компонент Treeview.
TabbedNotebook - набор панелей с закладками. В приложениях для Windows 32 вместо него рекомендуется использовать компонент PageControl.
Notebook - набор панелей без закладок. В приложениях для Windows 32 вместо него рекомендуется использовать компонент Page-Control.
Header - управляющий заголовок. В приложениях для Windows 32 вместо него рекомендуется использовать компонент Header-Control.
FileListBox - панель выбора файлов.
DirectorybistBox - панель выбора каталогов.
DiriveComboBox - панель выбора дисков.
FilterComboBox - панель фильтрации файлов.
Компоненты FileListBox, DirectoryListBox, DriveComboBox и FilterComboBox впервые появились в версии 3. Их функции реализованы элементами стандартных окон OpenDialog и SaveDialog, которые и рекомендуется использовать в Windows 32.
СТРАНИЦА SAMPLES
Эта страница содержит компоненты разного назначения.
Gauge - индикатор состояния. Подобен компоненту ProgressBar (страница Win32), но отличается большим разнообразием форм.
СolorGrid - таблица цветов. Этот компонент предназначен для выбора основного и фонового цветов из 16-цветной палитры.
SpinButton - двойная кнопка. Дает удобное средство управления некоторой числовой величиной.
SpinEdit - редактор числа. Обеспечивает отображение и редактирование целого числа с возможностью его изменения с помощью двойной кнопки.
DirectoryOutLine - список каталогов. Отображает в иерархическом виде структуру каталогов дискового накопителя.
Calendar - календарь. Предназначен для показа и выбора дня в месяце. СТРАНИЦА ACTIVE X
Компоненты ActiveX являются “чужими” для Delphi: они создаются другими инструментальными средствами разработки программ (например, C++ или Visual Basic) и внедряются в Delphi с помощью технологии OLE. На странице ActiveX представлены лишь 4 из великого множества ActiveX-компонентов, разрабатываемых повсюду в мире компаниями - производителями программных средств и отдельными программистами. И хотя в книге технология ActiveX и компоненты этой страницы не рассматриваются, я привожу их краткое описание.
Chartfx - интерактивный график. Дает программисту удобное средство включения в программу интерактивных (диалоговых) графиков.
VSSpell - спеллер. Осуществляет орфографическую проверку правильности написания английских слов.
F1Book - электронная таблица. Позволяет создавать и использовать рабочие книги электронных таблиц, подобно тому как это делает MS Excel.
VtChart - мастер диаграмм. Обеспечивает мощные средства построения двух- и трехмерных диаграмм по результатам табличных вычислений.
КОМПОНЕНТЫ ДЛЯ РАБОТЫ С БАЗАМИ ДАННЫХ
В Delphi развиты средства построения приложений, рассчитанных на работу с электронными архивами (базами данных). Причем Delphi 6 предоставляет программисту возможность выбора способа доступа к данным: это может быть стандартный для ранних версий Delphi доступ с помощью машины баз данных BDE (Borland Data
base Engine), усиленно развиваемая Microsoft технология ADO ActiveX Data Objects), прямое управление сервером InterBase с помощью технологии IBExpress, наконец, технология dbExpress для непосредственного обращения к промышленным серверам MySQL, DB2, Oracle и некоторым другим.
Страница Data Access
В отличие от предыдущих версий на этой странице собраны компоненты, которые не зависят от используемого доступа к базе данных (большинство компонентов с этой страницы предыдущих версий перекочевали на страницу bde). Они в основном используются в так называемых трехзвенных БД (с сервером приложений). Часть компонентов известны по другим версиям Delphi, часть появилась в версии 6.
Страница Data Controls
15 компонентов этой страницы предназначены для визуализации данных, их ввода и редактирования. Многие компоненты этой страницы введены еще в версии 1.
Страница dbExpress
7 компонентов, представленных на этой странице, поддерживают технологию dbExpress прямого доступа к некоторым промышленным серверам баз данных. Все компоненты страницы впервые введены в версии 6.
Страница DataSnap
На этой странице сосредоточены компоненты, реализующие взаимодействие машин в локальной сети или Интернет в типичном для БД случае, когда клиент работает с удаленными данными. Часть компонентов известны по другим версиям Delphi, часть появилась в версии 6. Страница BDE
Здесь представлены компоненты, поддерживающие доступ к данным с помощью BDE - Table, Query, StoredProc И Т. П. Механизм BDЕ в равной степени успешно работает как с файл-серверными, кис клиент-серверными БД. Компоненты этой страницы есть во всех версиях Delphi.
Страница ADO
Компоненты этой страницы в функциональном отношении во многом подобны компонентам страницы BDE, но поддерживают доступ к данным с помощью техологии ADO (ADOTable, ADOQuery,
ADostoredproc и т. д.). Все компоненты страницы впервые введены в версии 5. Страница InterBase
“Родной” для Delphi сервер баз данных InterBase (производитель - InterBase Software Corporation - является дочерним предприятием Borland) имеет непосредственную поддержку в виде компонентов этой страницы. В них используется технология IBExpress, позволяющая отказаться от BDE, ADO или иных подобных механизмов доступа к данным. Все компоненты страницы впервые введены в версии 5.
Страница Decision Cube
На этой странице представлены компоненты для систем принятия решений на основании анализа многомерных наборов данных. Компоненты этой страницы впервые введены в версии 3.
Страница QReport
Около 30 компонентов страницы предназначены для упрощения создания отчетов по материалам, хранящимся в БД. Большинство компонентов страницы впервые введено в версии 2.
34.-
35. В пустой форме смысла нет. Наполнить её содержанием помогут компоненты Delphi. Они располагаются на соответствующих вкладках палитры компонентов на главном окне. Все основные компоненты Delphi находятся на первых четырёх вкладках:
|
|
Их названия всплывают в виде подсказок при наведении мышки на пиктограммы. Чтобы перенести компонент на форму, нужно щёлкнуть его мышкой (при этом выбранный компонент выделяется), и затем щёлкнуть в том месте формы, где его предполагается разместить. В дальнейшем компоненты можно свободно перетаскивать по форме мышкой, "конструируя" нужный интерфейс. Если, щёлкнув по компоненту, вы захотите отказаться от его переноса на форму, щёлкните по стрелке, расположенной слева на вкладке. Выделение компонента снимется. Есть соответствующие справочники, где рассматриваются все компоненты Delphi. Но самые важные свойства компонентов Delphi и работу с ними мы рассмотрим. Рассмотрим компоненты отображения текста. Создайте новый проект (File -» New -» Application), и перенесите на форму компоненты Label, Edit, Memo и Button. Выбирая одним щелчком мышки или клавишей Tab нужный компонент, в Инспекторе Объектов мы можем получить доступ к его свойствам. Прежде всего, у визуальных компонентов есть свойства, определяющие их положение на Форме:
Ширина компонента, Width
Высота компонента, Height
Расстояние до левого края формы, Left
Расстояние до верхнего края формы, Top
Эти свойства получают значения в тот момент, когда компоненты попадают на форму. Примерно разместив на форме компоненты с помощью мышки, в Инспекторе объектов устанавливаем их точные размеры и координаты. В дальнейшем мы увидим, что их можно устанавливать и программно! За визуальное представление отвечают для компонентов:
Label и Button - свойство Caption,
Edit - свойство Text,
Memo - свойство Lines.
При "конструировании" формы в Инспекторе объектов можно придать свойствам компонентов любые значения. Случайно можно задать такие размеры или координаты, что компонент "исчезнет" - сделается невидимым или спрячется за другими компонентами. Его легко найти с помощью того же Инспектора Объектов - все компоненты, находящиеся на Форме, перечислены в его выпадающем списке. Достаточно выбрать нужный компонент, и он или его контуры (если он заслонён" другими компонентами) появятся на Форме, а в Инспекторе объектов - его свойства. Теперь "запустите" программу (зелёная стрелка или F9). Видим, что компоненты "работают". Label является надписью (меткой) на форме, Button - кнопка нажимается, Edit - строка ввода и Memo - многострочный текстовый редактор позволяют вводить текст! А теперь давайте напишем маленькую программку! Она будет по нажатию кнопки отображать на форме то, что мы введём в строке ввода. Начните новый проект (File -» New -» Application).
Расположите на форме компонент Edit (строка ввода). Свойство Text очистите.
Далее - компонент Button (кнопка). В свойстве Caption напишите, например, "показать".
Затем - компонент Label (метка). В свойстве Font для наглядности сделайте размер побольше, например 24, выберите шрифт и цвет. Свойство Caption также очистите.
Щёлкните дважды по нашей кнопке. Произошла метаморфоза! Мы очутились в окне модуля, где система Delphi создала для нас заготовку обработчика события нажатия на кнопку!
В обработчике пишите: Label1 и поставьте точку. Подождите секунду после ввода точки. Видите - выскочила подсказка!. Система Delphi предлагает нам выбрать из списка нужное свойство или метод. Нажмите "C", и строка "Caption" станет выделенной. Delphi пытается угадать, что мы хотим ввести. Дальше писать не обязятельно, достаточно нажать Enter.
В результате получим: Label1.Caption. Таким образом мы видим, что точкой разделяются в Delphi объект и его свойства. Указанием на объект служит его имя (свойство Name). Имя компонента можно посмотреть в Инспекторе Объектов, а также наведя мышку на компонент и дождавшись появления подсказки.
Далее присваиваем свойству Caption объекта Label1 значение. Знакомьтесь, оператор присваивания: := Двоеточие перед знаком равенства обязательно!!!
Получаем: Label1.Caption:= Подумайте сами, что писать дальше...
...а именно то, что мы хотим отобразить в метке - свойство Text объекта Edit1: Edit1.Text
Далее то, чем завершается любая команда - оператор ";". Это именно оператор, хотя и не выполняющий никаких действий, и его иногда применяют именно в этом качестве.
Вот что у нас получилось: Label1.Caption := Edit1.Text; Кому лень, просто скопируйте отсюда и вставляйте между begin и end. Ну всё, сохраняем и жмём F9. В дальнейшем программы будут куда сложнее. Что делать, если в результате ошибки в программе она зависнет? Естественно, можно воспользоваться комбинацией Ctrl+Alt+Del, но проще, нажав OK в окне предупреждения об ошибке, выполнить команду меню главного окна Delphi Run -» Program Reset или Ctrl+F2!
