MIME-Version: 1.0 Content-Location: file:///C:/EC2C4CD4/4.htm Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii" 4

4. Струк= ;тура программы =

Модуль кода (unit) делится на две части – &= #1080;нтерфейс (interface) и реализацию (implementation).

Раздел interface:

-&nb= sp;       uses: подключаемm= 9;е модули, в которых содержатся используемm= 9;е процедуры, функции, классы и т.п. Их список формируетсn= 3; автоматичеl= 9;ки в зависимостl= 0; от добавлен = 85;ых в форму компонентоk= 4;.

-        type: описания типов. Автоматичеl= 9;ки в этом разде= 083;е описан клас = 89; вашей формы.

-        var: описание глобальных переменных. Автоматичеl= 9;ки тут описана переменная типа описанного класса форм = 99;. В этой переменной во время работы прог = 88;аммы хранится указатель н = 72; экземпляр формы.

-        const: описание констант. Этот раздел автоматичеl= 9;ки не создаетс = 03;, однако може = 90; быть легко добавлен.

Разд&= #1077;л implementation:

-      =   Здесь также можно добавить uses.

-        С помощью {$R}&nbs= p;подключают= 089;я файлы ресурсов. Автоматичеl= 9;ки подключен файл dfm, имеющий то ж= 077; имя, что и файл модуля = 080; потому подключаемm= 9;й как *.dfm. В этом файле хранится информация = 86; форме – расположенl= 0;е и настройки компонентоk= 4;, помещенных = 74; форму, и т.п. 

-        Раздел содержит описание реализаций процедур и функций. Автоматичеl= 9;ки тут создают = 89;я обработчикl= 0; событий. Здесь описываетсn= 3; реализация = 85;еобходимых в программе процедур, функций и методов кла = 89;сов.

Все то, что касается объявления доступных и = 79; других модулей переменных, констант, пр= 086;цедур, типов, классов и т.п., должно быть описано в разделе interface. В этой части программы, к= 086;торая создается автоматичеl= 9;ки, в разделе uses перечисляюm= 0;ся используемm= 9;е модули, в разделе type описываетсn= 3; класс формы – потомок класса TForm, а в разделе var опи= сывается глобальная переменная, = 074; которой будет храниться указатель н = 72; объект-экзе = 84;пляр формы. Соответствk= 7;нно, если надо по= 076;ключить какой-то сво= 081; модуль, то не&#= 1086;бходимо добавить ег = 86; в раздел uses. Пр = 80; описани нового типа его добавляют в раздел type до иl= 3;и после класс = 72; формы. Если нужно описать гло = 73;альную переменную, то ее добавляют в = 088;аздел var, а если нужнk= 2; константа – создается дополнителn= 0;но раздел const. В св= 086;ю очередь, в разделе implementation сначала указываетсn= 3; ссылка на файлы ресурсов, а затем описы = 74;аются реализации процедур и функций – ка= 082; создаваемыm= 3; автоматичеl= 9;ки обработчикl= 6;в событий, так и добавляемыm= 3; по необходимоl= 9;ти. Вначале эта часть пуста, но она будет заполнятьсn= 3; во время написания программы.

При добавлении компонента = 74; форму автом = 72;тически модифицируk= 7;тся код модуля – в описании класса форм = 99; появляется переменная, хранящая ссылку на добавленныl= 1; компонент.

При создании обработчикk= 2; события (при нажатии на компонент, помещенный = 74; форму, созда= 077;тся обработчик основного события, а остальные создаются с помощью Инспектора Объектов) в коде происходят следующие изменения:

-      =   в разделе implementation создается пустой обработчик, = 082;оторый вы потом заполняете;

-&nb= sp;       в класс&= #1077; вашей формы создается описание эт = 86;го метода (обработчик = 80; событий являются ме = 90;одами);

-&nb= sp;       если не создавать обработчик через стран = 80;цу Events Инспекторk= 2; Объектов (ил= 080; двойным щел = 95;ком по компоненту), а просто написать в коде проm= 4;едуру-обраб&#= 1086;тчик, то он не буде&#= 1090; должным образом связан с компонентоl= 4;, и событие не сработает.

Если изменить им = 03; компонента, то изменятс = 03; имена и обработчикl= 6;в событий, которые с ни= 084; связаны.

Если необходимо изменить название обработчикk= 2;, то надо воспользовk= 2;ться Инспектороl= 4; Объектов. Переименовm= 9;вая здесь имя процедуры обработчикk= 2;, корректно автоматичеl= 9;ки изменяются также и ссылки на эт= 091; процедуру.

Если необходимо удалить какой-то обработчик, то удалите весь код внутри процедуры. П= 088;и следующем запуске программы все пустые процедуры а = 74;томатическ&#= 1080; корректно удаляются. Компилятор автоматичеl= 9;ки удаляет пустые проц = 77;дуры при запуске. При удалени = 80; всей процед = 91;ры описание и ссылки на не= 077; останутся, а удаление их всех требуе = 90; времени и аккуратносm= 0;и.

При удалении компонента не удаляютс = 03; процедуры-о = 73;работчики его событий. Это связано = 089; тем, что один и тот же обработчик может испол = 00;зоваться для разных компонентоk= 4;.  В случае, если нужно удалить эти оставшиеся обработчикl= 0;, удалите код внутри них и запустите п = 88;ограмму.

Проблема обеспечениn= 3; гарантировk= 2;нного выполнения некоторых действий ре = 96;ается наличием специальноk= 5;о события OnCreate. Эт&= #1086; событие формы. Оно возникает тогда, когда форма создается, а поскольку главная фор = 84;а создается в самом начал = 77; работы прил = 86;жения, то и код, описанный в обработчикk= 7; данного события, выполнится один раз и в самом начал = 77;. В обработчикk= 7; события OnCreate можно описа = 90;ь процедуры и функции инициализаm= 4;ии, присваиватn= 0; нужные значения глобальным = 87;еременным и т.п.

Раздел implementation предназначk= 7;н не только дл= 103; обработчикl= 6;в событий. В этот раздел добавлять в него свои со= 073;ственные функции и процедуры. Необходимо помнить, что они должны идти раньше процедур и обработчикl= 6;в, из которых выз= ;ываются, или объявит = 00; их в разделе interface. В последнем с = 83;учае эти функции = 080; процедуры будут досту = 87;ны для вызова и= 079; других модулей.

Существуе&#= 1090; также важна = 03; тонкость использоваl= 5;ия собственныm= 3; функций: все обработчикl= 0; событий имеют в свое= 084; названии им = 03; формы:

<= span lang=3DEN-US style=3D'mso-ansi-language:EN-US'>procedure TForm1.FormCreate(Sender: T= Object);

Э= 090;о указывает н = 72; то, что работают с классом формы TForm1 и описывают методы для нее. Из обраб&#= 1086;тчика просто обращаются = 82; компонентаl= 4; формы (класс формы «знает» о наличии компонентоk= 4; на ней и имеет к ним непосредстk= 4;енный доступ), например:

MyGrid.RowCount :=3D Num;

Когда описываетсn= 3; собственнаn= 3; процедура, т= 086; она «ничего не знает» о компонентаm= 3; формы, и поэтому нужно обращаться = 82; компонентаl= 4; через форму, а, не минуя ее.=