Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069

Из Мемо в StringGrid и на печать

07.11.2014, 14:53. Показов 1217. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добро всем.
Передо мной стоит задача текст из Мемо в StringGrid, затем отсортировать и распечатать.
Прежде чем приступить к исполнению, хочу спросить а из StringGrid распечатать получится вместе с сеткой?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2014, 14:53
Ответы с готовыми решениями:

Печать из мемо
Перечитал, так и не нашел в чем проблема. procedure TForm36.Image2Click(Sender: TObject); var t:textfile; I:Integer; begin ...

Вывод данных из Мемо в Stringgrid
Добрый вечер! Дан массив 9*9! найти сумму по каждой строке и найти из них максимальный! Заранее спасибо! Помощь заключается в переносе...

Как вывести печать с мемо
Как вывести печать с мемо мне нужен код ЗАРАНИЕ БЛАГОДАРУ

13
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
07.11.2014, 16:33
Получится. В крайнем случае PaintTo на битмап, это перенесет и сетку тоже...
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
07.11.2014, 20:49  [ТС]
Подскажите почему из Мемо с SringGrid выводится в одну строчку?
в Мемо запись такая:

07.11.2014
Адрес: 29ВГородок 17 п.2 кв: 34. Домашний: 545454 Мобильный: 89188255252
Заявка: Монтаж Олег 07.11.2014
Адрес: Весенняя 3 п.5 кв: 4. Домашний: 676545 Мобильный: 89286789090
Заявка: Ремонт Олег 07.11.2014


пробую так:
C++
1
2
3
str->Add(Form21->Memo1->Text);
StringGrid1->RowCount=str->Count+1;
for(int i=0;i<str->Count;i++) StringGrid1->Cells[0][i+1]=str->Strings[i];
и еще дата сверху не должна попадать в таблицу.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.11.2014, 20:59
Потому что Memo1->Text - это одна строка, слепленная из состыкованных строк мемо. У мемо, помимо прочего, есть свойство Lines, являющееся почти аналогом TStringList.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
07.11.2014, 21:09  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
У мемо, помимо прочего, есть свойство Lines
подправил:
C++
1
2
3
TStrings * str (Form21->Memo1->Lines);
StringGrid1->RowCount=str->Count+1;
for(int i=0;i<str->Count;i++) StringGrid1->Cells[0][i+1]=str->Strings[i];
в результате в одну колонку пишет
Миниатюры
Из Мемо в StringGrid и на печать  
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.11.2014, 21:16
Естественно, в одну. В какие ячейки текст пишешь, в тех он и будет, гриду все твои форматы данных до лампочки.
Чтобы реализовать вывод одной логической единицы на строку, надо сперва эту единицу вычленить из исходного текста.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
07.11.2014, 21:49  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
вычленить из исходного текста
идея одна есть, сделаю, покажу.

Добавлено через 30 минут
идея в том чтобы по определенным символам и пробелам найти нужное значение, но чет мне не нравится...
как вы думаете продолжить этот вариант или есть более надежное решение?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
AnsiString adr="",teld="",telm="",zvk="",zdd="";
int i=0;
for(int m=0;m<str->Count;m++)
{
i=0;
adr="";teld="";telm="";zvk="";zdd="";
for(;;i++)
  {
  if((int)str->Strings[m].c_str()[i]==(int)' ') break;
  else adr+=str->Strings[m].c_str()[i];
  }
  for(;;i++)
  {
  if((int)str->Strings[m].c_str()[i]!=(int)' ') break;
  }
for(;;i++)
  {
  if((int)str->Strings[m].c_str()[i]==(int)':') break;
  else teld+=str->Strings[m].c_str()[i];
  }
for(;;i++)
  {
  if((int)str->Strings[m].c_str()[i]!=(int)':') break;
  }
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.11.2014, 21:58
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Да уж... я выскажусь от лица всех тех, кто "вы" и, думаю, не ошибусь, что вариант этот следует похоронить как можно глубже в памяти и вспоминать разве что в страшных снах.

Давай исходный текст, как он сейчас есть, коллективный наш разум сварганит сносный парсер.)
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
07.11.2014, 22:14  [ТС]
Расскажу в чем проблема:
Я на днях с Вашей помощью сделал отображение из txt в Memo текста вот в таком виде-
Дата: 07.11.2014
Адрес: 29ВГородок 14 п.1 кв: 45. Телефон: 545454
Заявка: Подключение Сослан 07.11.2014
Примечание: Просят вечером
Адрес: 50ЛОктября 8 п.1 кв: 7. Телефон: 775544
Заявка: Кнопка выхода Сослан 07.11.2014
Примечание: Просят с утра

этот текст после распечатки не очень хорошо читается, плюс люди привыкли к таблице (раньше работали в worde) и просят в старом формате с сеткой-
шапка: номер по порядку, адрес, телефон домашний, телефон мобильный, заявка, примечание
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.11.2014, 19:53
Не, отображение - это уже лишнее. Покажи, в каком виде сейчас информация логируется. Кусок txt побольше, в общем.
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
08.11.2014, 19:59  [ТС]
Спасибо! Уже решил здесь
Осталось распечатать вместе с сеткой...
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
08.11.2014, 20:10
Лучший ответ Сообщение было отмечено Samrisbe как решение

Решение

Цитата Сообщение от Samrisbe Посмотреть сообщение
Осталось распечатать вместе с сеткой...
А если просто СтрингГрид в Ексель перекидывать?
0
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
08.11.2014, 20:12  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
А если просто СтрингГрид в Ексель перекидывать?
Примерчик есть?
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,405
Записей в блоге: 3
08.11.2014, 21:42
Ну вот так как-то...
На форме только СтрингГрид и кнопка. При создании формы СтрингГрид заполняется какими-то значениями (просто так, для примера) и внешний вид получается как на картинке. При нажатии на кнопку происходит передача данных в Ексель.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <ComObj.hpp>
...
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Это просто для запонения грида чем-нибудь
  StringGrid1->Cells[0][0] = "Шапка 1";
  StringGrid1->Cells[1][0] = "Шапка 2";
  StringGrid1->Cells[2][0] = "Шапка 3";
  StringGrid1->Cells[3][0] = "Шапка 4";
  StringGrid1->Cells[4][0] = "Шапка 5";
  String s = "";
  for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount; i++)
   for(int j = 0; j < StringGrid1->ColCount; j++)
    {
      for(int k = 0; k < 5; k++)
       s += IntToStr(i + j);
     StringGrid1->Cells[j][i] = s;
     s = "";
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Открыли Ексель
  Variant app, books, book, sheet, Rang, vCell;
  app = CreateOleObject("Excel.Application");
  app.OlePropertySet("Visible",true);
  books = app.OlePropertyGet("Workbooks");
  books.OleProcedure("Add");
  book = books.OlePropertyGet("Item",1);
  sheet = book.OlePropertyGet("WorkSheets",1);
//Сформировали и записали вариантный массив из StringGrid
  String S;
  const int bounds[4] = {0, StringGrid1->RowCount, 0, StringGrid1->ColCount};
  Variant vData = VarArrayCreate(bounds, 3, varVariant);
  for(int i = 0; i < StringGrid1->RowCount; i++)
   for(int j = 0; j < StringGrid1->ColCount; j++)
    {
      if((StringGrid1->Cells[j][i]).IsEmpty()) S = "";
      else S = StringGrid1->Cells[j][i];
      vData.PutElement(S, i, j);
    }
  Rang = sheet.OlePropertyGet("Range",sheet.OlePropertyGet("Cells",1,1),
         sheet.OlePropertyGet("Cells",StringGrid1->RowCount,StringGrid1->ColCount));
  Rang.OlePropertySet("Value",vData);
//Оформляем ширину столбцов
  sheet.OlePropertyGet("Cells", 1, 1).OlePropertySet("ColumnWidth",10);
  sheet.OlePropertyGet("Cells", 1, 2).OlePropertySet("ColumnWidth",20);
  sheet.OlePropertyGet("Cells", 1, 3).OlePropertySet("ColumnWidth",15);
  sheet.OlePropertyGet("Cells", 1, 4).OlePropertySet("ColumnWidth",15);
  sheet.OlePropertyGet("Cells", 1, 5).OlePropertySet("ColumnWidth",30);
//Оформляем выравнивание и шрифт шапки
  vCell = sheet.OlePropertyGet("Range",sheet.OlePropertyGet("Cells",1,1),sheet.OlePropertyGet("Cells",1,5));
  vCell.OlePropertySet("HorizontalAlignment",-4108);
  vCell.OlePropertyGet("Font").OlePropertySet("Bold",true);
//Рисуем границы ячеек
  for(int i = 1; i <= StringGrid1->RowCount; i++)
   for(int j = 1; j <= StringGrid1->ColCount; j++)
    {
      vCell = sheet.OlePropertyGet("Cells").OlePropertyGet("Item", i, j);
      vCell.OlePropertyGet("Borders",10).OlePropertySet("LineStyle",1);
      vCell.OlePropertyGet("Borders",10).OlePropertySet("Weight",2);
      vCell.OlePropertyGet("Borders",7).OlePropertySet("LineStyle",1);
      vCell.OlePropertyGet("Borders",7).OlePropertySet("Weight",2);
      vCell.OlePropertyGet("Borders",8).OlePropertySet("LineStyle",1);
      vCell.OlePropertyGet("Borders",8).OlePropertySet("Weight",2);
      vCell.OlePropertyGet("Borders",9).OlePropertySet("LineStyle",1);
      vCell.OlePropertyGet("Borders",9).OlePropertySet("Weight",2);
    }
}
//---------------------------------------------------------------------------
В принципе, вся информация взята вот отсюда
Миниатюры
Из Мемо в StringGrid и на печать  
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2014, 21:42
Помогаю со студенческими работами здесь

Как построчно переместить текст из Мемо в StringGrid
Как построчно переместить текст из Мемо в StringGrid!!! Я пробовал вот так: StringGrid-&gt;RowCount=Мемо-&gt;Lines-&gt;Count; ...

Переписать текст из Мемо в StringGrid так, чтобы в каждую ячейку таблицы записывался отдельный символ
Дано:Поле Мемо в которое пользователь вводит строку, например:0M1K; таблица StringGrid размерностью 2Х2. Задача:Переписать текст из Мемо...

Печать StringGrid
Есть ли у кого-нибудь рабочий нормальный код через PrintDialog или excel,без разници?Перерыл все что можно,ничего не работает.

Печать StringGrid
Как мне напечатать StringGrid? Объявил в uses Printer, и Printer:TPrinter в var. + написал код //печать procedure...

StringGrid! Как перенести данные с одной ячейки таблицы или (мемо, едит) в другую яче , и как задействавовать
StringGrid!Есть 3 таблицы, таблица1 имеет 5 колонок в 5той колонке данные,вводятся со 2ой строки , они должны сумироваться и внизу 5той...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru