- •Семинар 4
- •Кнопка выбора опции (класс tCheckBox).
- •Радиокнопка (класс tRadioBotton).
- •Список (класс tListBox).
- •Interface
- •V : tVector;
- •Implementation
- •I, p : Integer;
- •I : Integer; //параметр цикла, индекс
- •Val ( StrN,n,Code );
- •Val (StrI, V[I], Code);
- •I , j : Integer;
- •Val ( StrRow, SizeRow, Code);
- •Val ( StrColumn, SizeColumn, Code );
- •Val ( StrJ,a[I,j],Code);
- •I : Integer;
- •I, j, t : Integer;
- •1.Ввод массива StringGrid
- •2.Пример2 Электронная таблица
Interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const
MaxSizeRow=10; MaxSizeColumn=10; //Максимальные размеры матрицы
MaxSizeVector=15; //Максимальный размер вектора
type
TForm1 = class(TForm)
edtVector: TEdit;
btnVector: TButton;
Label1: TLabel;
btnMatrix: TButton;
memoMatrix: TMemo;
edtSizeVector: TEdit;
Label2: TLabel;
Label3: TLabel;
edtSizeRow: TEdit;
Label4: TLabel;
edtSizeColumn: TEdit;
Label5: TLabel;
Label6: TLabel;
btnVectorWork: TButton;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
btnMatrixWork: TButton;
memoTransposed: TMemo;
procedure btnVectorClick(Sender: TObject);
procedure btnMatrixClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure btnVectorWorkClick(Sender: TObject);
procedure edtVectorChange(Sender: TObject);
procedure memoMatrixChange(Sender: TObject);
procedure btnMatrixWorkClick(Sender: TObject);
procedure edtSizeVectorChange(Sender: TObject);
procedure edtSizeChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tVector = array [1..MaxSizeVector] of Integer;
tMatrix = array [0..MaxSizeRow,0..MaxSizeColumn]of Integer;
var
Form1: TForm1;
A : tMatrix;
V : tVector;
SizeRow,SizeColumn : Integer; //Реальные количества строк и столбцов
N : Integer; //Реальный размер вектора
Implementation
{$R *.DFM}
Следует отметить, что Delphi 5 производит считывание данных в строку. Поэтому программа должна выделять из введенной строки первую подстроку, преобразовывать ее в число и присваивать полученное значение первому элементу массива, затем выделять вторую подстроку, преобразовывать ее в число и присваивать полученное значение второму элементу массива и т.д. для каждого элемента массива.
Функция пользователя SelectNumber осуществляет анализ считанной строки на наличие пробелов и производит выделение очередного числа. Предопределенная переменная Result является внутри функции синонимом ее наименования :
function SelectNumber ( St:string; Number:Integer ) : string;
var
I, p : Integer;
Вegin
//Удаление пробелов в начале строки
if St = '' then exit;
while St[1] = ' ' do
begin
Delete(St,1,1);
if St = '' then break;
end;
//Выделение подстроки под номером Number
for i := 1 to Number-1 do
begin
Delete ( St,1,Pos(' ',St));
if St = '' then break;
while St[1]=' ' do
begin
Delete ( St,1,1);
if st = '' then break;
end
end;
P := Pos (' ',St);
if P <> 0 then
Result := Copy ( St,1,P-1)
else
Result := St;
End;
Обработчик события “нажатие на кнопку “Ввод” обеспечивает считывание из полей редактирования размера вектора, его элементов и контролирует правильность их ввода. Обработчик использует функцию SelectNumber и метод SetFocus, осуществляющий позиционирование курсора в соответствующие поля редактирования:
procedure TForm1.btnVectorClick (Sender: TObject);
var
