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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2014, 13:48   #1
Nightway
Пользователь
 
Регистрация: 18.05.2013
Сообщений: 57
По умолчанию Есть stringgrid1 и stringgrid2,надо из первой таблицы перенести значения во вторую

Есть stringgrid1 и stringgrid2,надо из первой таблицы перенести значения во вторуюss (2014-05-06 at 01.34.45).pngВроде получается,но не переносится первая строчка...как исправить?
вот код на всякий случай
Код:
begin
  with strngrd1 do
begin
 
   rowcount:=100;
  colcount:=6;
  for i:=1 to 100 do
  for j:=1 to 100 do
  cells [j,i]:=floattostrf(ss[i,j],fffixed,5,4);
  strngrd1.rowcount := strngrd1.rowcount + 1;
  for i := 1 to strngrd1.colcount - 1 Do
    strngrd1.cells[i, strngrd1.rowcount - 1] := floatToStr(0);
  strngrd1.MoveRow(strngrd1.rowcount - 1, 1);
  strngrd1.Cols[1][0]:='Район №1';
  strngrd1.Cols[2][0]:='Район №2';
  strngrd1.Cols[3][0]:='Район №3';
  strngrd1.Cols[4][0]:='Район №4';
  strngrd1.Cols[5][0]:='Район №5';
  strngrd1.Cols[0][1]:='0,00';
  strngrd1.Cols[0][0]:='p(Шаг)\';
  strngrd1.Cols[1][1]:='0,0000';
  strngrd1.Cols[2][1]:='0,0000';
  strngrd1.Cols[3][1]:='0,0000';
  strngrd1.Cols[4][1]:='0,0000';
  strngrd1.Cols[5][1]:='0,0000';
  for r:=1 to 100 do
  for d:=1 to 100 do
  strngrd1.Cols [0][r+d]:=strngrd2.Cols[0][r];
  end;
  begin
  for z:=1 to 5 do
  strngrd2.Cols[0].Add(formatfloat('0,00',(z*5)/100));
  end;
Nightway вне форума Ответить с цитированием
Старый 07.05.2014, 10:22   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

У-у-у, наворотил.
Цитата:
Код:
  rowcount:=100;
  colcount:=6;
  for i:=1 to 100 do
  for j:=1 to 100 do
Цитата:
Код:
  for r:=1 to 100 do
  for d:=1 to 100 do
  strngrd1.Cols [0][r+d]:=strngrd2.Cols[0][r];
Короче, вот пример чистого копирования StringGrid'а. Давай разбераться.
Код:
var
  cc, rc, c, r: Integer;
begin
  StringGrid2.FixedCols := StringGrid1.FixedCols;
  StringGrid2.FixedRows := StringGrid1.FixedRows;

  cc := StringGrid1.ColCount;
  rc := StringGrid1.RowCount;
  StringGrid2.ColCount := cc;
  StringGrid2.RowCount := rc;

  for r := 0 to rc-1 do
    for c := 0 to cc-1 do
      StringGrid2.Cells [c,r] := StringGrid1.Cells [c,r];
end;
Sibedir вне форума Ответить с цитированием
Старый 07.05.2014, 11:26   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Код:
cc := StringGrid1.ColCount;
rc := StringGrid1.RowCount;
StringGrid2.ColCount := cc;
StringGrid2.RowCount := rc;
for r := 0 to rc-1 do
  for c := 0 to cc-1 do
    StringGrid2.Cells [c,r] := StringGrid1.Cells [c,r];
Код:
StringGrid2.ColCount := StringGrid1.ColCount;
StringGrid2.RowCount := StringGrid1.RowCount;
for r := 0 to StringGrid1.RowCount - 1 do
  for c := 0 to StringGrid1.ColCount - 1 do
    StringGrid2.Cells [c, r] := StringGrid1.Cells [c, r];
Цитата:
У-у-у, наворотил.

Последний раз редактировалось doktor255; 07.05.2014 в 11:29.
doktor255 вне форума Ответить с цитированием
Старый 07.05.2014, 13:57   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Код:
  cc := StringGrid1.ColCount;
  rc := StringGrid1.RowCount;
Как-бы меньше терроризирую оперативку. Уже привычка
Sibedir вне форума Ответить с цитированием
Старый 07.05.2014, 15:04   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
меньше терроризирую оперативку.
Оптимизатор такого цикла обратится к свойствам StringGrid1.ColCount и StringGrid1.RowCount только один раз (не считая того что перед циклом), так что тут никакого терроризма не будет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.05.2014, 15:17   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Могу ошибаться, но вроде в D7 было иначе. Привычка оттуда.

Вообще для сэбэ делал бы так
Код:
cc := StringGrid1.ColCount;
rc := StringGrid1.RowCount;
StringGrid2.ColCount := cc;
StringGrid2.RowCount := rc;
Dec(cc);
Dec(rc);
for r := 0 to rc do
  for c := 0 to cc do
    StringGrid2.Cells [c,r] := StringGrid1.Cells [c,r];
Может у меня корни какие индуские есть

Последний раз редактировалось Sibedir; 07.05.2014 в 15:20.
Sibedir вне форума Ответить с цитированием
Старый 07.05.2014, 15:20   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

В паскале изначально так было - вычисляется только раз в FOR
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.05.2014, 15:41   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,281
По умолчанию

Блин, ну откуда-то же я это взял
Sibedir вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перетаскивание информации из StringGrid1 в StringGrid2 Delphi 7 carrie bradshaw Помощь студентам 2 24.03.2014 14:56
Скопировать данные с одного StringGrid1 в другой StringGrid2 Екатерина_21 C++ Builder 2 09.10.2011 17:06
Как экспортировать StringGrid1 и StringGrid2 в Word koysara Общие вопросы Delphi 1 05.10.2010 12:18
из StringGrid1 в StringGrid2 robin39 Помощь студентам 1 27.05.2010 19:33
StringGrid1 и StringGrid2. Их связь 2Live Общие вопросы C/C++ 4 03.09.2009 20:10