К содержанию

goldline.GIF (303 bytes)

1. РАЗРАБОТКА ПРИЛОЖЕНИЙ В Delphi

goldline.GIF (303 bytes)

Запустите Delphi. На экране должно появиться изображение, содержащее главные окна Delphi (рис. 1.1). С помощью Delphi мы будем писать свои приложения (компьютерные программы).

Рис.1.1. Главные окна Delphi

Основными являются четыре окна:

  • окно панелей инструментов,
  • окно Object Inspector,
  • окно формы,
  • окно редактора кода исходного модуля.

Первые три окна видны на рис. 1.1. Последнее – четвертое окно – лежит под окном формы в правом нижнем углу рисунка. Над панелью инструментов расположено главное меню Delphi.

Первые два окна относятся к самой среде Delphi, два последних - к создаваемому программистом приложению (программе).

Состав среды Delphi

В интегрированную среду разработки приложений (IDE) входит несколько основных элементов. Рассмотрим их по порядку.

  • Главное меню. Стандартное меню в стиле Windows. "Пройдитесь" по пунктам меню для простого ознакомления с ним.
  • Панели инструментов содержит инструменты управления проектом (приложением), который разрабатывает пользователь с использованием ресурсов среды Delphi. Панель содержит кнопки действий и закладки палитры визуальных компонентов. Для того, чтобы узнать назначение кнопок подведите курсор мыши к кнопке и дождитесь появления под ней подсказки (hint). Использование кнопок позволяет значительно повысить скорость работы при составлении программы. При необходимости функции кнопок можно продублировать с клавиатуры или с помощью главного меню. Например, для запуска программы на выполнение можно нажать кнопку Run (кнопка с зеленым треугольником) или нажать на клавиатуре клавишу F9, или выполнить команду Run/Run (в меню Run щелкнуть на строке Run выпавшего подменю (щелкнуть - значит подвести курсор мыши к требуемой части экрана и коротким щелчком нажать ее левую клавишу).
  • Палитра визуальных компонентов состоит из панелей с закладками, на которых расположены пиктограммы визуальных компонентов (VCL – Visual Component Library). Чтобы положить такой компонент на экранную форму, нужно щелкнуть по компоненту, затем по форме в том месте, где хотите расположить компонент. Компонент появится на форме. Если нужно переместить на форме уже положенный на нее компонент, его выделяют щелчком мыши (выделенный компонент будет обрамлен черными квадратиками) и еремещают мышью в нужное место формы.
  • Окно Object Inspector служит для назначения свойств и событий визуальным компонентам. Чтобы их назначить нужно щелкнуть по компоненту. При этом компонент будет выделен, а в Object Inspector появятся данные об этом компоненте, которые при необходимости можно изменять с помощью мыши или клавиатуры. Например, если Вы положили на форму кнопку Button (закладка Standard палитры компонентов) и выделили ее, то длину кнопки можно изменить явно, используя окно Object Inspector. Детальное описание окна дано в следующем параграфе.
  • Окно формы представляет собой визуальную экранную форму создаваемого приложения с нанесенными на нее экранными компонентами (у новой формы компонентов, разумеется, нет). Форма – это окно, которое появляется на экране при запуске программы. Создаваемая пользователем программа может активизировать вызов других форм. Размер формы или eе положение на экране можно произвольно менять. Это можно делать с помощью Object Inspector или с помощью мыши. Например, чтобы изменить ширину формы, ведите курсор мыши к ее правому краю до тех пор, пока этот курсор не примет вид двунаправленной стрелки. Теперь нажмите левую клавишу мыши и в таком состоянии ведите мышь, растягивая или сжимая форму до нужных размеров. Чтобы передвинуть форму, ухватите ее за заголовок и с нажатой левой клавишей мыши уведите ее в желаемое место экрана. То же можно делать с окном Object Inspector и панелью инструментов. Этим далеко не исчерпываются возможности изменения свойств формы. Далее этот вопрос будет рассмотрен более детально.
  • Редактор кода предназначен для ручной коррекции программного кода исходного модуля. Обычно он находится под формой и поэтому иногда не виден на экране. Чтобы сделать его видимым, щелкните на панели инструментов по кнопке Toggle Form/Unit или нажмите кнопку F12 на клавиатуре. При этом форма и редактор кода поменяются местами, т. е. форма скроется под редактором кода, а редактор станет видимым. Delphi сама пишет код модуля, повинуясь действиям программиста, манипулирующего компонентами. Например, когда Вы кладете на форму какой-либо компонент, изменяете его свойства мышью или через Object Inspector, Delphi автоматически вносит в код модуля соответствующие изменения. Однако очень часто код приходится дополнять вручную. Именно в этих ситуациях используют редактор кода.

Окно Object Inspector

Это окно играет ключевую роль при визуальном программировании и предназначено для изменения значений свойств визуальных компонентов и назначения событий для компонентов, которые могут обрабатываться создаваемым в Delphi  приложением (программой). Окно имеет две закладки – Properties (свойства) и Events (события). Выбор закладки производится щелчком на нужном ярлычке окна.

Для выбора свойств и событий компонента нужно щелкнуть по нему на форме. При этом компонент будет выделен, а его атрибуты появятся в окне Object Inspector. При множественном выборе (при помощи клавиши Shift и мыши) в окне появятся только общие атрибуты выделенных компонентов, что позволяет вносить изменения в атрибуты всех выделенных компонентов.

Закладка Properties

Образец этой закладки показан на рис. 1.1 в окне Object Inspector. Отдельно закладка показана на рис. 1.2. Она отображает свойства и значения свойств того компонента, который в данный момент является выделенным. Имя выделенного компонента расположено в Object Inspector сразу вслед за его заголовком. Если фокус ввода передан окну Object Inspector, то одно из свойств выделенного компонента будет активным. Под активным подразумевается свойство, значение которого может быть подвержено изменению в данный момент.  На рис. 1.2. Выделенным компонентом является форма Form1. Активным свойством – высота панели Height, значением свойства – константа 220.

 
     
Рис. 1.2. Закладка Properties (свойства)      Рис. 1.3. Закладка Events (события)

Выделить компонент можно двумя способами – щелчком по компоненту либо непосредственным выбором из списка, который содержится в Object Inspector. Первый способ предпочтителен, т. к. позволяет быстро выделить желаемый компонент. Однако возможны ситуации, когда выделить компонент таким способом не удается. Так, если на форме расположены компоненты полностью заслонившие ее поле, то форму можно выбрать только воспользовавшись списком компонентов. Для этого нужно щелкнуть на кнопке с треугольником, который расположен сразу под заголовком окна Object Inspector, в выпавшем списке найти и щелкнуть по нужному компоненту.

Сделать свойство активным просто. Для этого нужно щелкнуть в левой колонке Object Inspector по нужному свойству выделенного компонента. При этом Object Inspector получит фокус ввода. Если в его окне не видны свойства, то вероятнее всего, что не выделен компонент или активной является закладка Events (события). В этом случае в зависимости от ситуации нужно выделить компонент либо щелкнуть по закладке Proprties, а затем активизировать свойство.

Изменить значение свойства выделенного компонента можно разными способами в зависимости от типа этого свойства. Его значение расположено в правой колонке Object Inspector напротив имени свойства.

Всякий визуальный компонент имеет свой набор свойств. Ниже приведен список наиболее важных свойств, дано их описание и способы изменения значений. Значения можно изменять как вручную при визуальном программировании, так и программно (в ходе выполнения программы). Здесь указаны только те действия, которые программист может выполнять при визуальной разработке программы.

  • Align – тип расположения компонента на подложке (таким свойством обладает, например компонент Panel – панель). Значения выбираются из предлагаемого списка: alBottom – снизу на всю ширину подложки, alClient – все свободное пространство подложки, alLeft – слева на всю высоту подложки, alNone – управление расположением не контролируется и может быть выполнено вручную, alRight – справа на всю высоту подложки, alTop – сверху на всю ширину подложки. Выбор производится в правой колонке щелчком по кнопке с треугольником, затем – по желаемому значению.
  • Alignment способ расположения надписи на компоненте. Значения выбираются из предлагаемого списка: taCenter – по центру, taLeftJustify – слева, taRightJustify – справа.
  • AutoSize – автоматическое изменение ширины (Width) компонента в зависимости от длины надписи. Имеет два значения – True (истина) и False (ложь). При истинном значении ширина компонента в работающей программе будет равна длине надписи, при ложном – останется неизменной (при этом часть длинной надписи может оказаться скрытой).
  • Caption – надпись на компоненте (кнопке, панели, заголовке формы и т. д.). По умолчанию совпадает с именем. Его значение в большинстве случаев программист изменяет с клавиатуры. Допустимо использование любых символов.
  • Color – цвет подложки (фон). Выбирается из предлагаемого списка (например, clRed – красный, clWhite – белый и т. д.).
  • Enabled – доступность компонента. Выбирается из значений True (доступен) и False (недоступен). Например, для кнопки значение Enabled = False означает ее недоступность (на "немой" кнопке щелчок не вызовет событие, которое за ней закреплено), для формы – недоступность управления всеми ее элементами ("немой" формой можно управлять только программно).
  • Font – шрифт надписи на компоненте. Параметры фонта выбираются из предлагаемых списков. Для их изменения нужно щелкнуть по значению, затем по кнопке с троеточием. В выпавшем окне можно изменить наименование шрифта, атрибуты, размер, цвет и начертание символов.
  • Height – высота компонента в пикселах (пиксел – наименьший размер экранного образа). Вводится с клавиатуры.
  • Hint – текст всплывающей подсказки. Если свойство ShowHint установлено в True, то при наведении курсора мыши на компонент в работающей программе на короткое время появляется и затем исчезает текст, который внесен значением в Hint.
  • Left – расстояние в пикселах от левой границы компонента до левой границы подложки. Например, если кнопка Bt3 лежит на форме и Bt3.Left = 200, то кнопка будет смещена на 200 пикселов влево относительно левой границы формы.
  • Nameимя компонента. Главное свойство любого компонента. При размещении компонента Delphi сразу дает ему имя. Например, если последовательно положить на форму три кнопки Button, то они получат имена Button1, Button2, Button3, если таковых нет у других компонентов модуля. Имена можно менять. Они должны отвечать правилам построения имен (идентификаторов) языка Object Pascal. Все компоненты модуля должны иметь разные имена. Изменения производятся с клавиатуры.
  • PopupMenu – имя всплывающего меню. Обычно значение этого свойства остается пустым. Однако иногда свойство может быть использовано совместно с компонентом PopupMenu (закладка Standard). Если таковой имеется, то его можно вызвать, назначив его имя значением свойства выделенного компонента. Пусть, например, имеется запрограммированный компонент PopupMenu с именем PM и значением свойства PopupMenu выделенного компонента Panel является PM. Если в работающей программе навести курсор мыши на эту панель и нажать правую клавишу мыши, то активизируется и всплывет над панелью меню с именем PM. Его левый верхний угол будет в том месте, где находился курсор мыши в момент нажатия ее правой клавиши. Вводится с клавиатуры.
  • ShowHint – устанавливает нужно ли показывать всплывающую подсказку. Выбирается из значений True (показывать) и False (не показывать). Используется совместно со свойством Hint. Значение по умолчанию – False.
  • TabOrder порядковый номер компонента. Используется при обходе компонентов с помощью клавиши <Tab>. Например, если на форме расположено несколько компонентов, то после каждого нажатия клавиши <Tab> фокус будет передаваться компонентам в том порядке, каков их TabOrder. Удобен при работе с несколькими строками ввода, когда ведется интенсивный ввод данных с клавиатуры обеими руками. При этом переход от строки к строке может быть произведен также с клавиатуры при помощи клавиши <Tab> (т. е. без мыши, использование которой в данной ситуации существенно снизило бы производительнось работы).
  • Tag – резервная переменная. На работу программы не влияет и может быть использована по усмотрению программиста.
  • Top – расстояние в пикселах от верхней границы компонента до вершины подложки, на которой он размещен.
  • Visible – видимость компонента. Выбирается из значений True (видим) и False (не видим). Например, если панель имеет значение P.Visible = False, то в работающей программе эта панель и все компоненты, которые на ней расположены, не будут видны. Если в программе выполнить оператор P.Visible := True, то панель и лежащие на ней компоненты станут видимыми.
  • Width – ширина компонента в пикселах. Вводится с клавиатуры.

П р и м е ч а н и е. Значения свойств Top, Height, Width, Left компонента могут быть изменены с помощью мыши. Размеры компонента можно менять следующим образом. Например, если необходимо растянуть его вправо, то следует навести курсор на его правую границу, добиться того, чтобы курсор мыши принял форму двунаправленной стрелки, нажать левую клавишу мыши и, удерживая ее в нажатом состоянии, вести границу до нужной точки. Аналогично можно менять другие границы. Чтобы переместить весь компонент нужно навести на него курсор мыши, нажать ее левую клавишу и в нажатом состоянии вести мышь вместе с компонентом до нужной точки подложки.

Закладка Events

Образец закладки показан на рис. 1.3. Она служит для назначения и отображения событий и методов, которые обрабатывают эти события. Активным (редактируемым) событием на этом образце является OnClick, значением события – метод Panel1Click.

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

Ниже дан список наиболее часто программируемых событий.

  • OnClick – на щелчок. Наиболее используемое событие. Наступает при щелчке левой клавиши мыши по компоненту, например кнопке, метке, панели и т. д.
  • OnDblClick – на двойной щелчок. Событие наступает при быстром двукратном щелкании левой клавиши мыши по компоненту.
  • OnDragDrop – на "перетащить и опустить". Событие – перетаскивание визуального компонента с помощью мыши на другое место.
  • OnKeyDown – на движение нажатой клавиатурной клавиши вниз.
  • OnKeyUp – на опускание клавиатурной клавиши (движение вверх).
  • OnKeyPress – на нажатие клавиатурной клавиши.
  • OnMouseDown – на движение нажатой левой клавиши мыши вниз.
  • OnMouseUp – на опусканние левой клавиши мыши (движение вверх).
  • OnMouseMove – на плоское движение левой клавиши мыши в нажатом состоянии по поверхности компонента.
  • OnEnter – на вход.
  • OnExit – на выход.

Программирование компонентов и событий будет продемонстрировано на примере разработки нижеследующего приложения.

Разработка нового приложения

Закройте текущее приложение, выполнив команду File / Close All (Файл / Закрыть все) Если при этом Delphi задаст вопрос о сохранении изменений (Save changes to …?) ответьте отказом (щелкните на кнопке No). После этого на экране останется только панель инструментов Delphi.

Полезные советы

Далее Вам предстоит выполнить большое количество работы по набору различных текстов на клавиатуре. Вы можете облегчить эту работу в Object Inspector, если будете придерживаться следующих рекомендаций.

  1. Если после щелчка по тексту какого-нибудь свойства выделенного визуального компонента текст окрасился в синий цвет (цвет выделения), то нажатие клавиши Delete вызовет уничтожение выделенного текста.
  2. Если текст выделен, то можно не удаляя его, сразу начинать набор нового текста, т. к. старый текст исчезнет при этом автоматически.
  3. Снять выделение текста можно щелчком мыши в любом месте теста.
  4. Если текст не выделен, то быстро выделить весь текст строки можно следующим приемом: щелкните по тексту, нажмите клавишу Home (клавиатурный курсор сразу встанет в начало строки), нажмите клавишу Shift и, задержав ее нажатой, нажмите клавишу End. Отпустите обе клавиши.
  5. Если необходимо выделить не весь текст, а только его фрагмент, то поставьте курсор клавиатуры в начало фрагмента, который необходимо выделить, нажмите и держите нажатой клавишу Shift. Нажимайте или держите нажатой клавишу перемещения курсора вправо (клавиша со стрелкой, указывающий направление вправо) до тех пор, пока не будет выделен весь фрагмент. Аналогично можно выделить текст справа налево.
  6. Чтобы запомнить выделенный текст нажмите клавишу Ctrl, и, не отпуская ее, нажмите клавишу Insert. При этом выделенный фрагмент будет запомнен в буфере обмена. Отпустите обе клавиши.
  7. Чтобы вставить текст из буфера обмена установите курсор клавиатуры в нужное место текста. Этого можно сделать щелкнув мыщью в этом месте или переместить курсор кнопками клавиатуры. Нажмите клавишу Shift, и, не отпуская ее, нажмите клавишу Insert. Запомненный ранее в буфере обмена текст будет вставлен.
  8. Запомненный в буфере текст можно вставлять многократно всюду, где это необходимо.

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

Форма Form

Приступим к созданию нового приложения.

Выполните команду File/New/VCL Forms Application (Файл/Новое приложение). При этом окна Delphi примут вид, который показан на рис. 1.1.  

По умолчанию Delphi автоматически присваивает визуальному компоненту-форме имя Form1 (свойство Name).

Изменим для начала некоторые свойства формы.

  1. Щелкните по форме. Теперь Object Inspector настроен на атрибуты формы.
  2. В Object Inspector измените имя формы (свойство Name), набрав в правом столбце напротив наименования этого свойства замените текст Form1 на fMain.
  3. Свойство Position измените на poDesktopCenter (для этого щелкните по значению этого свойства и затем в выпавшем меню щелкните по значению poDesktopCenter). Это означает, что Вы желаете чтобы после запуска программы форма располагалась по середине экрана. Прежнее свойство poDesigned, которое было назначено свойству Position по умолчанию, означает, что окно формы после запуска программы должно располагаться там, где его расположил программист при составлении программы.
  4. Значение свойства Caption измените с клавиатуры на строку Мое первое приложение на Delphi (обратите внимание, что эта строка появилась в заголовке формы).
  5. Сделайте при помощи мыши высоту формы 3 – 4 см, ее ширину 8 – 10 см. Нажмите кнопку F12. Обратите внимание, что теперь видно окно редактора кода, в заголовке которого указано имя редактируемого исходного модуля Unit1.pas. В нем содержится программный код, который Delphi уже написала на своем языке.

Метка Label

Теперь положим на форму новый компонент Label (метка). Этот компонент предназначен для вывода простого текста. Для этого проделайте следующие манипуляции.

  1. Щелкните по закладке Standard панели визуальных компонентов, затем – по компоненту Label и, наконец, – по форме fMain. При этом компонент Label ляжет на форму в то место, куда был произведен щелчок.
  2. Измените его имя (свойство Name) на L.
  3. Свойство AutoSize – на False (ложь). Это означает, что размер видимой части метки будет таким, каким его задал программист.
  4. Растяните с помощью мыши или Object Inspector компонент Label по всей ширине формы и поднимите его так, чтобы расстояние от заголовка формы до компонента Label составляло 8 пикселов. Для этого в Object Inspector значение свойства Top компонента L сделайте равным 8.
  5. Значение свойства Alignment сделайте равным paCenter (расположить текст по середине метки).
  6. Измените значения атрибутов свойства Font (шрифт) компонента Label, задав размер фонта 12, цвет символов – темно-синий, начертание – полужирный. Чтобы войти в окно значений атрибутов фонта щелкните по надписи TFont свойства Font, затем – по кнопке с троеточием, и в открывшемся диалоговом окне назначьте названные значения.
  7. Свойство Caption измените на текст Пока ничего нет.

Окончательный вид формы показан ниже на рис. 1.4.

Кнопка Button

Далее, положите на форму кнопку Button. Ее пиктограмма находится на закладке Standard. Для этого выполните следующие действия.

  1. Щелкните по форме (но, не по компоненту Label !) и положите Button также, как компонент Label.
  2. Расположите его примерно по середине ширины формы.
  3. Измените его имя на bButtonForLabel, а Caption – на Надпись.

Наконец, положите на форму еще одну кнопку Button, расположив ее под кнопкой bButtonForLabel. Дайте ей имя (свойство Name) bClose. Измените значение Caption на Закрыть (эта надпись должна появиться на кнопке).

Теперь создайте два обработчика событий.

Первое событие – нажатие кнопки bButtonForLabel (кнопка с надписью Надпись). Это событие будет вызвано тогда, когда в запущенной программе пользователь щелкнет по этой кнопке. Пусть, нужно, чтобы при щелчке по этой кнопке на форме появилась надпись Щелчок по верхней кнопке (это можно сделать и иначе, изменив из программы значение свойства Caption компонента L на эту надпись).

Теперь создайте это событие. Для этого щелкните по кнопке bButtonForLabel, чтобы его атрибуты появились в окне Object Inspector. Далее в этом окне щелкните по закладке Events (события), затем дважды – по значению события OnClick (на щелчок). Это событие можно создать еще проще – просто дважды щелкнув по самой кнопке bButtonForLabel.

Теперь форма должна скрыться под редактор кодов, а редактор должен появиться справа от окна Object Inspector. Окно в заголовке содержит надпись Unit1.pas. Обратите внимание, что Delphi создала текст, внутри которого расположен клавиатурный курсор:

procedure TfMain.bButtonForLabelClick(Sender: TObject);
begin

end;

Это заготовка процедуры для обработчика события – щелчка по кнопке bButtonForLabel, расположенной на форме fMain. Внесите с клавиатуры в пространство между словами begin и end оператор, чтобы процедура приняла вид:

procedure TfMain.bButtonForLabelClick(Sender: TObject);
begin
 L.Caption:='Щелчок по верхней кнопке';

end;

Обратите внимание, что текст строки-значения свойства Caption заключен с обеих сторон в апострофы (апостроф расположен на нижнем регистре английской раскладки рядом с клавишей Enter). Не забудьте в конце оператора поставить символ ";" (точка с запятой).

Теперь, если запустить приложение на выполнение, то при щелчке на кнопке с именем bButtonForLabel будет выполнен программный код этой процедуры, то есть те команды, которые расположены в ней между операторами begin ... end. Этот код состоит всего из одного оператора, где компоненту с именем L, его свойству Caption нужно присвоить значение, равное тексту, заключенному в апострофы.

Как видим, менять значения свойств визуальных компонентов можно двумя способами:

а) при редактировании программы через окно Object Inspector в режиме DisignTime,
б) программно посредством исполнения программного кода запущенной на выполнение программы, т.е. в режиме RunTime.

Верните форму наверх, щелкнув на панели Delphi по кнопке Toggle Form/Unit (или нажав кнопку F12 на клавиатуре).

Теперь создайте обработчик события для второй кнопки – bClose. Щелчок по ней будет закрывать форму, а в нашем случае при наличии всего одной формы – кроме того заканчивать работу приложения.

Щелкните дважды по кнопке bClose и внесите в процедуру-обработчик текст fMain.Close;

Процедура должна иметь вид:

procedure 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) и
окно формы запущенноого на выполнение приложения MyFirst (режим RunTime)
после щелчка на кнопке bButtonForLabel

Щелкнте по кнопке Надпись. При этом на форме вместо надписи Пока ничего нет появится другая надпись Щелчок по верхней кнопке.

Теперь эту кнопку можно нажимать сколько угодно. Внешне это не вызовет никаких изменений, т. к. будет моделироваться одно и то же событие – замена надписи метки 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 проекта MyFirst

program MyFirst;

uses
Forms,
Main in 'Main.pas' {fMain};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TfMain, fMain);
Application.Run;
end.

Рассмотрим механизм запуска, работы и завершения программы 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. Каким получился объем загрузочного модуля Вашей программы?

 

К содержанию