Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TIMAGE и WORD [D6, WinXP]


Страницы:   1 2

Irishka ©   (2005-05-13 10:46:00) 

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


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

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


YurikGL   (2005-05-17 23:44:00) [2]


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

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


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

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


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

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


YurikGL   (2005-05-17 15:49:00) [5]

YurikGL ©   (17.05.05 08:28) [14]

> for counter:=0 to 32 do begin

наверное от 1

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


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

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


YurikGL   (2005-05-17 09:47:00) [7]


> 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 09:35:00) [8]

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


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


> Irishka   (17.05.05 08:44) [16]

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


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

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


YurikGL   (2005-05-17 08:29:00) [11]

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


YurikGL   (2005-05-17 08:28:00) [12]


> for counter:=0 to 32 do begin

наверное от 1

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


Irishka   (2005-05-17 07:52:00) [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-ая картинка.

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


GanibalLector   (2005-05-17 02:07:00) [14]

Блин,а нафига 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;


YurikGL   (2005-05-16 21:09:00) [15]


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

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


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

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


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

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

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

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

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


YurikGL   (2005-05-16 20:38:00) [17]


> 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 17:40:00) [18]

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;


Почему?


Cobalt   (2005-05-16 17:28:00) [19]

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


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

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо