![]() |
![]() ![]() ![]() ![]() |
|
Вставить RTF-текст в документ MS WordDelphi , Технологии , OLE Automation MSOfficeВставить RTF-текст в документ MS Word
Оформил: DeeCo
uses
Word_TLB, ActiveX, ComObj;
function GetRTFFormat(DataObject: IDataObject; var RTFFormat: TFormatEtc): Boolean;
var
Formats: IEnumFORMATETC;
TempFormat: TFormatEtc;
pFormatName: PChar;
Found: Boolean;
begin
try
OleCheck(DataObject.EnumFormatEtc(DATADIR_GET, Formats));
Found := False;
while (not Found) and (Formats.Next(1, TempFormat, nil) = S_OK) do
begin
pFormatName := AllocMem(255);
GetClipBoardFormatName(TempFormat.cfFormat, pFormatName, 254);
if (string(pFormatName) = 'Rich Text Format') then
begin
RTFFormat := TempFormat;
Found := True;
end;
FreeMem(pFormatName);
end;
Result := Found;
except
Result := False;
end;
end;
procedure WriteToMSWord(const RTFText: String);
var
WordDoc: _Document;
WordApp: _Application;
DataObj : IDataObject;
Formats : IEnumFormatEtc;
RTFFormat: TFormatEtc;
Medium : TStgMedium;
pGlobal : Pointer;
begin
try
GetActiveOleObject('Word.Application').QueryInterface(_Application, WordApp);
except
WordApp := CoWordApplication.Create;
end;
WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
WordApp.Visible := True;
WordDoc := WordApp.ActiveDocument;
OleCheck(WordDoc.QueryInterface(IDataObject,DataObj));
GetRTFFormat(DataObj, RTFFormat);
FillChar(Medium,SizeOf(Medium),0);
Medium.tymed := RTFFormat.tymed;
Medium.hGlobal := GlobalAlloc(GMEM_MOVEABLE, Length(RTFText)+1);
try
pGlobal := GlobalLock(Medium.hGlobal);
CopyMemory(PGlobal,PChar(RTFText),Length(RTFText)+1);
GlobalUnlock(Medium.hGlobal);
OleCheck(DataOBJ.SetData(RTFFormat,Medium,True));
finally
GlobalFree(Medium.hGlobal);
ReleaseStgMedium(Medium);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
WriteToMSWord(Memo1.Text); // may be rtf-formatted text
end;
Программа на языке Delphi, которая вставляет текст формата Rich Text Format (RTF) в документ Microsoft Word с помощью активного контроля ActiveX. Вот разбивка кода: Функция GetRTFFormat
Эта функция принимает объект Процедура WriteToMSWord Эта процедура принимает текст RTF в качестве входного параметра и записывает его в документ Microsoft Word с помощью активного контроля ActiveX. Вот что она делает:
Обработчик события Button2Click
Это обработчик события клика кнопки, который вызывает процедуру В целом, этот код предоставляет способ вставки текста формата Rich Text Format в документ Microsoft Word с помощью Delphi и активного контроля ActiveX. В статье описана реализация функции вставки RTF-текста в документ Microsoft Word из приложения на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: OLE Automation MSOffice ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||