Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 19:06   #1
Человек Панда
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 75
По умолчанию Ошибка при работе с несколькими Stringgrid.

Здравствуйте.Работаю с 3 таблицами stringgrid,организую сложение матриц.Не могу понять,почему при вызове процедуры очистки полей возникает ошибка Grid index out of range или Grid index out of range-1
Вот код

Код:
procedure TSummatrix.brushClick(Sender: TObject);
begin
proizvektor.brushpole(matr1,strmax,stolbmax);// очищаем введенные ячейки матрицы A.
proizvektor.SetGridFocus(matr1,1,1);//фокус на начало матрицы А
proizvektor.brushpole(matr2,strmax,stolbmax);//очищаем введенные ячейки матрицы В.
proizvektor.brushpole(matr3,strmax,stolbmax);//очищаем введенные ячейки матрицы Решения.
matr2.Visible:=False; //скрываем матрицу В
matr3.Visible:=False; //скрываем матрицу ответа
res.Visible:=False;//cкрываем надписть матрица результата
end;

procedure tproizvektor.brushpole(X:Tstringgrid;razstr:integer;razstolb:integer);
var i, k: Integer;
begin
  with X do
    for i:= 1 to razstr do
      for k:=1 to razstolb do
        Cells[i, k] := '';
end;
За пределы дозволенного таблицей не выходит не выходит,это явно видно.



"Обнаружил" такой код у себя


Код:
procedure TForm1.GridClean(Sender: TObject); 
var hGridRect: TGridRect; 
begin 
  hGridRect.Top := -1; 
  hGridRect.Left := -1; 
  hGridRect.Right := -1; 
  hGridRect.Bottom := -1; 
  (Sender as TStringgrid).Selection := hGridRect; 
end;

Не знаю почему,но именно из-за него такие неполадки!

Последний раз редактировалось Человек Панда; 10.07.2011 в 19:20. Причина: Понял причину,но не понял почесу имеенно так!
Человек Панда вне форума Ответить с цитированием
Старый 10.07.2011, 19:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) а где это видно, что они не выходят за пределы?

2) Вы явно путаете индексы в методе Cells - там сначала указывается НомерСтолбца, потом НомерСтроки

3) нумерация строк/столбцов идёт от нуля (хотя, возможно, что там в 0-вых у Вас названия )

4) я бы при описании процедуры X передавал через параметр VAR:
Код:
procedure tproizvektor.brushpole(var X:Tstringgrid;razstr:integer;razstolb:integer);
5) может проще так поступить?
Код:
procedure tproizvektor.brushpole(var X:Tstringgrid);
var i, k: Integer;
begin
    for i:= X.FixedRow to X.RowCount -1 do
      for k:=X.FixedCol to X.ColCount-1 do
        Cells[k, i] := '';
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при работе делфи astramorela Операционные системы общие вопросы 2 03.02.2011 14:24
Проблема при работе с несколькими книгами JJill Microsoft Office Excel 0 25.03.2010 18:40
проблема при работе с несколькими исходными файлами Grind Помощь студентам 2 19.02.2008 19:37
Ошибка при работе с файлом LeoN Общие вопросы Delphi 1 07.12.2007 15:21
Ошибка при работе с БД malevich БД в Delphi 8 25.11.2007 15:10