Добрый вечер! 

У меня курсовой проект... Дожила!  

Всё шло гладко, но сегодня вот застряла на чистой глупости... 

Задание следующее:
•Дана символьная квадратная матрица порядка 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.
Кто чем сможет... 
