Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
tnAnGel
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 12
1

Delphi Word - надписи, перемещение курсора на нужную мне часть документа

13.03.2018, 17:54. Просмотров 255. Ответов 3
Метки нет (Все метки)

Доброго времени суток, пишу дипломную и тут нужно автоматизировать печатание диплома. Есть пример того, что должно получиться: (документы ворд. Из-за ограничения залил на яндекс диск)

У меня загвоздка в повторении всего этого. Например в "Бланк 2", лучше всего сделать таблицу, ограничить ее с помощью линейки и задать длину ячеек, но как ее опустить на нужное мне расстояние? Вообще, как перемещать мне любой элемент или создавать в нужном месте?

Я умею:
создавать таблицу, указывать длину ее ячеек, писать в таблицу
менять ориентацию
управлять горизонтальной линейкой, т.е. отступы с обеих сторон


Прошу помощи, не понимаю как поставить указатель в нужное место для создания объекта или текста в нужном мне месте

Я все делаю через variant с использованием библиотеки ComObj. Я не использую в своем проекте компоненты типа WordDocument и так далее.
0
Вложения
Тип файла: zip Бланки.zip (1.56 Мб, 3 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2018, 17:54
Ответы с готовыми решениями:

Создание word-документа из Delphi
Ребята, подскажите пожалуйста, можно ли с помощью делфи создать ворд документ?...

Создание Word-документа из Delphi
заранее извиняюсь за туповатый вопрос, просто забыл и не могу вспомнить как же...

Открытие документа MS Word в Delphi.
Добрый вечер! Ребята, подскажите, пожалуйста, как открыть готовый документ Word...

Печать word документа через Delphi 7
Как можно через Delphi 7 распечатать word документ??? Помогите Заранее...

Открытие документа Word средствами Delphi
Подскажите, как открыть в окне Delphi документ с расширением *.doc ??? Чтобы...

3
D1973
Модератор
3476 / 2497 / 1228
Регистрация: 21.01.2014
Сообщений: 10,417
Записей в блоге: 3
Завершенные тесты: 1
13.03.2018, 19:24 2
 Комментарий модератора 
tnAnGel, не вижу никаких ограничений! Поэтому в дальнейшем правила форума (в частности, п. 4.11) не нарушаем!


Добавлено через 4 минуты
Цитата Сообщение от tnAnGel Посмотреть сообщение
Я все делаю через variant с использованием библиотеки ComObj
правильно
Цитата Сообщение от tnAnGel Посмотреть сообщение
Я не использую в своем проекте компоненты типа WordDocument
еще раз правильно
Цитата Сообщение от tnAnGel Посмотреть сообщение
или создавать в нужном месте?
В Ворде есть такой инструмент, как "закладка"... А вот как работать с закладками Word - прочитайте вот эту тему...
1
tnAnGel
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 12
13.03.2018, 22:09  [ТС] 3
@D1973, а если не использовать автозамену? Я хотел поставить "указатель" в нужную мне точку и создать там объект. Я хочу создавать именно кодом объекты и заполнять походу.

Если я буду использовать шаблоны, то у меня появляется проблема с 2мя таблицами, а именно: как выбирать между ними для заполнения? Создаю и заполняю я подобным образом в других документах:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  MSWord.Selection.Tables.Add(MSWord.Selection.Range, Student.Count+1, 4, wdWord9TableBehavior);
  MSWord.Selection.Tables.Item(1).columns.item(1).Width:=22;
  MSWord.Selection.Tables.Item(1).columns.item(2).Width:=22;
  MSWord.Selection.Tables.Item(1).Rows.Item(1).Select;
  MSWord.Selection.Paragraphs.Alignment := wdAlignParagraphCenter;
  MSWord.Selection.Tables.Item(1).columns.item(2).Width:=260;
  MSWord.Selection.Tables.Item(1).columns.item(3).Width:=80;
  MSWord.Selection.Tables.Item(1).columns.item(4).Width:=80;
  MsWord.Selection.Tables.Item(1).Cell(1,1).Range.Text:='№ п/п';
  MsWord.Selection.Tables.Item(1).Cell(1,2).Range.Text:='Ф.И.О. обучающегося';
  MsWord.Selection.Tables.Item(1).Cell(1,3).Range.Text:='Защита (оценка)';
  MsWord.Selection.Tables.Item(1).Cell(1,4).Range.Text:='Подпись';
   for j:=0 to Student.Count-1 do
   begin
    MsWord.Selection.Tables.Item(1).Cell(j+2,1).Range.Text:=IntToStr(j+1)+'.';
    MsWord.Selection.Tables.Item(1).Cell(j+2,2).Range.Text:=Student[j];
   end;
  MSWord.Selection.EndKey(6 ,EmptyParam);
  MSWord.Selection.TypeText(#10+'Заведующий отделением ИТ _____________________________________');
  MSWord.Visible:=True;
Я сделал шаблон и с одной таблицей понятно как, но с двумя - не знаю как работать
Pascal
1
2
3
4
5
6
Word:=CreateOleObject('Word.Application');
Word.Documents.Add;
Word.Documents.Open(ExtractFilePath(ParamStr(0))+'1.doc');
Word.Selection.Tables.Item(1).Cell(1,1).Range.Text:='№ п/п';
Word.Selection.Tables.Item(1).Cell(1,2).Range.Text:='Ф.И.О. обучающегося';
Word.Visible:=True;
Как получилось визуально: http://www.cyberforum.ru/attachment....1&d=1520966479

Если делаю с 2мя готовыми таблицами, то у меня ошибка со следующим текстом: "запрашиваемый номер семейства не найден". Ниже листинг:
Pascal
1
2
3
4
5
6
Word:=CreateOleObject('Word.Application');
Word.Documents.Add;
Word.Documents.Open(ExtractFilePath(ParamStr(0))+'2.doc');
Word.Selection.Tables.Item(1).Cell(1,1).Range.Text:='№ п/п';
Word.Selection.Tables.Item(1).Cell(1,2).Range.Text:='Ф.И.О. обучающегося';
Word.Visible:=True;
В нем я банально попытался заполнить таблицу как делал в первом шаблоне.

Вот шаблон, который использую: 2.doc


Если сейчас найдем решение как выбирать и заполнять эти 2 таблицы, то самая сложная часть завершена.
0
tnAnGel
0 / 0 / 0
Регистрация: 22.05.2017
Сообщений: 12
15.03.2018, 01:40  [ТС] 4
В итоге:
Delphi
1
2
3
4
5
6
7
8
Word:=CreateOleObject('Word.Application');
Word.Documents.Add;
Word.Documents.Open(ExtractFilePath(ParamStr(0))+'5.doc');
Table:= Word.ActiveDocument.Tables.Item(1);
Table.Cell(1,1).Range.Text :='Первая таблица';
Table:= Word.ActiveDocument.Tables.Item(2);
Table.Cell(1,1).Range.Text :='Вторая таблица';
Word.Visible:=True;
Спасибо D1973! Пойду дальше курить замену и переделывать под себя. Вы - великолепны!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2018, 01:40

Открытие html документа в word посредством delphi
Добрый день уважаемые пользователи форума. Возникла проблема, может кто...

Выделить из имени нужную часть
У меня есть строковая переменная в которой записано ' л.1, 11, 20, 3, 14, 15....

Как отделить нужную часть сообщения?
А как теперь правильно условие поставить? if Msg = '/cmd' then begin Msg ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru