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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2007, 09:23   #1
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию Нужна подсказка! (StringGrid)


При выводе результата в СтрингГрид, в конце почему то выводится лишняя, пустая ячейка!
Подскажите пожалуйста как от неё избавиться и получить нормальный вывод результатов!
Вот сам обработчик:
Код:
procedure TForm1.Button5Click(Sender: TObject);
var i,j: integer;
    flag: boolean;
begin
for i:=1 to StringGrid1.ColCount-1 do
for j:=1 to StringGrid1.RowCount-1 do
StringGrid1.Cells[i,j]:='';
StringGrid1.RowCount:=1;
flag:=False;
for i:=0 to ListBox1.Items.Count-2 do
begin
if (StrToInt(ListBox1.Items[i])>StrToInt(ListBox1.Items[i+1])) then
begin
if not flag then
begin
flag:=True;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,StringGrid1.RowCount-2]:=IntToStr(i);
end;
StringGrid1.RowCount:=StringGrid1.RowCount+1;
StringGrid1.Cells[0,StringGrid1.RowCount-2]:=IntToStr(i+1);
end else
flag:=False;
end;
end;
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 01.12.2007, 10:01   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

В строке 9 напиши StringGrid1.RowCount:=0;
Когда в цикле нужно наращивать переменную не единицу, то начальное ее значение 0. Начальное значениие=1 дают когда в цикле нужно например умножать.
puporev вне форума Ответить с цитированием
Старый 01.12.2007, 10:29   #3
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Проверил только что, - не помогло!
Возможно есть какие то ещё погрешности!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 01.12.2007, 14:05   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
StringGrid1.RowCount:=StringGrid1.RowCount+1;   
StringGrid1.Cells[0,StringGrid1.RowCount-2]:=...
Не понял - почему минус два-то? Это же получается - все время занесение идет в ПРЕДПОСЛЕДНИЙ ряд, поэтому неудивительно, что последний всегда оказывается пустым...
mihali4 вне форума Ответить с цитированием
Старый 01.12.2007, 20:56   #5
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

А какие значения там должны быть?
Я пробовал (-1) и (+1) и другие варианты, - перебрал так сказать всё что можно и нельзя! Пустая ячейка перемещалась в начало, в середину, но чтобы просто изчезнуть, -никак!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 01.12.2007, 21:16   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Нумерация столбцов и строк у StringGrid-а начинается с нуля.
Соответственно последняя строка имеет индекс, равный RowCount-1.
Поэтому при первоначальной очистке в вашем случае (без титульной строки и столбца) циклы должны начинаться с 0.
По этой же самой причине, как вам уже говорили, нужно сделать при инициализации не
StringGrid1.RowCount:=1; а
StringGrid1.RowCount:=0;
поскольку именно тут вы и вводите лишнюю строку.
mihali4 вне форума Ответить с цитированием
Старый 01.12.2007, 21:27   #7
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Я не навязываю.... но при написании программ (особенно больших), присваивайте компонентам специальные именна по которым можно было хоть примерно понять за что отвечает этот компонент...
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 01.12.2007, 21:48   #8
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Я сделал так как вы сказали, сделал начало цикла с нуля и установил индекс последней строки равный: RowCount-1.
Пустая ячейка переместилась в начало!
Чего может ещё не хватать? Подскажите пожалуйста!
end;
end.

Mr.User вне форума Ответить с цитированием
Старый 01.12.2007, 22:21   #9
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Это пишешь ты.
Цитата:
for i:=1 to StringGrid1.ColCount-1 do
for j:=1 to StringGrid1.RowCount-1 do
Это пишут тебе.
Цитата:
Нумерация столбцов и строк у StringGrid-а начинается с нуля.
Через раз читаешь?
puporev вне форума Ответить с цитированием
Старый 01.12.2007, 22:35   #10
Mr.User
Пользователь
 
Аватар для Mr.User
 
Регистрация: 11.11.2007
Сообщений: 45
По умолчанию

Код:
for i:=0 to StringGrid1.ColCount-1 do 
for j:=0 to StringGrid1.RowCount-1 do
И эти изменения тоже добавил!
Непомогает! Совсем запутался!
end;
end.

Mr.User вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моя всплывающая подсказка не работает в IE Stason JavaScript, Ajax 1 11.09.2008 18:18
Подсказка artemavd Общие вопросы Delphi 1 17.07.2008 19:34
C# подсказка MAcK Общие вопросы .NET 4 10.07.2008 12:38
нужна подсказка по MYSQL!!! Noor Помощь студентам 5 03.04.2007 10:52
Всплывающяя подсказка в трее Маркъ Общие вопросы Delphi 11 04.03.2007 15:32