Проблема циклических ссылок
Предположим необходимо, чтобы не только модуль Unit1 мог обращаться к модулю Unit2, но и модуль Unit2 мог обращаться к модулю Unit1. В этом случае логично предположить, что в разделе uses интерфейсной части модуля Unit2 необходимо указать ссылку на модуль Unit1.
Однако, при попытке компиляции такого модуля Unit2 будет выдано сообщение об ошибке: Circular unit reference to "Unit2".
По-русски это звучит так: "Циклическая ссылка на модуль Unit2".
В большинстве случаев для того, чтобы избежать этой ошибки, достаточно указать оператор uses со ссылкой на модуль Unit1 в раздел реализации:
implementation
uses Unit1;
Файлы форм (.dfm)
В файле .dfm описывается каждый компонент формы, включая значения всех свойств. Просмотреть или отредактировать файл формы можно в редакторе исходного кода. Для приложений CLX, предназначенных для использования в среде Linux, используются файлы с расширением .xfm.
Представление формы
Перейдите в конструкторе форм к форме Form1, щелкните на ней правой кнопкой мыши, и выполните команду View as Text раскрывшегося контекстного меню. В результате будет получено текстовое представление формы Form1, приведенное в листинге 1.3.
Листинг 1.3. Содержимое файла Unit1.dfm
object Form1: TForm1
Left = 192
Top = 107
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button2: TButton
Left = 250
Top = 16
Width = 163
Height = 42
Caption = 'Кнопка 2'
TabOrder = 0
OnClick = Button2Click
end
object Button3: TButton
Left =450
Top = 16
Width =163
Height =42
Caption = 'Выход1'
TabOrder = 1
OnClick = Button3Click
end
object Button1: TButton
Left = 58
Top = 16
Width = 163
Height = 42
Caption = 'Кнопка 1'
TabOrder = 2
OnClick = ButtonlClick
end
object Edit1: TEdit
Left = 56
Top = 72
Width = 121
Height = 21
Color = clSilver
TabOrder = 3
Text = 'Edit1'
end
end.
Здесь можно изменить любые свойства самой формы и расположенных на ней компонентов. Для возврата в обычный режим работы с формой щелкните правой кнопкой мыши в редакторе исходного кода и выполните команду View as Form раскрывшегося контекстного меню.
Пример изменения свойств компонента формы
Описанным выше способом можно отредактировать свойства любого компонента, например, компонента Edit1. Для этого выполним следующие действия.
-
В конструктор форм выделите компонент Edit1 и выполните команду Edit - Cut (Вырезать), или нажмите комбинацию клавиш <Сtrl+X>. В результате компонент Edit1 будет удален из формы и помещен в буфер обмена.
-
Перейдите в редактор исходного кода, переместитесь в самый конец файла, расположите курсор после последнего ключевого слова end. и выполните команду Edit - Paste (Вставка), или нажмите комбинацию клавиш <Ctrl+V>. В результате компонент Edit1 будет вставлен в файл исходного кода в текстовом виде, как показано на рис.1.4.
-
Измените значение свойства Text на '' (две одинарные кавычки).
-
Выделите фрагмент исходного кода, соответствующий компоненту Edit1, вырежьте его в буфер обмена - <Ctrl+X>.
-
Перейдите в конструктор форм и выполните вставку из буфера обмена - Ctrl+V>. В результате текстовое поле будет пустым.
Рис.1.4
Формы сохраняются в текстовом или двоичном форматах. Выбор формата определяется флажком New forms as text в поле Module creation options на вкладке Designer диалогового окна Environment Options. Для того чтобы раскрыть на экране окно Environment Options необходимо выполнить команду Tools - Environment options.
2. Редактор исходного кода и окно Code Explorer
Как уже отмечалось выше, при размещении компонентов в конструкторе форм и определении новых обработчиков событий при помощи инспектора объектов интегрированная среда Delphi сама создает соответствующий программный код на языке Object Pascal. В дальнейшем в этот автоматически сгенерированный код можно вносить изменения при помощи встроенного в Delphi полнофункционального редактора, некоторые возможности которого уже были рассмотрены. Внешний вид этого редактора представлен на рис.2.1.
Рис.2.1
Code Insight
Одним из самых мощных средств редактора исходного кода Delphi 7 является анализатор кода - Code Insight. Функции анализатора кода перечислены в табл. 2.1.
При помощи кнопок со стрелками, расположенными в правом верхнем углу редактора, можно перемещаться между теми местами в исходном коде, в которых вносились последние изменения.
Также можно перемещаться между объявлением процедуры и ее реализацией при помощи комбинаций клавиш <Ctrl+Shift+↑> и <Ctrl+Shift+↓>.
Таблица 2.1
Название функции |
Описание
|
Завершение кода |
Наберите имя класса или объекта с точкой (например, кода Button1.). В результате будет отображен перечень свойств, методов и событий, определенных для этого класса (рис.2.2). Выберите один из элементов списка и нажмите клавишу<Enter>. Введите первую часть оператора присваивания (например, Edit1.Text := ) и нажмите комбинацию клавиш <Ctrl+пробел>. В результате будет отображен перечень возможных значений для завершения оператора. Введите начальные символы имени функции, процедуры или метода (например, round) и нажмите комбинацию клавиш <Ctrl+пробел>. В результате будет отображен перечень возможных продолжений имени (рис.2.3). |
Рис.2.2 Рис.2.3
Рис.2.4