Изображение в word на delphi

У меня имеется большое количество текста в тексотвых файлах.
Требуется через Delphi, заменить текст на картинки, то есть каждый символ заменить на определенную картинку и ввести эти картинки в .doc файл.

Возможно ли вообще такое?

Как записать компонент image в doc?

Deleted's user avatar

Deleted

3611 золотой знак5 серебряных знаков13 бронзовых знаков

задан 23 ноя 2012 в 11:20

Вячеслав93's user avatar

Вполне возможно.

Через OLE

Разбейте свою задачу на этапы:

1 Открыть документ Word через Delphi

2 Получить текст из активного документа Word

3 Вставить картинку в Word

Линк для пункта 1 и 2 Создать из Delphi документ MS Word

Линк для пункта 3 Image Delphi Word

ответ дан 23 ноя 2012 в 11:29

Rsecomua's user avatar

RsecomuaRsecomua

4,24312 серебряных знаков17 бронзовых знаков

NotBeginner

174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

1

22.07.2014, 19:24. Показов 10050. Ответов 15

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

поделитесь кодом вставки картинки в ячейку таблицы в word

Добавлено через 6 минут

Delphi
1
2
 wdRow := wdTbl.Rows.Item(1);
wdRow.Cells.Item(2).InlineShapes.AddPicture('путь');

такое не получается



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

22.07.2014, 19:28

2

Выдели нужную ячейку, и потом используй Selection.InlineShapes.AddPicture



0



NotBeginner

174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

22.07.2014, 20:42

 [ТС]

3

а как выделить??
вот использую для вставки таблицы

Delphi
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
  function TableToMSWord(const aRng : Variant) : Variant;
  var
    wdTbl, wdRow : Variant;
    i : Integer;
  begin
    if TVarData(aRng).VDispatch = nil then Exit;
    //Ñîçäà¸ì íîâóþ òàáëèöó MS Word è ðàçìåùàåì å¸ íà ìåñòå äèàïàçîíà aRng.
    wdTbl := aRng.Tables.Add(aRng, 1, 3);
    wdTbl.Columns.Item(1).SetWidth(25, wdAdjustNone);
    wdTbl.Columns.Item(2).SetWidth(320, wdAdjustNone);
    wdTbl.Columns.Item(3).SetWidth(120, wdAdjustNone);
    wdTbl.Borders.Enable:=true;
    //Çàïèñûâàåì øàïêó òàáëèöû.
    wdRow := wdTbl.Rows.Item(1);
    wdRow.Cells.Item(1).Range.text := '¹';
    wdRow.Cells.Item(2).Range.text := 'Âîïðîñ';
    wdRow.Cells.Item(3).Range.text := 'Ðåçóëüòàò';
    for I:= 0 to 29 do
    begin
      wdRow := wdTbl.Rows.Add;
      wdRow.Cells.Item(1).Range.text := mass[i].number;
      wdRow.Cells.Item(2).Range.text := mass[i].question;
      if mass[i].image = '' then wdRow.Cells.Item(2).Range.Selection.InlineShapes.AddPicture(mass[i].image);
      wdRow.Cells.Item(3).Range.text := mass[i].answer;
    end;
    Result := wdTbl.Range;
  end;

Добавлено через 43 минуты
может у кого есть пример? а то нифига непонятно

Добавлено через 24 минуты
Mawrat, выручай, ты точно знаешь



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

22.07.2014, 21:05

4

Delphi
1
2
3
4
5
6
7
      wdRow := wdTbl.Rows.Add;
      wdRow.Cells.Item(1).Range.text := mass[i].number;
      wdRow.Cells.Item(2).Range.text := mass[i].question;
      wdRow.Cells.Item(2).Select;
      if mass[i].image <> '' then // если есть картинка
         wdApp.Selection.InlineShapes.AddPicture(mass[i].image);
      wdRow.Cells.Item(3).Range.text := mass[i].answer;



1



174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

22.07.2014, 22:44

 [ТС]

5

вставляет, но вставляет в первую колонку и очень маленькая картинка

Добавлено через 1 час 12 минут
как сместить картинку вправо??



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

22.07.2014, 23:19

6

Картинку нельзя просто так взять и сместить вправо. Нужно либо выставлять ее по центру ячейки:

Delphi
1
2
      if mass[i].image <> '' then wdApp.Selection.InlineShapes.AddPicture(mass[i].image);
      wdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;

, либо добавлять перед этой картинкой пробелы, чтобы они сдвинули картинку вправо, либо конвертировать Picture в Shape и уже для шейпа пробовать менять позицию…

Цитата
Сообщение от NotBeginner
Посмотреть сообщение

но вставляет в первую колонку и очень маленькая картинка

Вставляет во вторую колонку, и картинка вставляется такая, какую я задал. В полном размере. (Delphi XE2 + OfficeXP, на обвешанных на фиг никому не нужными гирляндами новых оффисах не проверял, и не собираюсь, ибо не держу этот бред…)



0



174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

22.07.2014, 23:35

 [ТС]

7

Вставить картинку в таблицу Word

вот в первое вставляет..



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

22.07.2014, 23:41

8

У меня — вот так:

Миниатюры

Вставить картинку в таблицу Word
 



0



174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

22.07.2014, 23:46

 [ТС]

9

а из за чего такое может быть??



0



FIL

Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

23.07.2014, 09:26

10

Цитата
Сообщение от NotBeginner
Посмотреть сообщение

а из за чего такое может быть??

Из-за Word 2010.
Там многое не работает из того, что можно сделать в ХР (или делается как-то иначе, но решений я не видел).

Интересно, макросы как-то могут помочь в решении данной проблемы?..

Добавлено через 31 минуту
Хотя данную проблему можно решить используя формат файла Word 97-2003.

Добавлено через 6 минут
Еще вариант: через буфер вставку делать:

Delphi
1
2
  wdRow.Cells.Item(2).Select;
  wdApp.Selection.Paste;



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

23.07.2014, 09:33

11

Цитата
Сообщение от FIL
Посмотреть сообщение

Интересно, макросы как-то могут помочь в решении данной проблемы?

Запиши макрос при ручном добавлении картинки во второй столбец, выложи его сюда, посмотрим, насколько он отличается от XP-шного.



0



174 / 160 / 71

Регистрация: 22.02.2013

Сообщений: 1,769

Записей в блоге: 2

23.07.2014, 10:19

 [ТС]

12

получается, что делфи ( независимо от версии) хорошо «дружит» только с ХР-шным вордом?



0



Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

23.07.2014, 10:24

13

Получается, что подавляющее количество кодов написано именно под OfficeXP, а если MS не заботится об обратной совместимости и все время делает то свойства методами, то методы — полями, то вообще меняет структуру элементов и классов так, что из старого кода без его полной переделки нельзя добраться до нужного действия — то это сугубо ее проблемы.

Большинство остается на старых версиях Офиса. У меня среди знакомых, например, нет никого, кто перешел бы с OfficeXP на более новую версию. Потому что, во первых, визуально это просто УГ, а во-вторых, килобайты кода надо переписывать. Оно кому-то нужно?



1



FIL

Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

23.07.2014, 10:56

14

Цитата
Сообщение от UI
Посмотреть сообщение

Запиши макрос при ручном добавлении картинки

В том-то и дело, что там ничего интересного не получается — просто команда на вставку (что я, собственно, ТС и предложил).

Visual Basic
1
2
3
4
5
6
7
8
9
Sub Ìàêðîñ2()
'
' Ìàêðîñ2 Ìàêðîñ
'
'
    Selection.MoveRight Unit:=wdCell
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.Paste
End Sub

Или я не то делаю?



0



volvo

Супер-модератор

Эксперт Pascal/DelphiАвтор FAQ

32517 / 20998 / 8120

Регистрация: 22.10.2011

Сообщений: 36,265

Записей в блоге: 7

23.07.2014, 11:08

15

Не, ты не из буфера обмена, а через Insert -> Picture -> From File (ну, или какой там аналог в 2010) попробуй. Хотя тоже ничего другого не будет скорее всего:

Visual Basic
1
2
    Selection.InlineShapes.AddPicture FileName:="D:testpic.bmp", LinkToFile:= _
        False, SaveWithDocument:=True

, так?

NotBeginner, кстати, если поставить Breakpoint после строки

Delphi
1
wdRow.Cells.Item(2).Select;

, и посмотреть на приложение Word, правильная ячейка выделяется? Та, куда должно вставляться изображение, или все-таки не та?



0



FIL

Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

23.07.2014, 11:17

16

Цитата
Сообщение от UI
Посмотреть сообщение

так?

Visual Basic
1
2
    Selection.InlineShapes.AddPicture FileName:="D:11.jpg", LinkToFile:=False _
        , SaveWithDocument:=True

Один в один.
Странно что в старый формат файла вставляется правильно (из Дельфи), а в новый — нет.



0



Используя доступ к
Word.Application из приложений Delphi, можно вставлять в текст документа
записи, рисунки и другие объекты. Сложные документы в формате Word обычно могут
содержать не только таблицы или текст, но также записи, линии и фигуры, объекты
WordArt, рисунки, графику и многое другое.

Все эти объекты можно разделить на две
группы: те, которые являются внутренними объектами Word, и внешние объекты,
создаваемые внешними по отношению к самому Word серверами OLE. Все объекты,
рассмотренные в 1-4 части статьи, — это внутренние объекты.

Кто программирует в Visual Basic в среде
Word и в Delphi, тот может дальше сам развивать тему «Суперфункций».
Все просто. Объекты, коллекции и методы, которые работают в среде Word, переносятся
почти без изменений в среду Delphi. Главное здесь — применить немного
изобретательности и находчивости. Можно использовать палитру компонентов
Servers, которая есть в Delphi, начиная с 5-й версии. Выбор между готовыми
компонентами и работой «напрямую» с Word.Application зависит от
профессионализма, сложности поставленных задач, отпущенного времени и главное —
от вкусов и стиля программирования. Это индивидуально для каждого, кто
занимается разработкой сложных и не очень сложных приложений на Delphi и других
языках программирования. Я свой выбор остановил на работе с Word.Application,
так как это дает больше гибкости и возможностей при решении сложных и
нестандартных задач

Рассмотрим еще несколько необходимых
внутренних и использование некоторых внешних объектов, их создание и управление
из приложений на Delphi.

Одним из часто
используемых объектов является Textbox. Для его создания используем коллекцию
Shapes(формы) и ее метод AddTextbox. Объект коллекции Shapes имеет атрибут —
имя, его можно считать, можно изменить и обращаться к объекту не только через
индекс, но и через имя. В функцию создания объекта Textbox передаем в качестве
аргументов координаты и размеры области, а возвращаем имя объекта. Она выглядит
следующим образом.

Code:

Function CreateTextBox (Left,Top,Width,Height:real;

var name:string):boolean;

const msoTextOrientationHorizontal=1;

begin

CreateTextBox:=true;

try

name:=W.ActiveDocument.Shapes.AddTextbox

(msoTextOrientationHorizontal,Left,Top,Width,Height).Name;

except

CreateTextBox:=false;

end;

End;

 Следующей
естественной задачей является запись текста в TextBox. Используем доступ к
созданному объекту (Shapes.Item) через индекс(число) или имя(строка). Текст
можно записать в свойство Text объекта TextRange. Перед записью текста
проверяем тип формы (Shape). Если форма имеет тип TextRange, тогда записываем
текст. Смотрите реализацию в виде функции TextToTextBox на Delphi.

Code:

Function TextToTextBox (TextBox:variant;text: string):boolean;

const msoTextBox=17;

begin

TextToTextBox:=true;

try

if w.ActiveDocument.Shapes.Item(TextBox).Type = msoTextBox then

 
W.ActiveDocument.Shapes.Item(TextBox).TextFrame.TextRange.Text:=Text

else TextToTextBox:=false;

except

TextToTextBox:=false;

end;

End;

Объект — форма
(Shape) — может иметь тип не только как запись, он может содержать картинку,
звук, линию и др. В зависимости от типа формы, процедура ее создания различна,
но некоторые поля не зависят от типа. Одним из таких полей является имя формы,
которое можно получить или изменить. Создадим две функции для определения имени
(индекса) формы и для его изменения.

Code:

Function GetNameIndexShape (NameShape:variant): variant;

begin

try

GetNameIndexShape:=W.ActiveDocument.Shapes.Item(NameShape).Name;

except

GetNameIndexShape:=false;

end;

End;

В качестве
аргумента этой функции можно использовать как индекс, так и имя формы.

Code:

Function SetNewNameShape (NameShape:variant;

NewNameShape:string):string;

begin

try

W.ActiveDocument.Shapes.Item(NameShape).Name:=NewNameShape;

SetNewNameShape:=NewNameShape;

except

SetNewNameShape:=»;

end;

End;

Здесь можно было бы рассмотреть реализацию
функций перемещения, изменения размеров, а также определение положения и
размеров формы в документе. Можете сделать это самостоятельно. В Visual Basic
для этого используются следующие операторы:

ActiveDocument.Shapes.Item
(NameShape).Left = Left

ActiveDocument.Shapes.Item (NameShape).Top = Top

ActiveDocument.Shapes.Item (NameShape).Width = Width

ActiveDocument.Shapes.Item (NameShape).Height = Height

Или наоборот

Left = ActiveDocument.Shapes.Item
(NameShape).Left

Top = ActiveDocument.Shapes.Item (NameShape).Top

Width = ActiveDocument.Shapes.Item (NameShape).Width

Height = ActiveDocument.Shapes. Item(NameShape).Height

В документах часто
могут использоваться рисованные объекты, например, линии. Для их создания также
используем коллекцию Shapes (формы) и ее метод AddTextbox. В функцию создания
объекта Line передаем в качестве аргументов начальные и конечные координаты линии,
а возвращаем имя объекта. Эта функция выглядит следующим образом:

Code:

Function CreateLine (BeginX,BeginY,EndX,EndY: real;

var name:string):boolean;

begin

CreateLine:=true;

try

name:=W.ActiveDocument.Shapes.AddLine(BeginX,BeginY,EndX,EndY).Name;

except

CreateLine:=false;

end;

End;

Для прорисовки сложной фигуры необходимо
использовать метод AddPolyline коллекции Shapes. Аргументом этой функции должен
быть массив точек (massiv). Реализация на Visual Basic имеет следующий вид:

ActiveDocument.Shapes.AddPolyline (massiv)

Для того, чтобы
вставить рисунок из внешнего файла, необходимо использовать метод AddPicture
коллекции Shapes, а в качестве аргумента имя файла и координаты. Создадим такую
функцию.

Code:

Function CreatePicture(FileName:string;Left,Top: real;

var name:string):boolean;

begin

CreatePicture:=true;

try

name:=W.ActiveDocument.Shapes.AddPicture(FileName).Name;

W.ActiveDocument.Shapes.Item (name).Left:=Left;

W.ActiveDocument.Shapes.Item(name). Top:=Top;

except

CreatePicture:=false;

end;

End;

Мы должны иметь
возможность не только создать новый объект, но и удалить ранее созданный,
например, рисунок или запись. Для этого используется метод Delete коллекции
Shapes. Для использования этого в своих приложениях создадим функцию
DeleteShape, в качестве аргумента которой будет имя или индекс объекта Shape.

Code:

Function DeleteShape (NameShape:variant): variant;

Begin

DeleteShape:=true;

try

W.ActiveDocument.Shapes.Item (NameShape).Delete;

except

DeleteShape:=false;

end;

End;

Внешний объект в документе представляет
собой Ole-объект, отображаемый внешней программой, которая является
Ole-сервером по отношению к редактору Word. Такими объектами могут быть рисунки
(BMP), созданные программой Paint или лист Excel. Внешний объект может
отображаться в документе только тогда, когда установлена поддерживающая его
программа. Для внедрения внешних объектов в документ используется метод
AddOLEObject коллекции Shapes. Например, чтобы получить доступ к объекту в
Visual Basic, используется следующий оператор:

Set obb =
ActiveDocument.Shapes.AddOLEObject(«MSGraph.Chart.8»)

В Delphi он выглядит следующим образом:

Var Obb:variant;

Obb:=W.ActiveDocument.Shapes.AddOLEObject(«MSGraph.Chart.8»);

Где W — Word.Application.

Но чтобы программировать Ole-объект,
необходимо знать его поля и методы. Эта информация индивидуальна для каждого
объекта и ее рассмотрение — отдельная тема.

На основе
созданных нами функций создадим небольшую демонстрационную программу, которая
будет создавать объект-запись и объект-линию, а затем удалит их из документа.
Как всегда, используем ранее созданные функции, разместим на форме кнопку и
процедуре обработки ее нажатия напишем следующий программный текст:

Code:

procedure TForm1.Button1Click (Sender: TObject);

var BoxName_,LineName_:string;

begin

if CreateWord then begin

Messagebox(0,‘Word запущен.’,»,0);

VisibleWord(true);

Messagebox(0,‘Word видим.’,»,0);

If AddDoc then begin

  Messagebox(0,Документ создан.’,»,0);

  CreateTextBox(1,1,100,50,BoxName_);

  Messagebox(0,Создали формунадпись.’,»,0);

  Messagebox(0,pchar(GetNameIndexShape(1)) ,

   Считали имя формы,0);

  BoxName_:=SetNewNameShape(BoxName_,Новое имя);

  Messagebox(0,pchar(GetNameIndexShape
(
1)),

   ‘Изменили имя формы и считываем его снова’,0);

  TextToTextBox(BoxName_,‘Добавляем текст в TextBox’);

  Messagebox(0,Рисуем
линию,»,0);

  CreateLine(1,15,300,200,LineName_);

  Messagebox(0,Удаляем линию,»,0);

  DeleteShape(LineName_);

  Messagebox(0,Удаляем надпись,»,0);

  DeleteShape(BoxName_);

  SaveDocAs(‘c:Документ, содержащий объекты’);

  Messagebox(0,Текст
сохранен,»,0);

  CloseDoc;

end;

Messagebox(0,Текст
закрыт,»,0);

CloseWord;

end;

end;

 В своей статье я постарался показать основы создания
документов Word на основе Word.Application и Delphi. На самом деле возможности
здесь таковы, что позволяют использовать редактор Word в качестве генератора
отчетов для создания документов любой сложности. Пожалуй, только используя
редактор Excel, их можно превзойти. Продолжение будет посвящено
программированию документов в Excel из приложений на Delphi.

Исходный текст http://www.delphi.ucoz.org/MSOffice/st1_5.zip

Василий КОРНЯКОВ

Литература: Н. Елманова, С. Трепалин,
А.Тенцер «Delphi 6 и технология COM» «Питер» 2002.

В раздел программы Uses подключаем модуль ComObj. Для запуска Word запишем следующее:

procedure TForm1.Button1Click(Sender: TObject);

var

Word: variant;

begin

try

Word := CreateOleObject(‘Word.Application’);

except

ShowMessage(‘Не могу запустить Microsoft Word’);

end;

Word.Visible := True;

Word.Documents.Add;

end;

Как нарисовать линию в Word в Delphi:

Word.ActiveDocument.Shapes.AddLine(x1, y1, x2, y2);

Как нарисовать прямоугольник в Word в Delphi:

Word.ActiveDocument.Shapes.AddShape(1, x1, y1, x2, y2);

Как вставить изображение в Word в Delphi:

Word.Selection.InlineShapes.AddPicture(FileName:=‘C:test.bmp’, LinkToFile:=False, SaveWithDocument:=True);


We need to insert a signature image into a Word template document. We are doing the mail-merging, etc. fine. But how do we insert an image programmatically? The signature image is not always the same.

We are using Delphi. But I can translate a C solution (if it does not use C libraries).

I also need to know how to position the image.

asked Jun 19, 2015 at 5:37

Rohit Gupta's user avatar

Rohit GuptaRohit Gupta

3,94713 gold badges31 silver badges41 bronze badges

var
Word, Doc: Variant;
begin
  Word := CreateOleObject('Word.Application');
  Doc := Word.Documents.Open('C:testword.docx');
  Word.ActiveDocument.InlineShapes.AddPicture('C:testsign.bmp');
  Doc.Save;
  Word.Quit;
end;

answered Jun 19, 2015 at 6:01

RepeatUntil's user avatar

RepeatUntilRepeatUntil

2,2624 gold badges31 silver badges57 bronze badges

1

Вставка графических объектов в документ MSWord средствами Delphi.

Пример добавления графических объектов в документ MSWord приведу в  следующем фрагменте кода:

const

msoShapeRectangle = 1;

begin

Word:= CreateOleObject(‘Word.Application’);
Word.Visible:= True;
Doc:= Word.Documents.Open(‘C:My_Doc1.doc’);
Doc.Shapes.AddShape(msoShapeRectangle, 5, 5, 20, 30, EmptyParam );

Рассмотрим метод AddShape. Метод AddShape коллекции Shapes используется для создания геометрических фигур.

Общее описание метода: AddShape(Type_: integer, Left, Top, Width, Height: Extended, Anchor: OleVariant)

Первый аргумент представляет собой целое число и определяет тип создаваемого объекта, например Туре_ = 1 соответствует прямоугольнику. Возможные типы фигур, поддерживаемых методом AddShape в версии Delphi7 описаны в модуле OfficeXP.pasАргументы Left, Top, Width, Height — числа, имеющие тип Extended и определяют соответственно отступ справа, отступ сверху, ширину и высоту создаваемого объекта. Аргумент Anchor, объект типа OleVariant, определяющий область, где будет создан объект.

Ниже приведу код модуля, рисующего все объекты по очереди в документе.

uses … ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
Word, Doc: variant;
count: OleVariant;
i: integer;

const
wdCharacter = 1;
wdLine = 5;
wdMove = 0;

begin
Word:= CreateOleObject(‘Word.Application’);
Word.Visible:= True;
Doc:= Word.Documents.Open(‘C:My_Doc1.doc’);
Doc.Shapes.AddShape(137, 0, 0, 30, 30, EmptyParam );
Word.Selection.Collapse(EmptyParam);
count:= 4;
  for i:= 136 downto 1 do
  begin
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.TypeParagraph;
  Word.Selection.MoveUp(wdLine, count, wdMove);
    try
    Doc.Shapes.AddShape(i, 0, 0, 30, 30, EmptyParam );
    except
    Showmessage(IntToStr(i));
    end;

  end;

Doc.Save;
Doc.Close;
Word.Quit; Word:= UnAssigned;
Word:= null;
end;

Основные значения переменной Type_ и соответствующие рисунки приведены в таблице:

 
Nadi ©
 
(2006-02-05 21:56)
[0]

Здравствуйте! подскажите пожалуйста как как вставить bmp картинку в Word не зная размеров картинки и вставляться они должны на место курсора! ПОдскажите кто знает!


 
YurikGL ©
 
(2006-02-05 23:08)
[1]

Для того чтобы узнать, как что-то сделать из Delphi во Word-e надо во Word-е зайти в меню сервис/макрос/начать запись… Потом сделать во Word-e то, что надо сделать из Delphi и закончить запись макроса. И наконец сервис/макрос/макросы…выбираем записанный…изменить и смотрим, как он устроен. После этого перевод синтаксиса VBA в синтаксис Delphi осуществляется просто и непринужденно.
Еще одним хорошим инструментом получения знаний являются компоненты типа TWordApplication. Кидаем его на форму, в любом операторе набираем WordApplication1., нажимаем ctrl+пробел и внимательно читаем. Смысл доступных функций и свойств обычно понятен интуитивно.


 
Некто_Аполло
 
(2006-02-09 14:17)
[2]

wd1.Selection.InlineShapes.AddPicture("имя файла",EmptyParam,EmptyParam,EmptyParam);


Like this post? Please share to your friends:
  • Изменяемые ячейки в excel это
  • Изменяемые примечания в excel
  • Изменяемые переменные в excel
  • Изменяемое название листа в excel
  • Изменяемая дата в ячейке excel