Текущий архив: 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.51 MB
Время: 0.012 c