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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2016, 10:31   #11
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Сейчас придумаю что нибудь
San22Rus вне форума Ответить с цитированием
Старый 06.09.2016, 10:47   #12
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Цитата:
можете выложить архив с тестовыми табличками (на которых проверяли работу) и сам проект с программой?
я посмотрю, что у Вас не работает!
Готово:
Вложения
Тип файла: rar Исходник и таблицы.rar (2.40 Мб, 6 просмотров)
San22Rus вне форума Ответить с цитированием
Старый 06.09.2016, 11:46   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
он выводит только первые 5 записей которых нет в одной из таблиц,
ровно столько сколько есть строк ДЛЯ ПОКАЗА (RowCount).
Хотите больше, меняйте (задавайте) значение для RowСount
Код:
if (j>=StringGrid1.RowCount-1) then begin
			inc(k);
if Form2.StringGrid1.Rowcount<k+1 then form2.StringGrid1.RowCount:=k+1;
			form2.StringGrid1.Rows[k].Text:=StringGrid2.Rows[i].Text;
    end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.09.2016 в 11:49.
evg_m вне форума Ответить с цитированием
Старый 06.09.2016, 11:52   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
ровно столько сколько есть строк ДЛЯ ПОКАЗА (RowCount).
Хотите больше, меняйте (задавайте) значение для RowСount
Точно! Вы правы!
Забыл я про увеличение RowCount
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.09.2016, 12:22   #15
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Всем спасибо, сделал вот так и всё работает:
Код:
var
    aSg : TStringGrid;
    i, k : integer;
begin
	form3.show;
  asg:=form3.StringGrid1;
  k := 0;
for i := StringGrid2.FixedRows to StringGrid2.RowCount - 1 do
  if StringGrid1.Cols[1].IndexOf(StringGrid2.Cells[1, i]) = -1
   then begin
         form3.StringGrid1.Rows[k] := StringGrid2.Rows[i];
         form3.StringGrid1.RowCount := form3.StringGrid1.RowCount + 1;
         inc(k);
        end;
  // настраиваем ширину столбцов
  for i := 0 to asg.ColCount - 1 do ColumnWidthAlign(asg, i);
end;

Последний раз редактировалось Serge_Bliznykov; 06.09.2016 в 14:09.
San22Rus вне форума Ответить с цитированием
Старый 06.09.2016, 12:40   #16
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Ой а можете подсказать почему у меня последние строки таблиц не загружаются в StringGrid'ы????? Только сейчас заметил
Вот код импорта из файла Word в StringGrid:
Код:
var
  aSg : TStringGrid;
  MSWord,Table: OLEVariant;
  iRows,iCols,iGridRows,jGridCols,iNumTables,iTableChosen: integer;
  CellText:string;
  InputString:string;
  i,a,b,j,k : Integer;
begin
for a:= 1 to 2000  do  // раставляем цифры
StringGrid1.Cells[0, a]:= IntToStr(a);     // вертикальной области заголовка
for b:= 1 to 2000  do  // раставляем цифры
StringGrid1.Cells[b, 0]:= IntToStr(b);     // горизонтальной области заголовка
asg:=StringGrid1;
  try
    MSWord:=CreateOleObject('Word.Application');
  except
    ShowMessage('Ошибка открытия файла .docx!');
    Exit;
  end;
  try
    MSWord.Visible:=false;
    OpenDialog1.Filter := 'Документы MS Word|*.doc;*.docx';
    if not OpenDialog1.Execute then Exit;
 MSWord.Documents.Open(OpenDialog1.FileName);
    // Узнаём количество таблиц в документе
    iNumTables:=MSWord.ActiveDocument.Tables.Count;
    InputString:=InputBox('Таблиц в документе: '+IntToStr(iNumTables),'Пожалуйста введите номер таблицы','1');
    // Проверка строки на число, диапазон...
    iTableChosen:= StrToInt(InputString);
    Table:=MSWord.ActiveDocument.Tables.Item(iTableChosen);
    // размер таблицы
    iCols:=Table.Rows.Count;
    iRows:=Table.Columns.Count;
    // настройка столбцов StringGrid
    StringGrid1.RowCount:=iCols;
    StringGrid1.ColCount:=iRows + 1;
    // цикл по ячейкам
    for iGridRows:=1 to iRows do
    for jGridCols:=1 to iCols do
    Begin
      CellText:=Table.Cell(jGridCols, iGridRows).Range.FormattedText;
      if not VarisEmpty(CellText) then
      Begin
        // Удаляем из строки все символы переноса
        CellText:=StringReplace(CellText,#$D,'', [rfReplaceAll]);
        CellText := StringReplace(CellText,#$7,'', [rfReplaceAll]);
        // Заполняем Stringgrid
          Stringgrid1.Cells[iGridRows, jGridCols] := CellText;
          for i := 0 to asg.ColCount - 1 do ColumnWidthAlign(asg, i);
      End;
    End;
    finally
      MSWord.Quit;
      ShowMessage('Таблица №1 успешно загружена!');
end;

Последний раз редактировалось San22Rus; 06.09.2016 в 12:55.
San22Rus вне форума Ответить с цитированием
Старый 06.09.2016, 13:43   #17
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
почему у меня последние строки таблиц не загружаются в StringGrid'ы?????
Вы в этом уверены? Ситуация именно такова:
последняя строка в исходном 'яяяяяяяяя' и при загрузке ЕЕ нет.

потому что на мой взгляд ситуация такова:
при загрузке ПОСЛЕ строки 'яяяяяяяяяяя' добавляется еще одна пустая, которую вы "ошибочно" воспринимаете(интерпретируете) как недостающую.
Код:
  iRows:=Table.Columns.Count;
   StringGrid1.ColCount:=iRows + 1;//вот эта "лишняя" строка
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.09.2016, 14:51   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

San22Rus
что то вы rows и cols местами перепутали.
я постарался вернуть логический смысл переменным.
Ну и главное, плюс +1 я добавил в RowCount

проверьте
Код:
    // размер таблицы
    iCols:=Table.Columns.Count;
    iRows:=Table.Rows.Count;
    // настройка столбцов StringGrid
    StringGrid1.RowCount:=iRows + 1;
    StringGrid1.ColCount:=iCols + 1;
    // цикл по ячейкам
    for iGridRows:=1 to iRows do
    for jGridCols:=1 to iCols do
    Begin
      CellText:=Table.Cell(iGridRows, jGridCols).Range.FormattedText;
      if not VarisEmpty(CellText) then
      Begin
        // Удаляем из строки все символы переноса
        CellText:=StringReplace(CellText,#$D,'', [rfReplaceAll]);
        CellText := StringReplace(CellText,#$7,'', [rfReplaceAll]);
        // Заполняем Stringgrid
          Stringgrid1.Cells[jGridCols, iGridRows] := CellText;
      End;
    End;
    finally
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.09.2016, 15:01   #19
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Спасибо вам большое, очень помогли, теперь всё работает хорошо, буду рад если подскажите как мне организовать статус импорта таблиц в StringGrid через компонент ProgressBar, т.к. у меня есть одна таблица где почти 1000 записей, и импорт длится примерно 1 минуту и в этот момент программа как бы зависает и не каждый пользователь догадается, что нужно ждать некое кол-во времени, я и раньше не работал с ProgressBar'ом, а тут ещё и нефиксированный ProgressMax, т.е. размеры таблиц могут быть разные и я не знаю как это реализовать
San22Rus вне форума Ответить с цитированием
Старый 06.09.2016, 15:06   #20
San22Rus
Пользователь
 
Регистрация: 07.03.2016
Сообщений: 20
По умолчанию

Цитата:
что то вы rows и cols местами перепутали.
точно, и не думал, что мог так написать, поэтому даже не предал значению, очень глупая ошибка
San22Rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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