Динамическое изменение свойств компонента 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Динамическое изменение свойств компонента



Поскольку кнопка Button1 в программе способна «звучать», полезно изменить ее надпись: вместо надписи Button1, которую автоматически формирует Delphi по имени компонента, назвать кнопку именем «Звук». Проще всего это сделать с помощью окна формы и инспектора объектов, то есть на этапе конструирования формы (для этого нужно просто изменить свойство Caption компонента Button1 в окне инспектора объектов), но для более полного знакомства с Delphi следует выбрать другой способ — способ динамического изменения надписи на этапе прогона программы. Для этого нужно создать обработчик события OnCreate (По созданию) для формы и изменить в нем это свойство.

Событие OnCreate возникает после создания окна программы, но до появления этого окна на экране. Чтобы создать обработчик этого события, следует раскрыть список компонентов в верхней части окна инспектора объектов, выбрать компонент Form1 и дважды щелкнуть на свойстве OnCreate вкладки Events этого компонента (щелкать нужно на правой части строки OnCreate). В ответ Delphi вновь активизирует окно кода и покажет заготовку для процедуры TForm1.FormCreate. Ее нужно отредактировать следующим образом:

procedure TForm1.FormCreate(Sender: TObject);

Begin

Button1.Caption:= 'Звук';

end;

Единственная добавленная строка представляет собой оператор присваивания. В левой части оператора указывается свойство Button1.Caption, а в правой части – значение «Звук», которое следует придать этому свойству.

Составное имя Button1.Caption необходимо для точного указания компилятору, о каком свойстве идет речь: в разрабатываемой программе используются три компонента (включая саму форму), каждый из которых имеет свойство Caption; уточняющий префикс Button1 заставит изменить это свойство у кнопки, а не у метки и формы. Присваиваемое свойству значение является текстовой строкой. По правилам Delphi текстовая строка должна заключаться в обрамляющие апострофы.

После очередного запуска программы на экране появится окно, представленное на рис. 9.

 

Рис. 9. Окончательный вид окна программы

Таким образом, практически любое свойство компонента можно изменить динамически, т. е. в ходе исполнения программы.

 

Структура программы на Delphi

 

Любая программа в Delphi состоит из файла проекта (файл с расширением dpr) и одного или нескольких модулей (файлы с расширениями pas). Каждый из таких файлов описывает программную единицу Object Pascal (язык программирования, являющийся основой среды Delphi).

Структура проекта

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Эта программа автоматически создается Delphi и содержит лишь несколько строк.

Пример:

 

program Project1;

 

Uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

 

{$R *.res}

 

Begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

 

В окне кода жирным шрифтом выделяются так называемые зарезервированные слова, а курсивом - комментарии. Текст программы начинается зарезервированным словом program и заканчивается словом end с точкой за ним.

Также курсивом выделяются директивы компилятора. В данном примере это {$R *.res} – указание компилятору на необходимость подключения к программе так называемого файла ресурсов. Директивы начинаются символом $, который стоит сразу за открывающей фигурной скобкой.

Слово program со следующим за ним именем программы и точкой с запятой образуют заголовок программы. За заголовком следует разделы описаний, в котором программист (или Delphi) описывает используемые в программе идентификаторы (типы, переменные, процедуры и функции).

С помощью предложения, которое начинается зарезервированным словом uses (использовать) программист сообщает компилятору о тех фрагментах программы (модулях), которые необходимо рассматривать как неотъемлемые составные части программы и которые располагаются в других файлах. Строки

Uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

указывают, что помимо файла проекта в программе должны использоваться модули Forms и Unit1. Модуль Forms является стандартным (т.е. уже известным Delphi), а модуль Unit1 – новым, ранее неизвестным, и Delphi в этом случае указывает также имя файла с текстом модуля (in ‘Unit1.pas’) и имя связанного с модулем файла описания формы {Form1} – т.е. одного из окон программного интерфейса.

Собственно тело программы начинается со слова begin (начать) и ограничивается терминатором end с точкой. Тело состоит из нескольких операторов языка Object Pascal. В теле рассматриваемой программы – три исполняемых оператора:

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

 

В объекте Application собраны данные и подпрограммы, необходимые для нормального функционирования Windows-программы в целом. Delphi автоматически создает объект-программу Application для каждого нового проекта. С помощью его метода Initialize программа осуществляет ряд вспомогательных действий, необходимых для работы под управлением операционной системы Windows.

Метод CreateForm объекта Application создает и показывает на экране окно главной формы, а метод Run реализует бесконечный цикл получения и обработки поступающих от Windows сообщений о действиях пользователя.

Следует сказать, что файл проекта полностью формируется самой Delphi и в большинстве случаев не предназначен для редактирования. Именно по этой причине файл проекта имеет особое расширение и обычно не показывается в окне кода. При разработке сложных проектов этот файл можно использовать для пояснения назначения или иных входящих в него форм.

Структура модуля.

Модули – это программные единицы, предназначенные для размещения фрагментов программ. С помощью содержащегося в них программного кода реализуется вся поведенческая сторона программы.

Любой модуль имеет следующую структуру:

– заголовок

– секция интерфейсных объявлений

– секция реализаций

– терминатор.

Заголовок открывается зарезервированным словом unit, за которым следует имя модуля и точка с запятой. Секция интерфейсных объявлений открывается зарезервированным словом interface, а секция реализаций - словом implementation. Терминатором модуля, как и терминатором программы, является end с точкой. Следующий фрагмент программы является синтаксически правильным вариантом модуля:

unit Unit1;

Interface

// Секция интерфейсных объявлений

Implementation

// Секция реализаций

End.

В секции интерфейсных объявлений описываются программные элементы (типы, классы, процедуры и функции), которые будут «видны» другим программным модулям, а в секции реализаций раскрывается механизм работы этих элементов. Разделение модуля на две секции обеспечивает удобный механизм обмена алгоритмами между отдельными частями одной программы.

Создаваемый модуль окна главной программы имеет следующий вид:

unit Unit1;

 

Interface

 

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

 

Type

TForm1 = class(TForm)

Private

{ Private declarations }

Public

{ Public declarations }

end;

 

Var

Form1: TForm1;

 

Implementation

 

{$R *.dfm}

 

End.

 

Весь этот текст сформирован Delphi, но в отличие от файла проект программист может его изменять, придавая программе нужную функциональность.

В интерфейсной секции описан один тип (класс TForm1) и один объект (переменная Form1).

{$R *.dfm} – директива компилятора, указывающая на необходимость подключения к модулю файла ресурсов формы с расширением dfm.

 

Созданное в Delphi приложение – это проект, состоящий из элементов:

– код проекта (.dpr),

– описания форм (.dfm),

– модули форм (.pas),

– модули (.pas),

– параметры проекта (.dof),

– описание ресурсов (.res).

Целесообразно для каждого нового файла проекта создавать свою папку, чтобы не путаться в многочисленных файлах, относящихся к конкретному проекту.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 384; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.35.75 (0.017 с.)