1. РАЗРАБОТКА ПРИЛОЖЕНИЙ В Delphi Запустите Delphi. На экране должно появиться изображение, содержащее главные окна Delphi (рис. 1.1). С помощью Delphi мы будем писать свои приложения (компьютерные программы). Основными являются четыре окна:
Первые три окна видны на рис. 1.1. Последнее – четвертое окно – лежит под окном формы в правом нижнем углу рисунка. Над панелью инструментов расположено главное меню Delphi. Первые два окна относятся к самой среде Delphi, два последних - к создаваемому программистом приложению (программе). Состав среды Delphi В интегрированную среду разработки приложений (IDE) входит несколько основных элементов. Рассмотрим их по порядку.
Окно Object Inspector Это окно играет ключевую роль при визуальном программировании и предназначено для изменения значений свойств визуальных компонентов и назначения событий для компонентов, которые могут обрабатываться создаваемым в Delphi приложением (программой). Окно имеет две закладки – Properties (свойства) и Events (события). Выбор закладки производится щелчком на нужном ярлычке окна. Для выбора свойств и событий компонента нужно щелкнуть по нему на форме. При этом компонент будет выделен, а его атрибуты появятся в окне Object Inspector. При множественном выборе (при помощи клавиши Shift и мыши) в окне появятся только общие атрибуты выделенных компонентов, что позволяет вносить изменения в атрибуты всех выделенных компонентов. Закладка PropertiesОбразец этой закладки показан на рис. 1.1 в окне Object Inspector. Отдельно закладка показана на рис. 1.2. Она отображает свойства и значения свойств того компонента, который в данный момент является выделенным. Имя выделенного компонента расположено в Object Inspector сразу вслед за его заголовком. Если фокус ввода передан окну Object Inspector, то одно из свойств выделенного компонента будет активным. Под активным подразумевается свойство, значение которого может быть подвержено изменению в данный момент. На рис. 1.2. Выделенным компонентом является форма Form1. Активным свойством – высота панели Height, значением свойства – константа 220.
Выделить компонент можно двумя способами – щелчком по компоненту либо непосредственным выбором из списка, который содержится в Object Inspector. Первый способ предпочтителен, т. к. позволяет быстро выделить желаемый компонент. Однако возможны ситуации, когда выделить компонент таким способом не удается. Так, если на форме расположены компоненты полностью заслонившие ее поле, то форму можно выбрать только воспользовавшись списком компонентов. Для этого нужно щелкнуть на кнопке с треугольником, который расположен сразу под заголовком окна Object Inspector, в выпавшем списке найти и щелкнуть по нужному компоненту. Сделать свойство активным просто. Для этого нужно щелкнуть в левой колонке Object Inspector по нужному свойству выделенного компонента. При этом Object Inspector получит фокус ввода. Если в его окне не видны свойства, то вероятнее всего, что не выделен компонент или активной является закладка Events (события). В этом случае в зависимости от ситуации нужно выделить компонент либо щелкнуть по закладке Proprties, а затем активизировать свойство. Изменить значение свойства выделенного компонента можно разными способами в зависимости от типа этого свойства. Его значение расположено в правой колонке Object Inspector напротив имени свойства.Всякий визуальный компонент имеет свой набор свойств. Ниже приведен список наиболее важных свойств, дано их описание и способы изменения значений. Значения можно изменять как вручную при визуальном программировании, так и программно (в ходе выполнения программы). Здесь указаны только те действия, которые программист может выполнять при визуальной разработке программы.
П р и м е ч а н и е. Значения свойств Top, Height, Width, Left компонента могут быть изменены с помощью мыши. Размеры компонента можно менять следующим образом. Например, если необходимо растянуть его вправо, то следует навести курсор на его правую границу, добиться того, чтобы курсор мыши принял форму двунаправленной стрелки, нажать левую клавишу мыши и, удерживая ее в нажатом состоянии, вести границу до нужной точки. Аналогично можно менять другие границы. Чтобы переместить весь компонент нужно навести на него курсор мыши, нажать ее левую клавишу и в нажатом состоянии вести мышь вместе с компонентом до нужной точки подложки. Закладка EventsОбразец закладки показан на рис. 1.3. Она служит для назначения и отображения событий и методов, которые обрабатывают эти события. Активным (редактируемым) событием на этом образце является OnClick, значением события – метод Panel1Click.Для того чтобы активизировать закладку нужно щелкнуть по ее ярлыку с надписью Events, который расположен в верхней правой части окна Object Inspector. События могут наступить только в работащей программе. Сами события готовятся и программируются в среде Delphi. Событиями могут быть щелчок по кнопке, нажатие клавиши, опускание клавиши, изменение размера компонента, активизация формы и т. д. Ниже дан список наиболее часто программируемых событий. Программирование компонентов и событий будет продемонстрировано на примере разработки нижеследующего приложения. Разработка нового приложения Закройте текущее приложение, выполнив команду File / Close All (Файл / Закрыть все) Если при этом Delphi задаст вопрос о сохранении изменений (Save changes to …?) ответьте отказом (щелкните на кнопке No). После этого на экране останется только панель инструментов Delphi. Полезные советы Далее Вам предстоит выполнить большое количество работы по набору различных текстов на клавиатуре. Вы можете облегчить эту работу в Object Inspector, если будете придерживаться следующих рекомендаций.
Заметим, что аналогичные операции по сохранению, копированию, перемещению и удалению можно совершать с использованием буфера обмена с другими объектами, например компонентами. Форма Form Приступим к созданию нового приложения. Выполните команду File/New/VCL Forms Application (Файл/Новое приложение). При этом окна Delphi примут вид, который показан на рис. 1.1. По умолчанию Delphi автоматически присваивает визуальному компоненту-форме имя Form1 (свойство Name).Изменим для начала некоторые свойства формы.
Метка Label Теперь положим на форму новый компонент Label (метка). Этот компонент предназначен для вывода простого текста. Для этого проделайте следующие манипуляции.
Окончательный вид формы показан ниже на рис. 1.4. Кнопка ButtonДалее, положите на форму кнопку Button. Ее пиктограмма находится на закладке Standard. Для этого выполните следующие действия.
Наконец, положите на форму еще одну кнопку Button, расположив ее под кнопкой bButtonForLabel. Дайте ей имя (свойство Name) bClose. Измените значение Caption на Закрыть (эта надпись должна появиться на кнопке).Теперь создайте два обработчика событий. Первое событие – нажатие кнопки bButtonForLabel (кнопка с надписью Надпись). Это событие будет вызвано тогда, когда в запущенной программе пользователь щелкнет по этой кнопке. Пусть, нужно, чтобы при щелчке по этой кнопке на форме появилась надпись Щелчок по верхней кнопке (это можно сделать и иначе, изменив из программы значение свойства Caption компонента L на эту надпись). Теперь создайте это событие. Для этого щелкните по кнопке bButtonForLabel, чтобы его атрибуты появились в окне Object Inspector. Далее в этом окне щелкните по закладке Events (события), затем дважды – по значению события OnClick (на щелчок). Это событие можно создать еще проще – просто дважды щелкнув по самой кнопке bButtonForLabel.Теперь форма должна скрыться под редактор кодов, а редактор должен появиться справа от окна Object Inspector. Окно в заголовке содержит надпись Unit1.pas. Обратите внимание, что Delphi создала текст, внутри которого расположен клавиатурный курсор: TfMain.bButtonForLabelClick(Sender: TObject); begin end; Это заготовка процедуры для обработчика события – щелчка по кнопке bButtonForLabel, расположенной на форме fMain. Внесите с клавиатуры в пространство между словами begin и end оператор, чтобы процедура приняла вид: TfMain.bButtonForLabelClick(Sender: TObject); begin L.Caption:='Щелчок по верхней кнопке'; end; Обратите внимание, что текст строки-значения свойства Caption заключен с обеих сторон в апострофы (апостроф расположен на нижнем регистре английской раскладки рядом с клавишей Enter). Не забудьте в конце оператора поставить символ ";" (точка с запятой).Теперь, если запустить приложение на выполнение, то при щелчке на кнопке с именем bButtonForLabel будет выполнен программный код этой процедуры, то есть те команды, которые расположены в ней между операторами begin ... end. Этот код состоит всего из одного оператора, где компоненту с именем L, его свойству Caption нужно присвоить значение, равное тексту, заключенному в апострофы. Как видим, менять значения свойств визуальных компонентов можно двумя способами: а) при редактировании программы через окно
Object Inspector в режиме
DisignTime, Верните форму наверх, щелкнув на панели Delphi по кнопке Toggle Form/Unit (или нажав кнопку F12 на клавиатуре). Теперь создайте обработчик события для второй кнопки – bClose. Щелчок по ней будет закрывать форму, а в нашем случае при наличии всего одной формы – кроме того заканчивать работу приложения. Щелкните дважды по кнопке bClose и внесите в процедуру-обработчик текст fMain.Close; Процедура должна иметь вид: TfMain.bCloseClick(Sender: TObject); begin fMain.Close; end; Данная процедура в работающей программе будет закрывать форму с именем fMain. А поскольку это главная форма, то при ее закрытии будет закрываться и само приложение. Мы закончили программировать наше первое приложение. Следующий этап – сохранение этого приложения. Сохранение приложения Теперь программу надо сохранить на диске. Щелкните на панели инструментов по кнопке Save All (сохранить все). Эту же операцию можно выполнить другим способом – с клавиатуры командой Ctrl+S (последовательно нажать клавиши Ctrl и S). При любом из этих способов на экране появится диалоговое окно с заголовком Save Unit1 As (сохранить Unit1 как). Здесь Delphi предлагает Вам выбрать место на диске для сохранения Вашего программного кода в файле (модуле) Unit1.pas. Если это Ваше первое приложение в Delphi, то сначала создайте отдельную личную папку точно также, как это делается в редакторе Microsoft Word. Проконсультируйтесь с преподавателем о том, где на дисковом пространстве памяти можно создать такую папку. Лучше всего дать ей длинное имя, например, Салимова Г (МТ 15-07 Б). Длинное имя, во-первых, наглядно отражает назначение папки и, во-вторых, эту папку легче и быстрее можно найти в иерархическом дереве папок и файлов, т. к. при визуальном поиске длинные имена привлекают внимание.Далее внутри этой папки создайте еще одну папку. Дайте ей имя MyFirst (от английского – мой первый, в нашем случае – мое первое приложение). Войдите в нее и сохраните модуль Unit1.pas, предварительно дав ему новое имя. Поскольку код предлагаемого к сохранению модуля Unit1.pas в нашем случае содержит описание формы fMain, то лучше всего изменить название Unit1.pas на Main.pas и затем щелкнуть по кнопке Сохранить.Вслед за этим Delphi немедленно выдаст новое диалоговое окно с заголовком Save Project1 As (сохранить Project1 как). Здесь Delphi предлагает сохранить приложение как проект под именем Project1.dproj. Можно согласиться с этим именем, но лучше дать другое. Например, им может быть MyFirst.dproj. Для сохранения снова нажмите кнопку Сохранить. Теперь приложение сохранено на диске. Что мы сохранили? Мы сохранили приложение в виде проекта в файле MyFirst.dproj и один программный модуль под именем Main.pas, который используется этим приложением. Если войти в папку, где сохранены эти модули, то там можно увидеть файл с именем Main.dfm. В этом файле сохранена визульная форма fMain нашего приложения. Запуск приложения Для того чтобы проверить как работает только что созданное приложение запустите его на выполнение. Щелкните на панели инструментов по кнопке Run с зеленым треугольником (выполнить). Эту же операцию можно выполнить, нажав на клавиатуре клавишу F9.После этого Delphi приступит к компиляции модуля Main.pas. Компиляцией называется автоматический перевод исходного Delphi-текста в аналогичный ему текст, записанный на внутреннем машинном языке. Текст скомпилированного модуля называется объектным кодом. Компиляцией занимается специальная программа, которая называется компилятор. Созданный компилятором код автоматически помещается в объектный модуль.После успешной компиляции всех модулей приложения компилятор выполняет сборку программного кода. На этой стадии компилятор подключает к объектному коду затребованные процедуры и функции из библиотечного набора Delphi. После сборки Delphi создает готовую программу с именем проекта и расширением exe. Модуль, представлящий готовую к выполнению программу, называется загрузочным модулем. Так в случае с нашим приложением это будет программа MyFirst.exe. После выполнения компиляции и линковки Delphi сразу запускает программу MyFirst.exe на выполнение. При этом по середине экрана появится созданная нами форма с заголовком Мое первое приложение на Delphi, надписью Пока ничего нет и двумя расположенными друг под другом кнопками. На верхней кнопке содержится надпись Надпись, а на нижней – Закрыть. Окно этого приложения показано на рис. 1.4. Рис. 1.4. Окна
Delphi и приложения MyFirst
в Delphi (режим DesignTime) и Щелкнте по кнопке Надпись. При этом на форме вместо надписи Пока ничего нет появится другая надпись Щелчок по верхней кнопке.Теперь эту кнопку можно нажимать сколько угодно. Внешне это не вызовет никаких изменений, т. к. будет моделироваться одно и то же событие – замена надписи метки L на один и тот же текст. Щелкните по кнопке Закрыть. Форма тотчас будет закрыта и приложение закончит свою работу. Вслед за этим произойдет возврат в среду Delphi, где редактирование нашего приложения можно продолжить. Приложение MyFirst.exe можно запускать и без Delphi. Оно является такой же программой, как любое другое приложение Windows и может быть запущено из проводника Windows.Если необходимо лишь откомпилировать приложение с целю создания загрузочного exe-модуля, то этот процесс можно запустить и выполнить сочетанием клавиш Ctrl+F9. Если в программе нет ошибок, то такой модуль будет создан и помещен в папку, отведенную под проект. Выход из Delphi Выполните команду File/Exit (Файл/Выход). Если к этому моменту Delphi видит несохраненные изменения, то она попросит разрешения на сохранение последних изменений. Вы можете их сохранить, ответив Yes, не сохранять, ответив No, либо отменить выход из Delphi, ответив Cancel.Как найти и открыть свой проект Если Вы только что запустили Delphi, то не исключена ситуация, когда в ней содержится другое приложение. Это может быть чужое приложение, которое создано не Вами или Ваше, но не нужное в настоящий момент приложение.Для того, чтобы вызвать в Delphi ранее созданное Вами приложение закройте текущее приложение командой File/Close All, выполните команду File/Open Project (Файл/Открыть проект), в открывшемся диалоговом окне отыщите в папках нужный проект (в нашем случае, файл MyFirst.dproj), щелкните по нему и нажмите кнопку Открыть. Часто после открытия проекта на экране отсутствуют привычные элементы. Например, иногда на экране нет окна Object Inspector или нет формы. Выполните команду View/Object Inspector (или нажмите F11). Инспектор объектов появится на экране. Для того, чтобы появилась форма выполните команду View/Forms (или нажмите Shift+F12), в выпавшем окне щелкните по имени формы, затем нажмите кнопку ОК. Форма появится на экране. Файлы приложения и их содержание При создании проекта, размещении на форме визуальных компонентов, изменении свойств компонентов и формы, при создании обработчииков событий Delphi генерирует текст программы на своем языке – исходный код. При необходимости программист может вносить свои изменения в код программы, подобно тому как создавались обработчики событий для кнопок. Ниже приведен листинг (распечатка) програмы MyFirst.Листинг 1.1. Программа MyFirst проекта MyFirstprogram MyFirst; uses {$R *.RES} begin Рассмотрим механизм запуска, работы и завершения программы MyFirst. Функциональная часть программы сосредоточена в операторах, заключенных между словами begin и end. Оператор Application.Initialize; инициализирует приложение, т. е. выполняет подготовительные операции перед запуском приложения. Далее выполняется оператор Application.CreateForm(TfMain, fMain); который создает и размещает в оперативной памяти форму fMain. Для того, чтобы программе было понятно откуда брать сведения об этой форме в секции uses указано, что искать ее нужно в модуле Main, который расположен в файле Main.pas. В секции uses есть также ссылка на библиотечный модуль Forms, который является фирменным Delphi-модулем и содержит процедурный аппарат для работы с формами. Оператором Application.Run приложение будет запущено на выполнение. По окончании работы форма и приложение будут разрушены, а память – освобождена.Текст модуля Main.pas, на который ссылается главный модуль программы, представлен ниже на листинге 2. Листинг 1.2. Модуль Main.pas проекта MyFirst unit Main;interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) L: TLabel; bButtonForLabel: TButton; bClose: TButton; procedure bButtonForLabelClick(Sender: TObject); procedure bCloseClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.bButtonForLabelClick(Sender: TObject); begin L.Caption:='Щелчок по верхней кнопке'; end; procedure TForm1.bCloseClick(Sender: TObject); begin Form1.Close; end; end. В первой строке файла Main.pas (листинг 2) указано имя модуля – Main. Delphi присваивает модулю то имя, которое задают при сохранении файла. Далее следует директива interface, которая делает все последующие элементы доступными для других модулей, использующих этот модуль. Интерфейсная часть модуля содержит объявления его общедоступных элементов. Все остальные элементы модуля недоступны другим модулям. Модули обычно используют программный код других модулей. Так, Main использует другие модули, которые перечислены в списке uses. Например, модули Forms, Classes, Graphics, Controls обеспечивают Main необходимыми сведениями о формах, компонентах и других требуемых элементах. Следующая секция программы type – раздел объявления типов. Например, тип TfMain – это тип формы, как объектно-ориентированный класс, основанный на базовом типе форм TForm. Из листинга видно, что этот тип содержит внутреннее объявление типов: TButton – для двух положенных на форму кнопок, TLabel – для метки. Ниже в секции var, объявлена переменная fMain типа TfMain. Эта переменная представляет собой указатель на область памяти, отводимую под все данные формы. Эта память заполняется тогда, когда при запуске программы оператор Application.CreateForm(TfMain, fMain) создает форму со всеми ее компонетами. По окончании работы, как сказано выше, эта форма будет разрушена, а память, занимаемая ею, освобождена. Далее следует секция implementation, в которой содержится процедурный аппарат модуля. В данном случае он представлен двумя процедурами обработки событий – для щелчков по двум кнопкам, которые расположены на форме fMain.Вопросы к отчету по теме "Разработка приложений в Delphi" Откройте программу MS Word и создайте отчет по данной теме. Для этого дайте ответы на нижеследующие вопросы. 1. Для чего предназначена программная среда Delphi? 2. Перечислите основные окна Delphi и укажите их назначение. 3. Что такое визуальный компонент Delphi и какие атрибуты он может иметь? 4. Приведите примеры 2-х визульных компонентов и опишите 4-5 их свойств. 5. Приведите примеры 2-х визульных компонентов и опишите 2-3 их события. 6. Для чего предназначены окно Object Inspector и его закладки? 7. Как изменить положение кнопки на форме, чтоб сделать ее отступ от левого края формы на 65 пикселов, от верхнего края на 40 пикселов, сделать ширину кнопки равной 70-ти пикселам, сделать надпись на кнопке Сохранить, задать кнопке имя B34? Как заменить надпись на заголовке формы на текст Вычисление значения функции? Как установить требуемый цвет формы, например сделать ее зеленой? 8. Что такое событие визуального компонента, какие события Вам известны? 9. Что нужно сделать чтоб в работающей программе при щелчке на какой-нибудь кнопке её ширина уменьшилась на 2 пиксела, а высота увеличилась на 1 пиксел? Продемонстрируйте работу такой кнопки преподавателю. 10. Какие файлы создаются средой Delphi при сохранении приложения и каково их назначение? 11. Что такое исходный код модуля, что называется объектным кодом и объектным модулем, что такое загрузочный модуль, в каких файлах они хранятся? Что такое компилятор среды Delphi и какие функции он выполняет? Как выполнить компиляцию приложения, не запуская его на выполнение? Как выполнить компиляцию приложения и запустить его выполнение? 12. В какой папке Вы сохранили свою первую программу? Откройте эту папку и покажите ее содержимое преподавателю. Запустите программу из этой папки, миную Delphi. Каким получился объем загрузочного модуля Вашей программы?
|