Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_СА_СМ_ДМ.doc
Скачиваний:
36
Добавлен:
02.05.2019
Размер:
3.46 Mб
Скачать

Порядок выполнения работы

Пример 1.

  1. Открыть новое приложение.

  2. Поместить на форму компонент TMainMenu.

  3. В Инспекторе объектов выбрать свойство Items компонента MainMenu1 и щелкнуть на кнопке с тремя точками либо дважды щелкнуть левой кнопкой мыши на размещенном на форме компоненте меню. На экране появится Конструктор меню.

  4. С помощью Конструктора Меню создать меню, имеющее следующие пункты и подпункты (рис. 4.2). Используйте свойство Caption.

Рис. 4.2. Вид создаваемого меню

Чтобы элемент меню представлял собой разделительную линию, следует его свойству Caption задать значение ‘-‘.

Для создания подменю следует выбрать нужный элемент меню и щелкнуть правой кнопкой мыши. В появившемся контекстном меню необходимо выбрать пункт Create Submenu.

5. После ввода всех пунктов меню закройте окно редактора меню. Для определения реакции на выбор пунктов меню следует по очереди выбирать все пункты меню и щелкать по ним мышкой. В результате в окне Редактора Кода появится заготовка обработчика события OnClick. Для всех пунктов меню будем выдавать информационное сообщение, например

procedure TForm1.SaveClick(Sender:TObject);

begin

ShowMessage(‘Выбран пункт Сохранить’);

end;

6. Откомпилировать и выполнить приложение.

Пример 2. Разработка диалоговой программы для работы с произвольным массивом вещественных чисел.

Задание: упорядочить элементы данного массива по возрастанию.

  1. Открыть проект, созданный в предыдущем примере.

  2. Добавить на форму 2 компонента StringGrid. Установить следующие значения свойств: ColCount = 1, RowCount = 1, FixedCols = 0, FixedRows = 0, Visible = False. (Свойство Visible определяет видимость компонента. Если Visible = False, то компонент невидим.) Границы и расположение таблиц отрегулировать с помощью мыши. Для компонента StringGrid1 установить свойства: Options-> goEditing = True, Options->goAlwaysShowEditing = True.

  3. Добавить на форму компоненты Label1 и Label2. Свойству Caption одного из них присвоить значение Исходный массив, а другого – Полученный массив. Свойству Visible обоих компонентов присвоить значение False. Окончательный вид формы представлен на рис. 4.3.

Рис. 4.3. Вид формы приложения

  1. В разделе Type перед описанием формы добавить строку:

massiv= array [1..n] of real;

В раздел Var добавить: a, b: massiv;

  1. Реализовать обработку событий от меню «Создать массив». Предусмотреть формирование элементов массива с использованием датчика случайных чисел (меню «Автомат») и путем ввода с клавиатуры (меню «Ввод»). Обработку события выбора пункта меню Массив СоздатьВвод определить следующим образом:

procedure TForm1.VvodClick(Sender: TObject);

begin

Label1.Visible:=True;

StringGrid1.Visible:=True;

ShowMessage('Введите элементы массива, после каждого элемента нажимайте Enter');

end;

Для выбора пункта меню Массив СоздатьАвтомат реакция на событие будет иметь следующий вид:

procedure TForm1.AvtomatClick(Sender: TObject);

var i:byte;

begin

Label1.Visible:=True;

StringGrid1.Visible:=True;

for i:=1 to n do

StringGrid1.Cells[i-1,0]:=IntToStr(random(100));

StringGrid1.Enabled:=False;

end;

  1. Выделить компонент StringGrid1, выбрать на вкладке Events инспектора объектов событие OnKeyPress и сделать двойной щелчок. Обработчик события определить следующим образом:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then

if StringGrid1.Col < StringGrid1.ColCount - 1

then // курсор в следующую ячейку таблицы

StringGrid1.Col := StringGrid1.Col +1

else StringGrid1.Enabled:=False; // Когда Enabled = False, доступ к компоненту запрещен.

end;

  1. Реализовать обработку события от меню МассивРедактировать:

procedure TForm1.EditMassivClick(Sender: TObject);

begin

StringGrid1.Enabled:=True;

ShowMessage('Вы можете изменить значения элементов массива');

end;

  1. Обработчик события от меню Работа определить так:

procedure TForm1.WorkClick(Sender: TObject);

var i,j:byte; t:real; c:boolean;

begin

for i:=1 to n do

a[i]:=StrToFloat(StringGrid1.Cells[i-1,0]);

b:=a;

repeat

c:=false; // пусть в текущем цикле нет обменов

for i:=1 to n-1 do

if b[i] > b[i+1] then

begin // обменяем i-й и i+1-й элементы

t := b[i];

b[i] := b[i+1];

b[i+1] := t;

c := true;

end;

until not c;

Label2.Visible:=True;

StringGrid2.Visible:=True;

for i:=1 to n do

StringGrid2.Cells[i-1,0]:=FloatToStr(b[i]);

end;

  1. Реализовать обработку событий от меню «Сохранить массив» и «Загрузить массив». Для выбора имени файла при сохранении/загрузке массива следует использовать стандартные диалоги – компоненты TSaveDialog и TOpenDialog, которые находятся на вкладке Dialogs. Диалог вызывается с помощью процедуры Execute. Загрузку массива из файла определить следующей процедурой:

procedure TForm1.LoadClick(Sender: TObject);

var f:TextFile; i:byte;d:real;

begin

Label1.Visible:=True;

StringGrid1.Visible:=True;

If OpenDialog1.Execute=True then

begin

AssignFile(f,OpenDialog1.FileName);

Reset(f);

for i:=1 to n do

begin

read(f,d);

StringGrid1.Cells[i-1,0]:=FloatToStr(d);

end;

StringGrid1.Enabled:=False;

end;

end;

Сохранение массива определить так:

procedure TForm1.SaveClick(Sender: TObject);

var f:TextFile; i:byte;

begin

SaveDialog1.Execute;

AssignFile(f,SaveDialog1.FileName);

Rewrite(f);

writeln(f,'Исходный массив:');

for i:=1 to n do

write(f,FloatToStrF(a[i],ffFixed,5,2), ' ');

writeln(f);

writeln(f,'Полученный массив:');

for i:=1 to n do

write(f,FloatToStrF(b[i],ffFixed,5,2), ' ');

CloseFile(f);

end;

  1. Реализовать обработку события от меню МассивОчистить:

procedure TForm1.ClearClick(Sender: TObject);

var i:byte;

begin

for i:=1 to n do

begin

StringGrid1.Cells[i-1,0]:='';

StringGrid2.Cells[i-1,0]:='';

end;

StringGrid1.Enabled:=True;

StringGrid2.Visible:=False;

label2.Visible:=False;

end;

  1. Реализовать выход из программы.