Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/68: Рейтинг темы: голосов - 68, средняя оценка - 4.66
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239

Создание отчёта в Word

01.06.2011, 18:24. Показов 13746. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пожалуйста, подскажите, как создать отчёт не в QuickRep, а в Word. Причем он должен содержать от каждой формы информацию именно из Label, как бы скопировать содержимое Label в отчет. Я впервые сталкиваюсь с созданием отчёта. Искала в форуме, не нашла то, что нужно. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.06.2011, 18:24
Ответы с готовыми решениями:

Создание отчёта
не выводит данные из DBGrid, после компиляции так же отображается как скриншоте , подключил Prewiv к базе , DBText тоже подцепил к нужным...

Создание отчёта в Buidere
Подскажите как создать отчёт в билдере?

Создание дубликата страницы word
Имеется документ .doc, внутри которого одна страница с текстом. Как с помощью ole можно в этом же документе скопировать весь текст на...

33
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.06.2011, 23:24
Студворк — интернет-сервис помощи студентам
ваше окно или тдешное/системное? простите, но я не слежу за логикой вашей прогжки , поэтому всегда хорошо давать ответ, как в первый раз .
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
03.06.2011, 23:27  [ТС]
Выходит, что системное, я обработчик события заключила в комментарий, и без него вылезло "системное" окошко
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.06.2011, 23:48
хорошо бы показать окно системной ошибки, о которой так много было сказано, или, хотя бы, текст
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
03.06.2011, 23:58  [ТС]
Не знаю как еще, у меня word стоит 2007 , может в этом дело? да вообще в чем может быть дело? может несколько word создать в папке?

Добавлено через 2 минуты
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
void __fastcall TFrmSrr::Btn2Click(TObject *Sender)
{
        FrmSrr->Close();
        vVarApp=CreateOleObject("Word.Application");   
        vVarApp.OleProcedure("Documents");  
        if(!fStart)
        {
            try{
              vVarApp=CreateOleObject("Word.Application");
              fStart=true;
            }
            catch(...)
            {
                MessageBox(0,"Ошибка при открытии сервера Word",
                             "Ошибка", MB_OK);
                return;
            }
        } 
        vVarApp.OlePropertySet("Visible",false);  
        Variant Doc=vVarApp.OlePropertyGet("Documents");        
        Doc.OleProcedure("Add");
        Doc.OleProcedure("Add");
        if(Doc.OlePropertyGet("Count")== 0)
        {
          vVarApp=CreateOleObject("Word.Application");
          fStart=true;
        }
        else if(Doc.OlePropertyGet("Count")>=1){
          MessageBox(0, "Документ уже создан",
               "Успешно!", MB_OK);
              // return;
        }
        vVarParagr=Doc.OleFunction("Item",1);  
        Doc.OleProcedure("Activate");
        vVarParph=Doc.OlePropertyGet("Paragraphs");   
        str="\t\tКОЛИЧЕСТВО\t\t";
        vVarParph.OleProcedure("Add");
        vVarParagraph=vVarParph.OleFunction("Item",1);
        vVarParagr.OlePropertyGet("PageSetup").OlePropertySet("TopMargin",28.35);
        vVarParagr.OlePropertyGet("PageSetup").OlePropertySet("LeftMargin",28.35);
        vVarParagr.OlePropertyGet("PageSetup").OlePropertySet("RightMargin",28.35);
        vVarParagr.OlePropertyGet("PageSetup").OlePropertySet("BottomMargin",28.35);
        vVarParph.OleProcedure("Add");
        //str="ÊÎËÈ×ÅÑÒÂÎ";
        //vVarParagraph=vVarParph.OleFunction("Item",1);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Size",22);
        v.OlePropertySet("Bold",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        vVarParph.OleProcedure("Add");
        //vVarParph.OleProcedure("Add");
        //vVarParph.OleProcedure("Add");
        str = "\t\t"+Lbl5->Caption;
        vVarParagraph=vVarParph.OleFunction("Item", 4);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Size",16);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str.c_str());
        vVarParagraph.OlePropertySet("Alignment",3);
        vVarParph.OleProcedure("Add");
}
Добавлено через 6 минут

Не по теме:

Я спать, завтра продолжим.Голова не варит

0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.06.2011, 00:10
для меня логика вобче не понятна - вы сначала создаете объект, потом, если что-то не срослось, снова создаете объект , пытаясь что-то перехватить, потом снова возвращаетесь к каким-то своим мыслям, честно, не понимаю.
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
04.06.2011, 09:39  [ТС]
LK, а мне не понятен распорядок кода, вот в чем проблема. Запуталась
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
04.06.2011, 14:05  [ТС]
просто так вылезает ошибка не смотря на то, что я закомментировала обработку исключения и if(...).
Изображения
 
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
04.06.2011, 16:49  [ТС]
может какие-то файлы, библиотечные функции добавить? я ничего не добавляла
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.06.2011, 19:30
есть такой не хитрый способ - начиная с FrmSrr->Close(); добавляете по строчке кода, или по блоку кода, или по блочку в блоке кода, и ждете ошибку.
1
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
04.06.2011, 22:54  [ТС]
LK, верно Вы подметили .

Добавлено через 2 часа 8 минут
у меня по центру не получается, только с левой стороны строится отчет:
C++
1
vVarParagraph.OlePropertySet("Alignment",1);
а как можно сделать, чтобы заглавие написать жирно и шрифтом 16 по центру и затем после него label?
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.06.2011, 23:58
это, правда, для таблиц, попробуйте,
вдруг прокатит
Для получения доступа к интерфейсу Application для Excel надо:

1. Включить в проект модули:

#include <ComObj.hpp>
#include <utilcls.h>

2. Определить - лучше глобально (для наглядности и удобства) - переменные, отражающие иерархию объектов Excel
Приложение->Набор книг->Книга->Набор страниц->Страница->ячейки(ячейка):

Variant vVarApp,vVarBooks,vVarBook,vVarSheets,
vVarSheet,vVarCells,vVarCell;

3. создать объект автоматизации:

vVarApp=CreateOleObject("Excel.Applicati on");

С этого момента можно пользоваться свойствами и методами созданного ole сервера, а именно:

Установка свойства.
vVarApp.OlePropertySet("имя", значение);

Чтение значения свойства.
переменная = app.OlePropertyGet("имя");

Вызов метода:
vVarApp.OleProcedure("имя",список параметров метода);

Сделаем приложение видимым (лучше наверное всетаки в конце, но так нагляднее - будет видно как идет заполнение таблиц и т.п.).
vVarApp.OlePropertySet("Visible",true);

Переменной vVarBooks присваивается значение Workbooks - свойство объекта Excel.Application, содержащее набор рабочих книг Excel.
vVarBooks=vVarApp.OlePropertyGet("Workbo oks");

SheetsInNewWorkbook задает количество листов в создаваемой книге, пусть в первой книге их будет 3(Кстати по умолчаню тоже создается книга, содержащая три листа).
vVarApp.OlePropertySet("SheetsInNewWorkb ook",3);

Добавляем книгу из 3 листов в объект vVarBooks.
vVarBooks.OleProcedure("Add");

Переменная vVarBook содержит ссылку на текущую книгу. (Пусть текущая книга 1).
vVarBook=vVarBooks.OlePropertyGet("Item" ,1);

Переменной vVarSheets присваиваем значение Worksheets - свойство объекта Excel.Application, содержащее набор страниц книги Excel.
vVarSheets=vVarBook.OlePropertyGet("Work sheets") ;
vVarSheet=vVarSheets.OlePropertyGet("Ite m",1);
vVarSheet.OlePropertySet("Name","Имя листа");

Основные шаги при заполнении таблицы повторяются:

1. Взять лист.
VarSheet=vVarSheets.OlePropertyGet("Item ",1);

2. Выбрать ячейку или группу ячеек на выбранном листе. Для отдельной ячейки (x и y координаты ячейки):
vVarCell=vVarSheet.OlePropertyGet("Cells ").
OlePropertyGet("Item",x,y);

Для группы ячеек:
vVarCell=vVarSheet.OlePropertyGet("Range ","A1:C4");
vVarCell.OleProcedure("Merge");

3. Установить режим выравнивания текста в ячейке (ячейках).
vVarCell.OlePropertySet("HorizontalAlign ment",-4108);
vVarCell.OlePropertySet("VerticalAlignme nt",-4108);
Выравнивание текста - вертикальное - Константы
xlHAlignCenter -4108
xlHAlignCenterAcrossSelection 7
xlHAlignDistributed -4117
xlHAlignFill 5
xlHAlignGeneral 1
xlHAlignJustify -4130
xlHAlignLeft -4131
xlHAlignRight -4152

Выравнивание текста - горизонтальное - Константы
xlVAlignBottom = -4107
xlVAlignCenter = -4108
xlVAlignDistributed = -4117
xlVAlignJustify = -4130
xlVAlignTop = -4160

4. Установить размер шрифта.
vVarCell.OlePropertyGet("Font").OlePrope rtySet("Size",15);

5. Установить цвет шрифта ячейки.
vVarCell.OlePropertyGet("Font").OlePrope rtySet("Color",clBlue);

6. Установить стиль шрифта ячейки.
//Жирный
vVarCell.OlePropertyGet("Font").
OlePropertySet("Bold",true);
//Курсив
vVarCell.OlePropertyGet("Font").
OlePropertySet("Italic",true);
//Зачеркнутый
vVarCell.OlePropertyGet("Font").
OlePropertySet("Strikethrough",true);
//Верхний индекс
vVarCell.OlePropertyGet("Font").
OlePropertySet("Superscript",true);
//Нижний индекс
vVarCell.OlePropertyGet("Font").
OlePropertySet("Subscript",true);
//Без линий
vVarCell.OlePropertyGet("Font").
OlePropertySet("OutlineFont",true);
//C тенью
vVarCell.OlePropertyGet("Font").
OlePropertySet("Shadow",true);
//Подчеркнутое одинарной линией по значению
vVarCell.OlePropertyGet("Font").
OlePropertySet("Underline",2);
//Подчеркнутое двойной линией по значению
vVarCell.OlePropertyGet("Font").
OlePropertySet("Underline",-4119);
//Подчеркнутое одинарной линией по ячейке
vVarCell.OlePropertyGet("Font").
OlePropertySet("Underline",4);
//Подчеркнутое двойной линией по значению
vVarCell.OlePropertyGet("Font").
OlePropertySet("Underline",5);

Здесь значение констант:
xlUnderlineStyleDouble = -4119,
xlUnderlineStyleDoubleAccounting = 5,
xlUnderlineStyleNone = -4142,
xlUnderlineStyleSingle = 2,
xlUnderlineStyleSingleAccounting = 4
7. Установить имя шрифта ячейки.
vVarCell.OlePropertyGet("Font").OlePrope rtySet("Name","Arial");

8. Установить заливку ячейки (если необходимо).
vVarCell.OlePropertyGet("Interior").
OlePropertySet("ColorIndex",35);

9. Установить значение данных.
vVarCell.OlePropertySet("Value","Мой текст");
vVarCell.OlePropertySet("Value",25);

10. Вписать формулы аналогично данным.
vVarCell.OlePropertySet("Value","=СУММ(A 1:A10)");

11. Если необходимо установить размер ячеек.
vVarCell.OlePropertySet("RowHeight", 20);
vVarCell.OlePropertySet("ColumnWidth",10 );

1.5 Рисуем рамки
Аналогично как и при заполнении таблицы рамка рисуется для выбранной ячейки или объединенной группы ячеек.
Шаги рисования рамки:
1. Взять лист.
2. Выбрать ячейку или группу ячеек на выбранном листе. Для отдельной ячейки (x и y координаты ячейки):
3. Задать шрифт для текста, выравнивание и заливку как показано в предыдущем параграфе.
4. Установить рамку вокруг выбранных ячеек проведением линий с выбранной стороны (Borders) с указанием стиля линии (LineStyle) толщины (Weight) и цвета линии(ColorIndex).
vVarCell.OlePropertyGet("Borders",10).
OlePropertySet("LineStyle",1);
vVarCell.OlePropertyGet("Borders",10).
OlePropertySet("Weight",4);
vVarCell.OlePropertyGet("Borders",10).
OlePropertySet("ColorIndex",46);

Константы, определяющие где проводить линию:
xlInsideHorizontal 12
xlInsideVertical 11
xlDiagonalDown 5
xlDiagonalUp 6
xlEdgeBottom 9
xlEdgeLeft 7
xlEdgeRight 10
xlEdgeTop 8
Константы стиля линии
xlContinuous 1
xlDash -4115
xlDashDot 4
xlDashDotDot 5
xlDot -4118
xlDouble -4119
xlSlantDashDot 13
xlLineStyleNone -4142
Толщина линии
xlHairline 1
xlMedium -4138
xlThick 4
xlThin 2
Таким образом для обрамления с 4х сторон ячейки или группы ячеек надо приведенные выше 3 строки кода повторить 4 раза (для каждой стороны).
5. Если необходимо установить размер ячеек.
vVarCell.OlePropertySet("RowHeight", 20);
vVarCell.OlePropertySet("ColumnWidth",10 );

6. Написать текст для отображения в рамке.
vVarCell.OlePropertySet("Value", "Наш текст");


Добавлено через 9 минут
и, по-моему, вот эту ссылку вам приводили уже не один раз : Работа с OLE-сервером Word , но спросить оно, конечно, легче
1
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
05.06.2011, 10:05  [ТС]
LK, да Excel мне не нужен, просто не хотела программа создавать отчёт. Да и
Цитата Сообщение от LK Посмотреть сообщение
Работа с OLE-сервером Word
эту ссылку читала не один раз . Заработало, но выводит не столбиком по центру, а с левой стороны. Так в Label существуют такие символы
C++
1
\n
и из-за них по центру не выравнивается текст.

Добавлено через 1 час 49 минут
Всё получилось. Остается таблицу сделать. Она у меня StringGrid , при чем данные не произвольные, а введенные пользователем.как реализовать?
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
vVarParagraphs.OleProcedure("Add");
 vVarParagraphs.OleProcedure("Add");
vVarParagraph=vVarParagraphs.OleFunction("Item",5);
 vVarParagraph.OlePropertySet("Alignment",1);
 vVarRange = vVarParagraph.OlePropertyGet("Range");
vVarDoc.OlePropertyGet("Tables").OleProcedure("Add", vVarRange, 3, 9,1,1);  //цифры что означают?
vVarTable=vVarDoc.OlePropertyGet("Tables").OleFunction("Item",1);
//Выравниваем таблицу по центру
 vVarTable.OlePropertyGet("Rows").
           OlePropertySet("Alignment",1);
 //Установка ширины таблицы
 vVarTable.OleFunction("AutoFitBehavior",2);
 //Сетка в таблице
  vVarApp.OlePropertyGet("ActiveWindow").
  OlePropertyGet("View").OlePropertySet("TableGridlines",true);
//Стиль таблицы
 vVarTable.OleFunction("AutoFormat",25);
//Занесение информации в ячейки
 for(int i=0;i <ColCount-1;i++)
 {
   for(int j=0;j<RowCount-1){
  vVarCell=vVarTable.OleFunction("Cell",i,j);   //Вот не понимаю как написать, у меня кроме этих чисел
  vVarCell.OleFunction("Select");                 // еще формула есть, после которой создается таблица
  v = vVarApp.OlePropertyGet("Selection").
           OlePropertyGet("Font");
  v.OlePropertySet("Size",16);
Вот таким образом нужно создать отчет , при чем "-" и "+" реализованы в программе, а скопировать нельзя?
Изображения
 
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
05.06.2011, 11:47  [ТС]
Посмотрите плиз, в чем ошибка при нажатии на кнопку
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Variant v,vVarParagraph,Var,Dms,Word;
        Word = CreateOleObject("Word.Application");
        Word.OlePropertySet("Visible", false);
        Variant Doc = Word.OlePropertyGet("Documents");
        Doc.OleProcedure("Add");
        if(Doc.OlePropertyGet("Count") != 1)
        {
        MessageBox(0, "Ошибка при создании документов",
                 "Ошибка", MB_OK);
        return;
        }
        Dms=Doc.OleFunction("Item",1);
        //Смотреть будем на первый документ
        Dms.OleProcedure("Activate");
        Var=Dms.OlePropertyGet("Paragraphs");
        Dms.OlePropertyGet("PageSetup").OlePropertySet("TopMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("LeftMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("RightMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("BottomMargin",28.35);
        Var.OleProcedure("Add");
        str3="ОТЧЁТ";
        vVarParagraph=Var.OleFunction("Item",1);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",16);
        v.OlePropertySet("Bold",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3="1.Расчёт срезки растительного слоя грунта:\n";
        vVarParagraph=Var.OleFunction("Item",2);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",14);
        v.OlePropertySet("Italic",false);
        v.OlePropertySet("Underline",1);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3=FrmSrr->Lbl5->Caption;
        vVarParagraph=Var.OleFunction("Item",3);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",12);
        v.OlePropertySet("Italic",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);  //////////
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3="2.Вертикальная планировка:\n";
        vVarParagraph=Var.OleFunction("Item",7);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",14);
        v.OlePropertySet("Italic",false);
        v.OlePropertySet("Underline",1);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3="Отметка планировки: "+FrmVpl->Lbl12_6->Caption+"\n"+FrmVpl->Lbl1_3->Caption;
        vVarParagraph=Var.OleFunction("Item",8);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",12);
        v.OlePropertySet("Italic",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);  /////
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3="3.Устройство выемки под фундамент:\n";
        vVarParagraph=Var.OleFunction("Item",12);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",14);
        v.OlePropertySet("Italic",false);
        v.OlePropertySet("Underline",1);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3=FrmUstr->Lbl34->Caption+"\n"+FrmUstr->Lbl39->Caption+"\n"+
           FrmUstr->Lbl44->Caption+"\n"+FrmUstr->Lbl47_2->Caption+"\n"+
           FrmUstr->Lbl53_4->Caption+"\n"+FrmUstr->Lbl50_2->Caption+"\n"+
           FrmUstr->Lbl54_4->Caption+"\n"+FrmUstr->Lbl54_9->Caption+"\n"+
           FrmUstr->Lbl55_6->Caption;
        vVarParagraph=Var.OleFunction("Item",13);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",12);
        v.OlePropertySet("Italic",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1); //Конец первого документа
        Dms=Doc.OleFunction("Item",2);
        //Смотрим на второй документ
        Dms.OleProcedure("Activate");
        Var=Dms.OlePropertyGet("Paragraphs");
        Dms.OlePropertyGet("PageSetup").OlePropertySet("TopMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("LeftMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("RightMargin",28.35);
        Dms.OlePropertyGet("PageSetup").OlePropertySet("BottomMargin",28.35);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        Var.OleProcedure("Add");
        str3="4.Транспортировка грунта:\n";
        vVarParagraph=Var.OleFunction("Item",1);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",14);
        v.OlePropertySet("Italic",false);
        v.OlePropertySet("Underline",1);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Var.OleProcedure("Add");
        Var.OleProcedure("Add"); //
        str3=Lbl20->Caption;
        vVarParagraph=Var.OleFunction("Item",2);
        v=vVarParagraph.OlePropertyGet("Range").OlePropertyGet("Font");
        v.OlePropertySet("Name","Arial");
        v.OlePropertySet("Size",12);
        v.OlePropertySet("Italic",true);
        vVarParagraph.OlePropertyGet("Range").
        OlePropertySet("Text",str3.c_str());
        vVarParagraph.OlePropertySet("Alignment",1);
        Word.OlePropertySet("Visible", true);
0
 Аватар для Neo_AVE
89 / 36 / 5
Регистрация: 04.05.2011
Сообщений: 239
06.06.2011, 16:54  [ТС]
Как вставить иконку рабочей программы, дату и время в отчёт вместо колонтитулы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.06.2011, 16:54
Помогаю со студенческими работами здесь

Создание Word-документа (не работает в XE)
вот код который нарыл в инете работает на с++ builder 6 . НА C++ Builder XE ошибка Variant Word, Document, Table; Word =...

Word: создание таблицы и заполнение ячеек
Привет всем! Это сново я! Помогите пожалуйста! Я создаю в Word таблицу и заполняю её ячейки вот так :for (int q=1,qz=4;q&lt;kolip;q++,qz++)...

Word создание документа и запись из Edit...
Добрый день не могу создать докумет ворд... Делаю следующее: Добавляю в .h : #include &lt;ComObj.hpp&gt; #include ...

Работа с OLE-сервером Word (создание множества документов в цикле)
Работал по этому примеру В нем все очень хорошо описано, но не смог разобраться как генерировать документы несколько раз, т.е. в...

Создание отчёта
Добрый день! Помогите разобратся в чём проблема. У меня есть ADOQuery1 и ADOQuery2. ADOQuery1 на грид, а ADOQuery2 настроен на отчёт...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru