Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яву_кисо_delphi(1)(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

Лабораторная работа №3 Линейные вычислительные процессы

  1. Цель лабораторной работы

Целью лабораторной работы является приобретение практических навыков программирования линейных вычислительных процессов.

2. Условия: вычислить сумму квадратов каждой цифры трехзначного числа.

3. Используемые компоненты и их свойства

Имя

компонента

Настраиваемые свойства

Значения

Комментарии

1

2

3

4

5

1

Form1

(форма)

BorderIcons

BorderStyle

Caption

Menu

PopUpMenu

{biSystemMenu, biMinimize}

bsSingle

Summator

MainMenu1

PopUpMenu1

Системное меню

Кнопка минимизации

Рамка толщиной в 1 пиксель, окно не может изменять размеры

Заголовок формы

Главное меню

Меню по правой кнопке мыши (локальное)

2

Label1

(метка)

Caption

Введите трехзначное число

Надпись

3

Label 2

(метка)

Caption

Результат

Надпись

4

Button1

(кнопка)

Caption

Action

Выполнить

ARun

Надпись

Действие, связанное со свойством Action

5

Close

(Button 2,

кнопка)

Name

Action

Caption

Close

AClose

Выход

Имя компонента

Действие

Надпись

6

MaskEdit1

(специализированный редактор)

EditMask

MaxLength

Text

OnClick

! 999; 1; 0

3

|___|

MaskEdit1-

Click

Маска ввода

!-подавление ведущих пробелов

9-может содержать цифру

длина ввода

текст ввода

событие компонента

1

2

3

4

5

7

MainMenu1

(главное меню)

Name

Caption

Name

Name

Caption

Action

ShortCut

OnClick

Name

Caption

Name

Caption

Action

ShortCut

OnClick

Caption

Name

Name

Caption

OnClick

(страница Events)

Name

Caption

Name

Caption

OnClick

(страница Events)

MainMenu1

&Меню

Menu

MRun

&Выполнить

ARun

114

ARunExecute

N1

MClose

&Выйти

AClose

121

Aclose-

Execute

&Help

Help1

N3

Условие

NClick

N4

About…

&About

MaboutClick

Имя компонента

Наименование пункта меню

Имя пункта меню

Имя опции меню

Наименование опции меню

Действие

клавиша – акселератор F3

событие опции меню

имя опции меню

разделительная черта

имя опции меню

наименование опции меню

действие

клавиша – акселератор F10

событие опции меню

наименование пункта меню

имя пункта меню

имя опции меню

наименование опции меню

событие опции меню

имя опции меню

разделительная черта

имя опции меню

наименование опции меню

событие опции меню

1

2

3

4

5

8

PopUpMenu1

(локальное меню)

Name

Name

Caption

ShortCut

Action

OnClick

(страница Events)

Name

Caption

ShortCut

Action

OnClick

(страница Events)

Name

Caption

PopUpMenu1

PRun

Выполнить

114

ARun

ARunExecute

PClose

Выйти

121

AClose

AСlose-

Execute

N2

____

имя компонента

имя пункта меню

наименование пункта меню

клавиша – акселератор F3

действие

событие пункта меню

имя пункта меню

наименование опции меню

клавиша – акселератор F10

действие

событие пункта меню

имя пункта меню

разделительная черта

9

ActionList1

(механизм действий)

Actions

Name

Caption

OnExecute

(страница Events)

Actions

Name

Caption

OnExecute

ARun

ARun

ARun

ARunExecute

AClose

AClose

AClose

AСlose-

Execute

пункт свойства Actions

имя

значение, которое будет устанавливаться в свойствах Caption всех компонентов, связанных с этим действием.

событие пункта

пункт свойства Actions

имя

значение, которое будет

устанавливаться в свойствах Caption всех компонентов, связанных с этим действием.

событие пункта

Задание свойств осуществляется на странице Properties путем выбора соответствующей строки и задания ее значения. Компонент MainMenu - главное меню формы – после установки на форму создаются его опции. Для этого следует дважды щелкнуть по компоненту левой кнопкой и войти в редактор (Form1.MainMenu1). Для задания опции необходимо войти в инспектор объектов (страница Properties) и в поле Caption задать текст опции и нажать Enter и т.д. По умолчанию опция имеет имя N и соответствующий по порядку номер (№3, №2…). Каждый пункт меню, опция есть объект класса TMenuItem. Опция меню может быть связана с каким-то действием своим свойством Action (эти действия должны быть описаны в компоненте ActionList).

Компонент PopUpMenu1 – локальное меню. Его опции создаютя с помощью конструктора меню (Form1.PopUpMenu1). Так же, как и для MainMenu.

Компонент ActionList – механизм действий. Дважды щелкните по компоненту, размещенному на форме, и с помощью редактора Editing.Form1.ActionList1 создайте действия (ARun, AClose). Выделение любого из них позволяет получить в инспекторе объектов страницу свойств, относящихся к выделенному действию. Введите их, как определено выше.

Другие компоненты.

Необходимо отметить, что форма является основным блоком в Delphi. Любая программа имеет как минимум одну связанную с ней форму, которая называется главной. По умолчанию мы использовали обычную форму (свойство FormStyle=ssNormal).

Свойство BorderIcons определяет наличие кнопок в заголовке окна (biSystemMenu – имеется кнопка вызова системного меню; biMinimize – имеется кнопка минимизации).

Свойство BorderStyle определяет стиль рамки (bsSingle означает, что используется рамка толщиной в 1 пиксель; такое окно не может иметь свои размеры).

Свойство Caption позволяет присвоить форме вместо безликого Form1 некоторое другое название.

Свойства Menu и PopUpMenu связывают форму с главным меню, локальным меню. Форма имеет также ряд других свойств.

TLabel – метка – компонент этого класса предназначен для размещения на форме различного рода текстовых надписей (свойство Caption). Свойство Font позволяет разнообразить вид надписи (цвет, шрифт и т.п.).

TButton – кнопка – используется для управления программами. Связанный с кнопкой алгоритм управления реализуется в обработчике события OnClick. Кнопка имеет надпись (свойство Caption) и имя (свойство Name).

TMaskEdit – специализированный редактор – предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask. Если это свойство не задано, TMaskEdit работает как обычный редактор TEdit. Шаблон из трех частей, отделенных друг от друга символами. Первая часть задает маску ввода (! 999 ; ); вторая – это символ 0 или 1, определяющий записывает ли в Text результат наложения маски (1) или исходный текст (0); в третьей части указывается символ, который в окне редактора будет стоять в полях, предназначенных для ввода символов (у нас – 0, можно *).

4. Форма задания

5. Текст программы.

unit Umain;

interface

uses

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

Dialogs, Menus, ActnList, StdCtrls, Mask;

type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

MainMenu1: TMainMenu;

PopupMenu1: TPopupMenu;

ActionList1: TActionList;

Label2: TLabel;

Label3: TLabel;

Menu: TMenuItem;

MRun: TMenuItem;

N1: TMenuItem;

MClose: TMenuItem;

PRun: TMenuItem;

N2: TMenuItem;

PClose: TMenuItem;

ARun: TAction;

AClose: TAction;

Close: TButton;

MaskEdit1: TMaskEdit;

Help1: TMenuItem;

MAbout: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

procedure ACloseExecute(Sender: TObject);

procedure ARunExecute(Sender: TObject);

procedure MAboutClick(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure MaskEdit1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses UAbout;

{$R *.dfm}

procedure TForm1.ACloseExecute(Sender: TObject);

begin

Halt(1);

end;

procedure TForm1.ARunExecute(Sender: TObject);

var

St : String;

i : Integer;

Summ : Integer;

begin

summ:=0;

St:=MaskEdit1.Text;

for i:=1 to 3 do

begin

if st[i]=' '

then St[i]:='0'

else summ:=summ+StrToInt(St[i])*StrToInt(St[i]);

end;

Label3.Caption:=IntToStr(summ);

end;

procedure TForm1.MAboutClick(Sender: TObject);

begin

Application.CreateForm(TForm2, Form2);

end;

procedure TForm1.N3Click(Sender: TObject);

begin

ShowMessage('Вычислить сумму квадратов каждой'+

' цифры трёхзначного числа .');

end;

procedure TForm1.MaskEdit1Click(Sender: TObject);

begin

Label3.Caption:='0';

MaskEdit1.Text:='000';

end;

end.

6. Комментарии к тексту программы

Объявленный класс TForm1 содержит компоненты и методы, описанные в п.3. Необходимо определить код для пяти методов: ACloseExecute, ARunExecute, MAboutClick, N3Click, MaskEdit1Click. Перечень компонентов указывает имя компоненты, а также тот класс, к которому эта компонента относится (например, Label1: TLabel). Напомню, что каждый пункт меню относится к классу TMenuItem.

Процедура ACloseExecute обеспечивает закрытие формы Form1. Вызывается эта процедура как из главного меню, так и из локального по кнопке Выход.

Процедура MAboutClick обеспечивает создание формы Form2, на которой размещена рекламная информация. Имя модуля в котором содержится вызываемая форма, указывается в основной форме (см. Uses UAbout). Закрывается форма Form2 кнопкой ОК.

Процедура N3Click реализуется при выборе пункта меню Help и его опции Условие.Выводится стандартное окно сообщения (ShowMessage). Закрывается окно сообщения кнопкой ОК.

Процедура MaskEdit1Click реализуется по щелчку левой кнопкой мыши на компоненте MaskEdit1. При этом обнуляется поле ввода и поле результата.. Можно вводить новое число.

Процедура ARunExecute реализует действия, определенные заданием.

Функция StrToInt преобразует символьное представление цифры в численное значение.

Функция IntToStr преобразует число в символьное представление для вывода.

7. Содержание отчета

  • задание;

  • описание свойств используемых компонент и форм;

  • текст программы с комментариями;

  • результат вычислений.

8. Тренировочные вопросы к защите:

  1. Какие разновидности форм реализуются в Delphi?

  2. Что определяет свойство ActiveControl формы?

  3. Что определяет свойство формы BorderIcons?

  4. Какое свойство формы определяет стиль рамки?

  5. Способы задания клиентской части окна.

  6. Каким образом делается ссылка на главное меню, локальное меню формы?

  7. Каким образом в надписи Label можно указать оконный управляющий элемент?

  8. Что содержит свойство FocusControl компонента Label?

  9. Для чего можно использовать свойство AutoSize компонента Label?

  10. В каком обработчике события реализуется связанный с кнопкой Button алгоритм управления?

  11. Что понимается под модальным окном?

  12. Какие стандартные значения имеет ModalResult?

  13. Из каких трех частей состоит шаблон для компонента MaskEdit?

  14. Каким образом выглядит маска в MaskEdit, если необходимо вводить только цифры? только буквы?

  15. Каким образом создаются опции меню?

  16. Что содержит свойство Items компонента MainMenu?

  17. Как задать клавишу-акселератор для быстрого выбора опции меню?

  18. Какое свойство определяет индекс опции в списке Items?