Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Компонент Delphi StringGrid




Настало время разобрать некоторые компоненты, используемые в нашей программе.

Компонент Delphi StringGrid (Таблица строк) расположен на странице Additional Палитры компонентов.

С помощью компонента StringGrid создаются таблицы, в ячейках которых содержаться произвольные текстовые данные.

Основное свойство компонента StringGrid - это двумерный массив Cells[ACol, ARow: integer] типа String с помощью него можно обращаться к содержимому ячеек и изменять их содержание. ACol устанавливает номер столбца, ARow - задает строку в таблице. Этим свойством можно воспользоваться только во время выполнения программы, оно доступно для записи и чтения. Нумерация строк и столбцов идет с нуля.

Свойство ColCount задает число столбцов, RowCount - число строк [4].

Компонент StringGrid по умолчанию слева и сверху имеет заголовочные области, они имеют серый цвет. Количество подобных строк и столбцов устанавливается в свойствах FixedCols и FixedRow. Если же для таблицы не нужны заголовочные области, то эти свойства должны быть равны нулю.

Компонент Delphi Edit

Компонент Delphi Edit расположен на странице "Standard" Палитры компонентов. Он представляет собой однострочный редактор для ввода, отображения и изменения текста. Основное свойство, содержащее данные введенные пользователем это Text. Оно имеет тип string и может хранить и передавать только текстовые данные. Если необходимо записать какое либо число, то оно будет представлено в текстовом виде.

При создании нового компонента Edit на форме свойство Text будет совпадать с именем (Edit1, Edit2 и далее по нарастающей). Желательно его сразу очистить.

Очистить поле можно командой:. Clear;

или присвоить значение пустой строки:. Text:= ''; [4]

Функции IntToStr и FloatToStr переводят соответственно целые и вещественные числа в текстовую строку, а StrToInt и StrToFloat наоборот.

Щелчок мыши и его обработка

Windows приложение сейчас трудно представить без использования компьютерной мыши. Клик (щелчок) мыши в основном меню почти любой программы позволит быстро выполнить необходимое нам действие.

В среде Delphi основной обработчик клика (щелчка) мыши на компоненте это событие onClick. Оно в основном используется в объектах типа переключатель или кнопка. Есть еще одно событие OnDblClick (двойной клик на объекте). Эти события не дают нам информацию о точных координатах указателя мыши [5].

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

И поэтому в Delphi присутствуют еще два события - это OnMouseUp (происходит при отпускании кнопки мыши) и OnMouseDown (происходит при нажатии кнопки мыши).

Эти события несут подробную информацию о параметрах клика: точные координаты указателя в пределах клиентской области объекта на котором был выполнен клик, тип клика (двойной или одинарный), состояние системных клавиш SHIFT, ALT и CTRL, какая кнопка мыши была нажата или отпущена.

 

Программа

Вот мы и подошли к самой программе. Здесь представлены коды двух программ: первая - с матрицей, размером 2*2, вторая - размером 3*3.

unit matrica;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids;= class(TForm): TStringGrid;: TStringGrid;: TButton;: TEdit;: TEdit;Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

var

Form1: TForm1;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);b:array [1..2] of integer; a,a1,a2:array [1..2,1..2] of integer; k,k2,k1,x,y:real;,j:integer;(перечисляем все переменные, задействованные в данной программе. Определители и конечный результат будут дробными числами)

begin

for i:=1 to 2 do

for j:=1 to 2 do

begin (поясняем элементы массивов матрицы А и столбца свободных членов)

a[i,j]:=strtoint(StringGrid1.Cells[j,i]); b[i]:=strtoint(StringGrid2.Cells[0,i]); end;:=a[1,1]*a[2,2]-a[2,1]*a[1,2];(пишем, как находить определитель)

for i:=1 to 2 doj:=1 to 2 do[i,j]:=a[i,j];i:=1 to 2 do j:=1 to 2 do


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

if j=1 then a1[i,j]:=b[i];1:=a1[1,1]*a1[2,2]-a1[2,1]*a1[1,2]; (вычисляем новый определитель к1, полученный заменой строки свободных членов)

for i:=1 to 2 doj:=1 to 2 do[i,j]:=a[i,j];i:=1 to 2 doj:=1 to 2 do

if j=2 then a2[i,j]:=b[i];2:=a2[1,1]*a2[2,2]-a2[2,1]*a2[1,2]; (вычисляем новый определитель к2, полученный заменой строки свободных членов)

x:=k1/k;(делим полученные определители на исходный,чтобы вычислить х и у)

y:=k2/k;.Text:=floattostr(x);.Text:=floattostr(y);

end; 16

end.

С матрицей 3*3:Unit1;interfaceuses, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, StdCtrls, ExtCtrls, ComCtrls;= class(TForm): TPanel;: TStringGrid;: TButton;: TLabel;: TPanel;: TLabel;: TStringGrid;: TStringGrid;: TLabel;: TStringGrid;: TLabel;

Label4: TLabel;

Label5: TLabel;: TLabel;: TStatusBar;FormCreate(Sender: TObject);Button1Click(Sender: TObject);

private

{ Private declarations }

{ Public declarations };=array [0..3] of real;: TForm1;

{$R *.dfm}TForm1.FormCreate(Sender: TObject);.Cells[0,0]:='1,7';.Cells[1,0]:='2,8';.Cells[2,0]:='1,9';.Cells[3,0]:='0,7';.Cells[0,1]:='2,1';

StringGrid1.Cells[1,1]:='3,4';

StringGrid1.Cells[2,1]:='1,8';.Cells[3,1]:='1,1';.Cells[0,2]:='4,2';.Cells[1,2]:='-1,7';.Cells[2,2]:='1,3';

StringGrid1.Cells[3,2]:='2,8';18

end;

!\function podstanov (mas1,mas2,mas3:TMArray):real;:= mas1[0]*mas2[1]*mas3[2]+mas2[0]*mas3[1]*mas1[2]+mas1[1]*mas2[2]*mas3[0]-mas3[0]*mas2[1]*mas1[2]-mas2[0]*mas1[1]*mas3[2]-mas3[1]*mas2[2]*mas1[0];;\\TForm1.Button1Click(Sender: TObject);mas1,mas2,mas3:TMArray;,j:integer; x1,x2,x3:real;,Delta1,Delta2,Delta3:real;i:=0 to StringGrid1.ColCount-1 do[i]:=StrToFloat(StringGrid1.cells[i,0]);[i]:=StrToFloat(StringGrid1.Cells[i,1]);[i]:=StrToFloat(StringGrid1.Cells[i,2]);;

Delta:=podstanov(mas1,mas2,mas3); //дельта

for j:=0 to StringGrid1.RowCount do.Cells[0,j]:=StringGrid1.Cells[3,j];.Cells[1,j]:=StringGrid1.Cells[1,j];.Cells[2,j]:=StringGrid1.Cells[2,j];

StringGrid2.Cells[3,j]:='0';19

end;i:=0 to StringGrid2.ColCount-1 do[i]:=StrToFloat(StringGrid2.cells[i,0]);[i]:=StrToFloat(StringGrid2.Cells[i,1]);[i]:=StrToFloat(StringGrid2.Cells[i,2]);;:=podstanov(mas1,mas2,mas3); //дельтаj:=0 to StringGrid3.RowCount do.Cells[0,j]:=StringGrid1.Cells[0,j];.Cells[1,j]:=StringGrid1.Cells[3,j];.Cells[2,j]:=StringGrid1.Cells[2,j];.Cells[3,j]:='0';;i:=0 to StringGrid3.ColCount-1 do

mas1[i]:=StrToFloat(StringGrid3.cells[i,0]);

mas2[i]:=StrToFloat(StringGrid3.Cells[i,1]);[i]:=StrToFloat(StringGrid3.Cells[i,2]);;:=podstanov(mas1,mas2,mas3);j:=0 to StringGrid4.RowCount do

begin20

StringGrid4.Cells[0,j]:=StringGrid1.Cells[0,j];.Cells[1,j]:=StringGrid1.Cells[1,j];.Cells[2,j]:=StringGrid1.Cells[3,j];.Cells[3,j]:='0';;i:=0 to StringGrid3.ColCount-1 do[i]:=StrToFloat(StringGrid4.cells[i,0]);[i]:=StrToFloat(StringGrid4.Cells[i,1]);[i]:=StrToFloat(StringGrid4.Cells[i,2]);;:=podstanov(mas1,mas2,mas3);.Caption:=FloatToStr(Delta1)+#13+'--------------'+#13+FloatToStr(Delta);.Caption:=FloatToStr(Delta2)+#13+'--------------'+#13+FloatToStr(Delta);.Caption:=FloatToStr(Delta3)+#13+'--------------'+#13+FloatToStr(Delta);;

end.

 


Список литературы

1. http://ru.wihipedia.org/wiki/Метод_Крамера.

2. Л.Н.Удовенко «Основы линейной алгебры. Часть1» Самара 2008, «Самарский университет».

3. http://delphi-prg.ru

4. http://www.maksakov-sa.ru

5. http://www.delphi-manual.ru

.   Михаил Флёнов «Библия Delphi» 3-е издание, Санкт-Петербург» 2011.

.   Дарахвелидзе П. Г., Марков Е. П. "Программирование в Delphi 7".

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...