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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 21:58   #1
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию Вставка изображения в word средствами delphi

Напишите как реализовать? второй день парюсь, ничего не могу найти по этому поводу....

Такая ситуация..

Есть логотип компании находящийся 'c:\tetra\logo.jpg' как его вставить в word ... со вставкой текста, таблиц разобрался а вот с изображением не могу...помогите пожалуйста.
MeTeOpA вне форума Ответить с цитированием
Старый 03.06.2010, 22:07   #2
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

А почему не сделать шаблон с картинкой и в него вставлять все остальное.
И парится не придется.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 03.06.2010, 22:09   #3
MeTeOpA
Форумчанин
 
Аватар для MeTeOpA
 
Регистрация: 17.02.2010
Сообщений: 194
По умолчанию

rdama // думал... но на дипломе за это три шкуры спустят

кстати нашел...

вот если кому то понадобится
Цитата:
Рисунки

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

Простейший метод вставить в документ рисунок - по упомянутым причинам он же и единственный - скопировать его в Word из буфера обмена. Предположим, рисунок у нас находится в компоненте DBImage. Сначала нужно загнать его в буфер обмена:
Clipboard.Assign(DBImage1.Picture);



Теперь для его вставки следует воспользоваться методом Paste объектов Range или Selection: WordApplication1.Selection.Paste или WordDocument1.Range(a,b).Paste. Оставить для рисунка достаточное количество пустых строк и попасть в нужное место - это уже наша забота. Если он попадет посреди текста, вид будет довольно противный - при такой вставке обтекание текстом рисунка происходит как-то странно. Можно приготовить для отчета шаблон, где заменяем рисунком какое-либо ключевое слово. О том, как найти в документе нужный текст, см. выше.

А теперь о несколько ином способе вставки рисунка, который устраняет проблемы с обтеканием и дает нам возможность перемещать его по документу, масштабировать и задавать отступы между рисунком и текстом. Способ, собственно, тот же - копируем из буфера обмена, но не прямо в документ, а в "рамку" - текстовую вставку. В ней может находиться не только текст, но и картинка, чем и воспользуемся.

"Рамки" образуют коллекцию Frames, нумеруются целым индексом, пробегающим значения от 1 до WordDocument1.Frames.Count. Добавим в документ рамку, изменим ее размер и вставим рисунок:
Clipboard.Assign(DBImage1.Picture);
vstart := 1;
vend := 2;
WordDocument1.Frames.Add(WordDocume nt1.Range(vstart, vend));
i := 1;
WordDocument1.Frames.Item(i).Height := DBImage1.Height;
WordDocument1.Frames.Item(i).Width := DBImage1.Width;
WordDocument1.Frames.Item(i).Select ;
WordApplication1.Selection.Paste;



Здесь для простоты предполагается, что размер DBImage равен размеру самой картинки, а также что до этого рамок у нас в документе не было. Обратить внимание следует на несколько моментов. Размер рамки надо задавать до того, как копировать в нее рисунок. Иначе она будет иметь размер по умолчанию, под который замасштабируется и наша картинка. При попытке изменить размер рамки задним числом размер картинки уже не изменится. Кроме того, параметр Range при добавлении рамки часто никакой роли не играет. Рамка изначально все равно появится в левом верхнем углу документа, а указанный кусок текста при этом не пострадает. Но это только в том случае, если он не выделен. Если в документе есть выделение, рамка появится вместо выделенного фрагмента. Таким образом можем ее вставить в нужное место взамен какого-то ключевого слова.

При желании можем ее подвигать в документе и "вручную". Для этого служат свойства горизонтального и вертикального позиционирования, которые задают ее отступ от левого верхнего "угла" документа:
i:=1;
WordDocument1.Frames.Item(i).Vertic alPosition:=30;
WordDocument1.Frames.Item(i).Horizo ntalPosition:=50;



Отступ между краями рамки и текстом задается следующим образом:
WordDocument1.Frames.Item(i).Horizo ntalDistanceFromText:=10;
WordDocument1.Frames.Item(i).Vertic alDistanceFromText:=10;



А теперь о масштабировании. Для этого достаточно длину и ширину рамки умножить на одно и то же число. Например:
WordDocument1.Frames.Item(i).Height :=DBImage1.Height*1.5;
WordDocument1.Frames.Item(i).Width: =DBImage1.Width*1.5;



При этом наша картинка в полтора раза пропорционально растянется. Точно также можно и уменьшить, но делить, как и множить, следует на одно число. Растягивать длину и ширину по-разному у меня лично не получалось. Задавать размер опять-таки надо еще до вставки рисунка. Ну и, наконец, удаление рамки:
WordDocument1.Frames.Item(i).Delete ;

Последний раз редактировалось MeTeOpA; 03.06.2010 в 22:12.
MeTeOpA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка изображения bambey Microsoft Office Excel 8 19.11.2010 12:55
CSS вёрстка, вставка Google map поверх изображения, фона! sting HTML и CSS 0 09.02.2010 22:27
Как перевести данные таблицы из Word в Exel средствами Delphi? Pinkygirl Помощь студентам 0 20.12.2009 16:04
Вставка изображения на определенную страницу. Seqular Microsoft Office Word 2 29.08.2009 14:09
Как средствами VBA экспортировать данные из Excel в Word? Pavel_Ine Microsoft Office Excel 3 20.04.2009 14:14