Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Corba";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Corba";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.015 c
15-1142359435
Defunct
2006-03-14 21:03
2006.04.09
устойчивость CRC


3-1140078523
Yurij-7
2006-02-16 11:28
2006.04.09
BDE и параметр LEVEL


15-1142350792
Vlad
2006-03-14 18:39
2006.04.09
А кто-нибудь знает, новый закон о рекламе вступил в силу?


2-1142518530
Dust
2006-03-16 17:15
2006.04.09
комноненты Indi, что я делаю неправильно?


15-1142514612
Hover
2006-03-16 16:10
2006.04.09
Помогите небольшую задачку решить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский