Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
09.03.2016
Размер:
1.23 Mб
Скачать

Матрицы MainMenu- главное меню формы Галерея компонентов вкладка Standard/MainMenu

После установки компонента на форму необходимо создать пункты меню. Для этого можно выбрать один из следующих способов:

  • дважды щелкнуть на компоненте левой клавишей мыши;

Рисунок 1

  • щелкнуть на компоненте правой клавишей мыши и в контекстном меню выбрать пункт Menu Designer;

Рисунок 2

  • щелкнуть в правой половине строки свойства Items в окне инспектора объектов.

Откроется окно конструктора меню. Для каждого пункта меню и подменю перейдите в окно ИО и свойстве

Caption введите название пункта меню и подменю, после чего нажмите Enter или щелкните по пункту меню на форме.

Рисунок 3

Рисунок 4

Для пунктов меню и подменю, предполагающих какие либо действия (ввод/вывод, вычисления и т. д.), т.е. обработку событий, в окне ИО на вкладке Events (события) дважды щелкните в правой части события OnClick. В программе автоматически создается процедура для вставки фрагмента программы обработки события (например, формирование матрицы).

Вставка электронной таблицы Галерея компонентов вкладка ActivX/F1Book

//запись в F1book1

F1book1.TextRC[1,3]:='Исходная матрица'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+1,j]:=a[i,j]; //печать матрицы в электронной таблице

//запись в F1book1

F1book1.TextRC[10,3]:='Обмен 3 и 6 столбцов'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+10,j]:=a[i,j];

F1book1.TextRC[19,3]:='Обмен 2 и 5 строк'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+19,j]:=a[i,j];

Label4.caption:=format('%7.2f',[sr]); - вывод вещественного числа в формате 7.2f на метку;

--------------------------------------------------------------------------------------------------------------

label6.caption:=format('%5d',[l]); - вывод целого числа в формате 5D на метку;

-------------------------------------------------------------------------------------------------------------

//Формирование вектора и вывод его на метку Label10

procedure TForm1.N10Click(Sender: TObject);

var s:string ;

begin

for i:=1 to 8 do

begin

b[i]:=Trunc(a[i,i]);

s:=s+Floattostr(b[i])+#9; // Преобразование элементов вектора в строковый тип

// и запись в буферную строку S; +#9 табуляция

end;

label10.caption:=s; // Вывод вектора на метку 10 в форме

s:=s+#13; // Перевод строки

end;

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, AxCtrls, OleCtrls, VCF1, Menus, Buttons;

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

F1Book1: TF1Book;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

BitBtn1: TBitBtn;

N9: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

Label9: TLabel;

Label10: TLabel;

procedure N1Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure N5Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure N8Click(Sender: TObject);

procedure N10Click(Sender: TObject);

procedure N11Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type matr=array[1..8,1..8]of real;

var

Form1: TForm1;

a:matr; b:array[1..8] of real;

l,k,i,j:integer;

sl,sr,buf:real;

f:textfile;

implementation

{$R *.dfm}

Function Sred(d:matr;n:integer):real; // среднее значение матрицы

var s:real;

begin

s:=0;

for i:=1 to n do

for j:=1 to n do

s:=s+d[i,j];

sred:=s/(n*n);

end;

Function Sled(d:matr;n:integer):real; // след матрицы

var s:real;

begin

s:=0;

for i:=1 to n do

s:=s+d[i,i];

sled:=s;

end;

Function ChSred(d:matr;n:integer;srm:real):integer; // среднее значение матрицы

var t:integer;

begin

t:=0;

for i:=1 to n do

for j:=1 to n do

if d[i,j]<srm then t:=t+1;

ChSred:=t;

end;

procedure Stm(var d:matr; n:integer); // процедура обмена столбцов матрицы

begin

for i:=1 to n do

begin

buf:=d[i,3];

d[i,3]:=d[i,6];

d[i,6]:=buf;

end;

end;

procedure Strm(var d:matr; n:integer); // процедура обмена сттрок матрицы

begin

for j:=1 to n do

begin

buf:=d[2,j];

d[2,j]:=d[5,j];

d[5,j]:=buf;

end;

end;

procedure Fm(var d:matr; n:integer); // процедура Формирования матрицы

begin

for i:=1 to n do

for j:=1 to n do

if j>3 then d[i,j]:=sqr(cos(arctan(pi/(i+j))))+i else d[i,j]:=sqr(i-j)/(3+exp(2/5*ln(i+j)))-i;

end;

procedure Zm(d:matr; n:integer; name:string); //запись матрицы в файл

begin

AssignFile(f,'peзультаты.txt');

append(f);

writeln(f,name);

for i:=1 to n do

begin

for j:=1 to n do

write(f,d[i,j]:8:3);

writeln(f);

end;

writeln(f);

closeFile(f);

end;

procedure TForm1.N1Click(Sender: TObject);

//Формирование матрицы

begin

Fm(a,8);

AssignFile(f,'peзультаты.txt');

Rewrite(f);

closeFile(f);

//запись исходной матрицы в файл

Zm(a,8,'Исходная матрица');

//запись в F1book1

F1book1.TextRC[1,3]:='Исходная матрица'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+1,j]:=a[i,j]; //печать матрицы в электронной таблице

end;

procedure TForm1.N4Click(Sender: TObject);

//поиск среднего значения матрицы

begin

sr:=sred(a,8);

Label4.caption:=format('%7.2f',[sr]);

end;

procedure TForm1.N5Click(Sender: TObject);

// число элементов < среднего

begin

l:=ChSred(a,8,sr);

label6.caption:=format('%5d',[l]);

end;

procedure TForm1.N6Click(Sender: TObject);

//след матрицы

begin

sl:=Sled(a,8);

Label8.caption:=format('%7.2f',[sl]);

end;

procedure TForm1.N7Click(Sender: TObject);

// обмен столбцов

begin

// обмен столбцов (3<->6)

Stm(a,8);

//запись матрицы после обмена столбцов в файл

Zm(a,8,'матрица после обмена столбцов');

//запись в F1book1

F1book1.TextRC[10,3]:='Обмен 3 и 6 столбцов'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+10,j]:=a[i,j];

end;

procedure TForm1.N8Click(Sender: TObject);

begin

// обмен строк (2<->5)

Strm(a,8);

//запись матрицы после обмена столбцов в файл

Zm(a,8,'матрица после обмена строк');

//запись в F1book1

F1book1.TextRC[19,3]:='Обмен 2 и 5 строк'; //Заголовок

for i:=1 to 8 do

for j:=1 to 8 do

F1book1.NumberRC[i+19,j]:=a[i,j];

end;

//Формирование вектора и вывод его на метку Label10

procedure TForm1.N10Click(Sender: TObject);

var s:string ;

begin

for i:=1 to 8 do

begin

b[i]:=Trunc(a[i,i]);

s:=s+Floattostr(b[i])+#9; // Преобразование элементов вектора в строковый тип

// и запись в буферную строку S; +#9 табуляция

end;

label10.caption:=s; // Вывод вектора на метку 10 в форме

s:=s+#13; // Перевод строки

end;

procedure TForm1.N11Click(Sender: TObject);

begin

Assignfile(f,'Вектор.txt');

Rewrite(f);

writeln(f,'Отсортированный вектор');

for i:=1 to 8 do

for j:=1 to 8-i do

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

begin

buf:=b[j+1];

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

b[j]:=buf;

end;

for i:=1 to 8 do

write(f,b[i]:5:1,' ');

writeln(f);

CloseFile(f);

end;

end.

5

Соседние файлы в папке лекция_14_11_2014