Форум: "Основная";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];
ВнизВставка документа Word в приложение через Clipboard Найти похожие ветки
← →
Stocker! (2002-11-18 12:23) [0]Дано TImage, задача вставить документ Word на TImage через Clipboard (например таблицу). Вопросы:
1. Что за тип данных передается
2. Как их обработать, чтобы положить на TImage (хочу получить аналог ACad"a что рисуется рамочка вокруг объекта и при двойном нажатии вызывается Word для редактирования)
Заранее благодарен за ответы.
← →
Stocker! (2002-11-19 07:43) [1]Никто не пробовал, не работал с этим?
← →
Крот (2002-11-19 08:11) [2]Если я правильно понял задачу, Вам нужно разбираться в технологии OLE2. Боюсь, в двух словах Вам этого на форуме никто не объяснит.
← →
Крот (2002-11-19 08:41) [3]Простите, погорячился, есть ведь TOleContainer
← →
KA_ (2002-11-19 08:42) [4]Ну это сложно сделать с помощью TImage"а. Зато есть такой прекрасный компонент - TOLEContainer. Вот с ним что-то подобное сделать можно.
← →
Севостьянов Игорь (2002-11-19 14:32) [5]Например вот так (хотя не идеальное решение, но на скорую руку...)
uses
Windows, SysUtils, Forms, StdCtrls, Classes, Controls,
OleServer, ComObj, ExtCtrls, jpeg, FileCtrl;
....
procedure InsertImageToDoc(DocFile: AnsiString; Image: TImage);
const
ImageTmpFN: string = "img.tmp";
var
wdApp: Variant;
ImageFile: string;
begin
wdApp := CreateOLEObject("Word.Application");
try
wdApp.Visible := True;
wdApp.Documents.Add;
ImageFile := ExtractFilePath(DocFile)+ImageTmpFN;
Image.Picture.SaveToFile(ImageFile);
wdApp.Selection.InlineShapes.AddPicture(FileName := ImageFile, LinkToFile := False, SaveWithDocument := True);
finally
DeleteFile(ImageFile);
wdApp.ActiveDocument.SaveAs(DocFile);
wdApp.Documents.Close;
wdApp.Quit;
wdApp := UnAssigned;
end;
end;
procedure TfrmMain.btnInsertImageClick(Sender: TObject); //btnInsertImage: TButton;
const
DocDir: string = "Docs\";
FName: string = "NewDoc.doc";
begin
DocDir := ExtractFilePath(Application.ExeName)+DocDir;
ForceDirectories(DocDir);
InsertImageToDoc(DocDir+FName, Image1); // Image1: TImage;
end;
← →
Севостьянов Игорь (2002-11-19 14:35) [6]Блин перепутал малость наоборот поместил картинку в Word
Н-да... для этого действительно не нужен TImage достаточно TOLEContainer
← →
KA_ (2002-11-19 17:53) [7]2 Севостьянов Игорь:
Спасибо за хороший пример :)
← →
Stocker! (2002-11-20 08:45) [8]2 Севостьянов Игорь а в обратную сторону то как? Преобразовать всё это дело к формату чтобы на IImage поместить можно было?
← →
KA_ (2002-11-20 09:43) [9]Уважаемый Stocker!.
Очевидно, Вы не сможете хранить в TImage какой-либо объект Word, так как Вы хотите иметь возможность его активизировать. К тому же объект (например таблица) и документ Word - это несколько разные вещи. Зато вы можете показать с помощью TOLEContainer этот самый документ Word, сможете его активизировать и вставлять в него объекты из ClipBoard"а. Убедительно прошу Вас посмотреть хелп Delphi. В нем есть весьма неплохие примеры. А также на этом форуме неоднократно обсуждались подобные вопросы. Тоже с примерами.
← →
Stocker! (2002-11-21 09:40) [10]Уважаемый KA_ благодарю за подсказку.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c