![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Вставить 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 |