1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Гость

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

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

    Код:
    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. Гость

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

    etc Гость

    Репутация:
    0
    В свойства хагляните.
     
  4. 0rtega

    0rtega Гость

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

    Код:
    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. Гость

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

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