![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TIMAGE и WORD [D6, WinXP]
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!