Форма (а) и окно в процессе выполнения (б) вашего приложения
а) | б) | Если вы работаете с версией старше Delphi 3, написали первый идентификатор оператора — Label1, поставили точку и ненадолго задумались, то вам всплывет подсказка, содержащая список всех свойств и методов метки. Это начал работать Знаток Кода — Code Insight, который стремится подсказать вам свойства и методы компонентов, аргументы функций и их типы, конструкции операторов. Вы можете выбрать из списка нужное ключевое слово, нажать клавишу Enter и выбранное слово (свойство, метод) окажется вписанным в текст. Этот инструмент очень удобен во многих случаях, когда вы не очень точно помните последовательность перечисления параметров какой-нибудь функции, или когда не уверены в имени какого-то свойства. Но иногда, когда вы хорошо освоитесь с Delphi, эти подсказки, может быть, начнут вас раздражать. Тогда вы можете отключить Знатока Кода, выполнив команду Tools | Editor Options и на странице Code Insight выключив опцию Code Completion. В Delphi 4 аналогичные действия можно сделать командой Tools | Environment Options. Итак, ваше приложение готово. Можете откомпилировать и выполнить его (команда Run | Run). После недолгой компиляции перед вами появится окно вашего приложения. Нажав в нем кнопку Пуск, вы увидите указанную вами строку текста (Рисунок 1.4 б). Можете попробовать различные манипуляции с окном: перемещение его, изменение размеров его рамки курсором мыши, свертывание и развертывание. В заключение закройте приложение, щелкнув на кнопке в его правом верхнем углу. Теперь посмотрите код программы, который создала с вашей помощью Delphi. Этот код содержится в двух файлах — головном файле программы с расширением .dpr и в файле модуля с расширением .pas. Головной файл .dpr — один на весь проект, а файлов модулей столько, сколько форм вы ввели в свой проект. Добавление в проект новой формы вы можете осуществить командой File | New Form, а удалить форму из проекта можно командой Project | Remove from Project. Текст головного файла программы вы, как правило, не видите и не трогаете, полностью доверяя его ведение Delphi. А честь написания текстов модулей вы делите с Delphi. Delphi создает заготовку модуля, включает в нее описание формы и всех компонентов, которые вы размещаете на форме, обеспечивает связь с библиотекой. А вы пишете в основном обработчики событий компонентов. При необходимости вводите также в текст различные переменные, константы, описания типов, вспомогательные функции и процедуры. Поэтому надо представлять, как выглядит текст модуля и в какие его места что можно добавлять. Ниже приведен текст модуля описанного выше простого примера, который вы можете увидеть в окне Редактора Кода. Подробные комментарии в этом тексте поясняют, куда и что в этот код вы можете добавлять. unit Unit1; interface // Открытый интерфейс модуля {Список подключаемых модулей} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; {Объявление класса формы} type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click (Sender: TObject); private // Закрытый раздел класса { Private declarations } {Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы, но не доступных для других модулей} public // Открытый раздел класса { Public declarations } {Сюда могут помещаться объявления переменных, функций и процедур, включаемых в класс формы и доступных для других модулей} end; var Form1: TForm1; {Сюда могут помещаться объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей, но которые не включаются в класс формы} implementation // Реализация модуля {$R *.DFM} {Сюда могут помещаться предложения uses, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.} procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'Это мое приложение Delphi!'; end; end. Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в которым вы сохранили свой модуль. По умолчанию для первого модуля имя равно Unit1, для второго Unit2 — и т.д. Текст модуля состоит из двух основных разделов: interface — открытый интерфейс модуля, и implementation — реализация модуля. Все, что помещается непосредственно в раздел interface (типы, переменные, константы, функции, процедуры), может быть использовано другими модулями программы. Все, что помещается в раздел implementation — внутреннее дело модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации. В разделе interface после предложения uses, содержащего список подключаемых библиотечных модулей, вы можете видеть объявление класса вашей формы, подготовленное Delphi. Имя класса вашей формы — TForm1. В класс включены те объекты которые вы разместили на форме — метка Label1 и кнопка Button1. Кроме того в класс включено объявление того обработчика щелчка на кнопке, который вы создали — процедуры Button1Click. В классе предусмотрено также два раздела: private — закрытый раздел класса, и public — открытый раздел класса. То, что вы или Delphi объявите в разделе public, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля. После завершения объявления класса формы вы можете видеть строки var Form1: TForm1 Это объявляется переменная Form1 класса TForm1, т.е. объявляется ваша форма как объекта класса TForm1. Затем следует раздел реализации implementation, который начинается с директивы компилятора, смысл которой, вообще говоря, знать не обязательно. Надо только следить, чтобы случайно не стереть эту директиву. Далее в разделе implementation вы можете видеть реализацию объявленной в классе процедуры Button1Click с единственным оператором, который вы ввели в программу сами. В раздел implementation вы можете сами включать помимо обработчиков событий любые объявления глобальных переменных, констант, типов, и описания функций и процедур. Если вы хотите из данного модуля получить доступ к другому разработанному вами модулю (другой форме), то в раздел implementation вам надо включить оператор uses, в котором указать файл модуля, доступ к которому вы хотите получить. Например, предложение uses Unit2, Unit3; обеспечит вам доступ ко всем элементам, объявленным в интерфейсе модулей Unit2 и Unit3. |