Добрый вечер!
У меня курсовой проект... Дожила!
Всё шло гладко, но сегодня вот застряла на чистой глупости...
Задание следующее:
•Дана символьная квадратная матрица порядка 6. Заменить буквой а все ее элементы, расположенные выше строки с номером k.
Мне нужно сделать так, чтобы если за компьютер сядет дворник дядя Вася то он ничего не смог напортачить. Вдруг он например создаст матрицу 3*3 и потребует чтобы заменились символы находящиеся выше 10-ой строки . А 10-ой строки-то и нету. На этот случай предусмотрено ШоуМесседж "Некорректное значение!" и чтобы все элементы матрицы стирались. Сообщение-то показывается, но ячейки не очищаются, а заполняются буквами "а"
Вот текст программы и архив на всякий случай:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Spin, Grids, Menus, ImgList, XPMan;
type
TForm1 = class(TForm)
XPManifest1: TXPManifest;
ImageList1: TImageList;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
StringGrid1: TStringGrid;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Label1: TLabel;
SpinEdit1: TSpinEdit;
BitBtn1: TBitBtn;
SpinEdit2: TSpinEdit;
SpinEdit3: TSpinEdit;
Label2: TLabel;
Label3: TLabel;
BitBtn2: TBitBtn;
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure BitBtn2Click(Sender: TObject);
procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i, j : Byte;
const
Por : Byte =5;
begin
if (SpinEdit1.Value>SpinEdit2.Value) or (SpinEdit1.Value>SpinEdit3.Value) then begin
ShowMessage('Некорректное значение!');
For i:=0 to SpinEdit1.Value-2 do
For j:=0 to SpinEdit1.Value-2 do
StringGrid1.Cells[j,i]:='';
end;
For i:=0 to SpinEdit1.Value-2 do
For j:=0 to Por do
StringGrid1.Cells[j,i]:='a'
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13
then
begin
with StringGrid1 do
if Col < ColCount - 1
then
Col := Col + 1
else
if Row < RowCount - 1
then
begin
Row := Row + 1;
Col := 0;
end
else
begin
Row := 0;
Col := 0;
end;
end
else
key:=key;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
MessageDlg('Чтобы запустить программу, нажмите кнопку "Запусить".'+#10#13+
'Чтобы выйти из программы нажмите пункт меню "Файл->Выход"',mtConfirmation,[mbOK],0);
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
MessageDlg('Разработала: Агапчева Юлия Романовна'+#10#13+
'Группа: ПИЮ-Д21'+#10#13+
'Предмет: Разработка и стандартизация программных средств и технологий'+#10#13+
'Вариант: 15',mtConfirmation,[mbOK],0);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
StringGrid1.RowCount:=SpinEdit3.Value;
StringGrid1.ColCount:=SpinEdit2.Value;
end;
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if StringGrid1.Cells[ACol,ARow]<>'' then begin
BitBtn1.Enabled:=True;
N3.Enabled:=True;
end
else
begin
BitBtn1.Enabled:=False;
N3.Enabled:=False;
end
end;
end.
Кто чем сможет...