Delphi7: очистить ячейки Stringgrid если не выполняется условие

Тема в разделе "Delphi - FAQ", создана пользователем -, 2 май 2010.

  1. Гость

    Добрый вечер! :rolleyes:
    У меня курсовой проект... Дожила! :lool:
    Всё шло гладко, но сегодня вот застряла на чистой глупости... :blink:
    Задание следующее:
    •Дана символьная квадратная матрица порядка 6. Заменить буквой а все ее элементы, расположенные выше строки с номером k.

    Мне нужно сделать так, чтобы если за компьютер сядет дворник дядя Вася то он ничего не смог напортачить. Вдруг он например создаст матрицу 3*3 и потребует чтобы заменились символы находящиеся выше 10-ой строки . А 10-ой строки-то и нету. На этот случай предусмотрено ШоуМесседж "Некорректное значение!" и чтобы все элементы матрицы стирались. Сообщение-то показывается, но ячейки не очищаются, а заполняются буквами "а" :angry2: Вот текст программы и архив на всякий случай:

    Код (Text):
    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;
    [color="#FF0000"]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;[/color]
    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.
    Кто чем сможет... :blush:
     

    Вложения:

    • _3.rar
      Размер файла:
      194,6 КБ
      Просмотров:
      5
  2. Гость

    А может быть вообще поставить ограничение: чтобы дядя Вася не смог ввести в СпинЭдит1 значение большее чем строчек в матрице? :angry2: Только как ЭТО сделать я точно не знаю :rolleyes:
     
  3. etc

    etc Гость

    В свойства хагляните.
     
  4. 0rtega

    0rtega Гость

    Думаю, один else все исправит:

    Код (Text):
    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 else
    begin
    For i:=0 to SpinEdit1.Value-2 do
    For j:=0 to Por do
    StringGrid1.Cells[j,i]:='a'
    end;
    end;
    Можно еще проверку на корректность прикрутить к событию OnChange компонента SpinEdit. И там если введено некорректное значение, выдавать сообщение об ошибке и очищать SpinEdit
     
  5. Гость

    Всем Спасибо! :blush:
     
Загрузка...
Похожие Темы - Delphi7 очистить ячейки
  1. Монопо
    Ответов:
    4
    Просмотров:
    1.848
  2. wowa
    Ответов:
    6
    Просмотров:
    3.178
  3. MSerg
    Ответов:
    1
    Просмотров:
    3.697

Поделиться этой страницей