Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

TIMAGE и WORD   Найти похожие ветки 

 
Irishka   (2005-05-13 10:46) [0]

Ответьте, пожалуйста как вставить картинку из Word в  компонент TImage.
Заранее благодарна!


 
YurikGL ©   (2005-05-13 13:48) [1]

Самый простой способ -
1) Выбрать рисунок во ворде (функция select)
2) Взять рисунок в буфер (функция copy, если правильно помню)
3) Вставить в TImage (Image1.Picture.LoadFromClipboardFormat(...))


 
Irishka   (2005-05-15 07:25) [2]

YurikGL, вопрос:
=-= А как выбрать рисунок в Ворде, как программа увидет этот рисунок в ВОРДЕ? =-=


 
YurikGL ©   (2005-05-15 07:52) [3]

http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208

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


Будет что-то типа WordApplication.activedocument.images.items[номер].select


 
Irishka   (2005-05-16 17:10) [4]

YurikGL, спасибо за помощь, но...
Вот кусок кода!
Пишет ошибку, типа: "Не знаю что такое images!"
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.ActiveDocument.images.items[1].select;
WordApplication1.activedocument.images.items[1].copy;
Image1.Picture.LoadFromClipboardFormat(WordApplication1.activedocument.images.items[1].copy);
end;

заранее СПАСИБО!!!


 
YurikGL ©   (2005-05-16 17:20) [5]


> Irishka   (16.05.05 17:10) [4]

Пост внимательно читать надо... Особенно про макросы.

WordApplication1.ActiveDocument.InlineShapes.Item(1).Select;


 
Irishka   (2005-05-16 17:24) [6]

YurikGL, ты интересный. Спасатель и массажист - это круто!

>нажимаем ctrl+пробел и внимательно читаем.
У меня это не срабатывает!
HELP!


 
Cobalt ©   (2005-05-16 17:28) [7]

А что говорит Alt+P+S  ?


 
Irishka   (2005-05-16 17:40) [8]

Cobalt, это говорит: "ПУСК". Т.Е. программа начинает компилировать, и снова ошибка:
procedure TForm1.Button1Click(Sender: TObject);
begin
WordApplication1.ActiveDocument.InlineShapes.Item(1).select;
WordApplication1.activedocument.InlineShapes.Item(1).copy;-"COPY" не нравится!
Image1.Picture.LoadFromClipboardFormat(WordApplication1.activedocument.InlineShapes.Item(1));
end;


Почему?


 
YurikGL ©   (2005-05-16 20:38) [9]


> WordApplication1.activedocument.InlineShapes.Item(1).copy;-"COPY"
> не нравится!


меняй на
WordApplication1.Selection.Copy;


> Image1.Picture.LoadFromClipboardFormat(WordApplication1.activedocument.InlineShapes.Item(1));

Читай справку к LoadFromClipboardFormat. На худой конец, ищи примеры в яндексе...


> YurikGL, ты интересный. Спасатель и массажист - это круто!

Спасибо...

> >нажимаем ctrl+пробел и внимательно читаем.
> У меня это не срабатывает!
А на других компонентах срабатывает? На edit или image, например?


 
Irishka   (2005-05-16 20:58) [10]

>А на других компонентах срабатывает? На edit или image, например?

Нет, и не на edit и не на image.

>Читай справку к LoadFromClipboardFormat. На худой конец, ищи примеры в яндексе...

YurikGL, скинь несколько примеров или статьи на эту тему, пожалуйста!
Заранее, благодарю!


 
YurikGL ©   (2005-05-16 21:09) [11]


> >А на других компонентах срабатывает? На edit или image,
> например?
>
> Нет, и не на edit и не на image.

Значит, не там нажимаешь :)


> YurikGL, скинь несколько примеров или статьи на эту тему,
> пожалуйста!

Я вот просто в яндексе набрал "LoadFromClipboardFormat пример" и получил
Image1.Picture.Bitmap.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);


 
GanibalLector ©   (2005-05-17 02:07) [12]

Блин,а нафига LoadFromClipBoardFormat? Зачем так сложно? Ведь можно и так :

WordApp.Selection.CopyAsPicture;
//
ClipBoard.Open;
Image1.Picture.Assign(Clipboard);
Clipboard.Close;


Полный вариант(для любых версий Word-a...позднее связывание.
Проверено: УТЕЧЕК НЕТ)


var WordApp:Variant;
begin
 WordApp := CreateOleObject("Word.Application");
 try
   WordApp.Visible:=False;
   WordApp.Documents.Open("C:\2.doc");
   WordApp.ActiveDocument.InlineShapes.Item(1).Select;
   WordApp.Selection.CopyAsPicture;
   //
   ClipBoard.Open;
   if (Clipboard.HasFormat(CF_BITMAP)) or
   (Clipboard.HasFormat(CF_PICTURE)) then
   Image1.Picture.Assign(Clipboard);
   ClipBoard.Clear;// ОБЯЗАТЕЛЬНО
   Clipboard.Close;
   //
   WordApp.ActiveDocument.Close;
   WordApp.Quit;
 finally
   WordApp:=UnAssigned;
 end;
end;


 
Irishka   (2005-05-17 07:52) [13]

Вставка картинки работает!
Помогите, пожалуйста, организовать такой цикл:
У меня в вордовском файле  32 - картинки. Я хочу чтобы они в IMAGE1 по щелчку мыши менялись по порядку. Вот примерный код:
procedure TForm1.Button1Click(Sender: TObject);
var counter:integer;
begin
inc(counter);
for counter:=0 to 32 do begin
WordApplication1.ActiveDocument.InlineShapes.Item(counter).Select;
WordApplication1.Selection.CopyAsPicture;
ClipBoard.Open;
if (Clipboard.HasFormat(CF_BITMAP)) or
  (Clipboard.HasFormat(CF_PICTURE)) then
  Image1.Picture.Assign(Clipboard);
  ClipBoard.Clear;
  Clipboard.Close;    
end;

ОШИБКА в том, что при щелчке мыши появляется сразу 32-ая картинка.

Заранее -=СПАСИБО=-


 
YurikGL ©   (2005-05-17 08:28) [14]


> for counter:=0 to 32 do begin

наверное от 1

проверь реальные номера картинок в твоем документе с помощью макросов.


 
YurikGL ©   (2005-05-17 08:29) [15]

Кроме того, код
> Irishka   (17.05.05 07:52) [13]
последовательно вставляет картинку за картинкой т.е в одном клике у тебя вставляются все 33 по очереди...


 
Irishka   (2005-05-17 08:44) [16]

YurikGL, да, именно так!
А как сделать чтобы не в одном клике?
Что добавить надо или что убрать?


 
YurikGL ©   (2005-05-17 09:20) [17]


> Irishka   (17.05.05 08:44) [16]

Надо сделать глобальный счетчик где-нибудь в свойствах формы, например. На OnShow формы присвоить ему 0. А в onClick сначала один раз (без цикла for) переслать картинку, а потом увеличить счетчик на единицу. Если счетчик достиг 32, то не увеличивать.


 
Irishka   (2005-05-17 09:35) [18]

YurikGL, можно поподробнее please.
В чем смысл глобального счетчика? И как увеличить его на единицу&


 
YurikGL ©   (2005-05-17 09:47) [19]


> Irishka   (17.05.05 09:35) [18]


глобальный счетчик
TForm1 = class(TForm)
.....
counter:integer;
...

Его инициализация
 form1.onshow..
....
counter:=1;

Собственно процедура
procedure TForm1.Button1Click(Sender: TObject);
var counter:integer;
begin

WordApplication1.ActiveDocument.InlineShapes.Item(counter).Select;
WordApplication1.Selection.CopyAsPicture;
ClipBoard.Open;
if (Clipboard.HasFormat(CF_BITMAP)) or
  (Clipboard.HasFormat(CF_PICTURE)) then
  Image1.Picture.Assign(Clipboard);
  ClipBoard.Clear;
  Clipboard.Close;    

if counter<32 then inc(counter);

end;


 
Irishka   (2005-05-17 10:22) [20]

YurikGL, круто! Спасибо!
Только картинки появляются последовательно через одну или через две начиная со второй. А в конце программа зависает.
Пробывала менять счетчик на 0 и 2 и -1, всеравно появляются так как им хочется.
В чем ошибка?


 
YurikGL ©   (2005-05-17 15:49) [21]

YurikGL ©   (17.05.05 08:28) [14]

> for counter:=0 to 32 do begin

наверное от 1

проверь реальные номера картинок в твоем документе с помощью макросов.


 
Irishka   (2005-05-17 20:09) [22]

YurikGL, спасибо тебе ОГРОМНОЕ за то, что ты так упорно хочешь достучаться до моих куринных мозгов. Но это мне не о чем не говорит. Как это сделать? Помоги, YurikGL пожалуйста!


 
Irishka   (2005-05-17 20:27) [23]

YurikGL, ВСЁ РАБОТАЕТ как надо!
А как увеличить картинку!


 
YurikGL ©   (2005-05-17 23:44) [24]


> А как увеличить картинку!

Где? Во ворде или в Image?


 
Irishka   (2005-05-18 14:46) [25]

В IMAGE!
В файле картинки довольно большие, а вот в image приходится глаза натягивать!



Страницы: 1 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.037 c
15-1142247003
Pearled
2006-03-13 13:50
2006.04.09
Помогите найти книгу "Системное программное обеспечение"


15-1142951445
Volf_555
2006-03-21 17:30
2006.04.09
Оцените программу!


3-1139765388
Evgenij_
2006-02-12 20:29
2006.04.09
Обновление даных в DBGrid e


15-1142532712
lookin
2006-03-16 21:11
2006.04.09
Таки Зенит вышел в следующую стадию УЕФА...


2-1143425727
Wood
2006-03-27 06:15
2006.04.09
Как это должно работать!?