- •Семинар 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 Электронная таблица
Val ( StrJ,a[I,j],Code);
if Code<>0 then
if StrJ <> '' then
begin
MessageDlg ( StrJ+' - неправильное целое число',
mtError, [mbOk], 0);
memoMatrix.SetFocus;
Exit;
end
else
begin
MessageDlg ( 'Число элементов в '+IntToStr ( i+1)+
'-й строке матрицы меньше заданного',
mtError,[mbOk],0);
memoMatrix.SetFocus;
Exit;
end;
end;
StrJ:=SelectNumber ( Stroka, SizeColumn+1);
if StrJ <> '' then
begin
MessageDlg ( 'Превышено число элементов в '+IntToStr(i+1)+
'-й строке матрицы', mtError, [mbOk], 0);
memoMatrix.SetFocus;
Exit;
end;
end;
btnMatrixWork.Enabled := True;
end;
Обработчик события “активизация формы ” выводит подсказку пользователю о максимальном размере вектора и обеспечивает установку курсора в поле редактирования edtSizeVector, куда ввод должен быть осуществлен в первую очередь.
procedure TForm1.FormActivate(Sender: TObject);
begin
Label2.Caption := 'Размер вектора (<='+IntToStr(MaxSizeVector)+')';
edtSizeVector.SetFocus;
end;
Обработчик события “щелчок на кнопке “ Работа с вектором” обеспечивает подсчет суммы его элементов и контрольный вывод элементов массива с указанием их номеров :
procedure TForm1.btnVectorWorkClick(Sender: TObject);
var
Summa : Integer;
I : Integer;
begin
Summa := 0;
for i := 1 to N do
Summa := Summa+V[i];
Label5.Caption := 'Сумма='+IntToStr(Summa)+#13#13+
'Исходный вектор'+#13+' # Число'+#13+' ';
for i: = 1 to N do
Label5.Caption := Label5.Caption+IntToStr(i)+' '+
SelectNumber ( edtVector.Text,i)+#13+' ';
edtSizeVector.SetFocus;
end;
Обработчик события “изменения в поле edtVectorChange делает кнопку “Работа с вектором “ недоступной для пользователя.
procedure TForm1.edtVectorChange(Sender: TObject);
begin
btnVectorWork.Enabled := False;
end;
Обработчик события “ изменения в поле memoMatrix” обеспечивает недоступность кнопки “Транспонированная матрица” и делает невидимым поле memoTransposed.
procedure TForm1.memoMatrixChange(Sender: TObject);
begin
btnMatrixWork.Enabled := False;
memoTransposed.Visible := False;
end;
Обработчик события “нажатие на кнопку “Транспонированная матрица” подсчитывает сумму элементов матрицы с предварительным выводом сообщения об этом и транспонирует исходную матрицу с выводом полученных результатов в поле memoTransposed, одновременно делая его видимым.
procedure TForm1.btnMatrixWorkClick(Sender: TObject);
var
I, j, t : Integer;
sum : Integer;
begin
for i := 0 to MaxSizeRow - 1 do
for j := i + 1 to MaxSizeColumn do
begin
t := A[i,j];
A[i,j] := A[j,i];
A[j,i] := t;
end;
t := SizeColumn;
SizeColumn := SizeRow;
SizeRow := t;
Sum := 0;
with memoTransposed do
begin
Clear;
for i := 0 to SizeRow - 1 do
begin
for j := 0 to SizeColumn - 1 do
begin
Lines.Text := Lines.Text + IntToStr(A[i,j]) + ' ';
Sum := sum + A[i,j];
end;
Lines.Text := Lines.Text + #13;
end;
ShowMessage ( 'Сумма элементов матрицы = '+IntToStr(Sum));
Visible := True;
end;
end;
Обработчик события “изменения в поле edtSizeVector” обеспечивает недоступность для пользователя кнопки “Работа с вектором”.
procedure TForm1.edtSizeVectorChange(Sender: TObject);
begin
btnVectorWork.Enabled := False;
end;
Обработчик события “ изменения в поле edtSizeChange” делает недоступным кнопку “ Транспонированная матрица” .
procedure TForm1.edtSizeChange(Sender: TObject);
begin
btnMatrixWork.Enabled := False;
end;
Результат работы приложения «Ввод-вывод элементов вектора и матрицы» показан на рис. 19.
Рис.19. Результат работы приложения «Ввод-вывод элементов вектора и матрицы»
