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

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

Вставка документа Word в приложение через Clipboard [D5, Win95/98, NT4, Win2k]


Stocker! ©   (2002-11-18 12:23:00) 

Дано TImage, задача вставить документ Word на TImage через Clipboard (например таблицу). Вопросы:
1. Что за тип данных передается
2. Как их обработать, чтобы положить на TImage (хочу получить аналог ACad"a что рисуется рамочка вокруг объекта и при двойном нажатии вызывается Word для редактирования)
Заранее благодарен за ответы.


Stocker!   (2002-11-21 09:40:00) [1]

Уважаемый KA_ благодарю за подсказку.


KA_   (2002-11-20 09:43:00) [2]

Уважаемый Stocker!.
Очевидно, Вы не сможете хранить в TImage какой-либо объект Word, так как Вы хотите иметь возможность его активизировать. К тому же объект (например таблица) и документ Word - это несколько разные вещи. Зато вы можете показать с помощью TOLEContainer этот самый документ Word, сможете его активизировать и вставлять в него объекты из ClipBoard"а. Убедительно прошу Вас посмотреть хелп Delphi. В нем есть весьма неплохие примеры. А также на этом форуме неоднократно обсуждались подобные вопросы. Тоже с примерами.


Stocker!   (2002-11-20 08:45:00) [3]

2 Севостьянов Игорьа в обратную сторону то как? Преобразовать всё это дело к формату чтобы на IImage поместить можно было?


KA_   (2002-11-19 17:53:00) [4]

2 Севостьянов Игорь:
Спасибо за хороший пример :)


Севостьянов Игорь   (2002-11-19 14:35:00) [5]

Блин перепутал малостьнаоборот поместил картинку в Word
Н-да... для этого действительно не нужен TImage достаточно TOLEContainer


Севостьянов Игорь   (2002-11-19 14:32:00) [6]

Например вот так (хотя не идеальное решение, но на скорую руку...)

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;


KA_   (2002-11-19 08:42:00) [7]

Ну это сложно сделать с помощью TImage"а. Зато есть такой прекрасный компонент - TOLEContainer. Вот с ним что-то подобное сделать можно.


Крот   (2002-11-19 08:41:00) [8]

Простите, погорячился, есть ведь TOleContainer


Крот   (2002-11-19 08:11:00) [9]

Если я правильно понял задачу, Вам нужно разбираться в технологии OLE2. Боюсь, в двух словах Вам этого на форуме никто не объяснит.


Stocker!   (2002-11-19 07:43:00) [10]

Никто не пробовал, не работал с этим?


Наверх

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