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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 08:15   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Инвертировать столбец в StringGrid

Как инвертировать столбец в StringGrid? Мудрил так:
Код:
procedure TForm1.BtnWordWrapClick(Sender: TObject);
var
 i,j: integer;
begin
 for i:=Form1.StringGrid1.RowCount - 1 to 0 do
 begin
 for j:=0 to Form1.StringGrid1.RowCount - 1 do
  Form1.StringGrid1.Cells[0,j]:=Form1.StringGrid1.Cells[0,i];
 end;
end;
но перемудрил что-то . Поправьте меня? Нужно чтобы значения в столбце переставились наоборот.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.09.2010, 14:01   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
for j:=0 to rowcount div 2 do // в перевороте участвуют сразу ДВЕ строки (первая и последняя)
begin
  s:=cells[0,j];
  cells[0,j]:=cells[0, colcownt-j];
  cells[0, colcount-j]:=s;
end;
только идея, с индексами могу ошибаться +-1

Код:
r:=TstringList.create; // с использование дополнительной памяти (StringList)
for j:=0 to rowcount-1 do r.insert(0, cells[0,j]); //rкопируем и сразу переворачиваем 
for j:=0 to r.count-1 do cells[0,j]:=r.strings[j]; //переносим обратно
r.free;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 21.09.2010 в 14:08.
evg_m вне форума Ответить с цитированием
Старый 21.09.2010, 14:18   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ыгы. А вот еще один Бздынь:
Код:
 with StringGrid1 do
  for i:=0 to (RowCount-1) div 2 do  Cols[0].Exchange(i,RowCount-1-i);
Здесь "Реверсируется" нулевой столбец
т.е. Артему теперь по вкусу пусть выбирается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2010, 18:13   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Stilet, вот так надо было:
Код:
procedure TForm1.BtnWordWrapClick(Sender: TObject);
var
 i,j: integer;
begin
 with Form1.StringGrid1 do
 for i:=0 to (RowCount-1) div 2 do
  Cols[1].Exchange(i,RowCount-1-i);
end;
я так понял, что выводится будет в той колонке, которую я укажу тут
Код:
Cols[1]
и что значит функция Exchange?
Код не работает почему-то. Не переставляются значения.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.09.2010, 18:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и что значит функция Exchange?
А ты посмотри в хелпе этот метод для класса TStrings
Цитата:
что выводится будет в той колонке, которую я укажу тут
Не выводится а меняться местами.
Цитата:
Код не работает почему-то.
Я проверял когда постил - все работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Инвертировать строку Nitriyc Помощь студентам 4 30.11.2009 11:52
макрос который будет копировать столбец А из закрытой книги Данные, и вставлять в книгу Сток в столбец B Utirka66 Microsoft Office Excel 8 06.07.2009 09:53
Инвертировать стэк в C++ Drozvd Помощь студентам 0 09.04.2009 03:58
Фиксированный столбец в StringGrid Universum Помощь студентам 3 06.04.2009 13:53
Инвертировать таблицу? Ash БД в Delphi 2 29.01.2009 02:23