Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
ВнизRxRichEdit Найти похожие ветки
← →
Joy (2005-06-25 10:39) [0]Скажите пожалуйста, как из RxRichEdit программно вытащить картинку и сохранить ее в файл? Как обратиться к одной картинке из нескольких в RxRichEdit? Как отследить положение картинки в тексте?
← →
Ученик (2005-06-26 12:44) [1]Вариант на С++
http://www.codeguru.com/Cpp/misc/misc/msn/article.php/c3901,
раздел 1. How To Get Image Out of RichEditCtrl (Plus writing to bitmap file):
← →
Ученик (2005-06-26 17:36) [2]Эксперименты на Delphi
procedure TForm1.Button2Click(Sender: TObject);
const
IID_IDataObject: TGUID = "{0000010E-0000-0000-C000-000000000046}";
var
DataObject: IDataObject;
fm: TFORMATETC;
i, iObjectCount: Integer;
MetaFilePict: PMetaFilePict;
ReObject: TReObject;
RichEditOle: IRichEditOle;
stgm: STGMEDIUM;
begin
if SendMessage(JvRichEdit1.Handle, EM_GETOLEINTERFACE, 0, longint(@RichEditOle)) = 1 then begin
ReObject.cbStruct := SizeOf(ReObject);
iObjectCount := RichEditOle.GetObjectCount;
for i := 0 to iObjectCount - 1 do begin
Image1.Picture := nil;
if RichEditOle.GetObject(i, ReObject, REO_GETOBJ_POLEOBJ) = S_OK then begin
if reObject.oleobj.QueryInterface(IID_IDataObject, DataObject) = S_OK then begin
fm.cfFormat := CF_BITMAP;
fm.dwAspect := DVASPECT_CONTENT;
fm.ptd := nil;
fm.lindex := -1;
fm.tymed := TYMED_GDI;
if DataObject.GetData(fm, stgm) = S_OK then begin
if stgm.hBitmap <> 0 then try
Image1.Picture.Bitmap.LoadFromClipboardFormat(CF_BITMAP, stgm.hBitmap, 0)
finally
DeleteObject(stgm.hBitmap)
end
end else begin
fm.cfFormat := CF_METAFILEPICT;
fm.tymed := TYMED_MFPICT;
if DataObject.GetData(fm, stgm) = S_OK then begin
Image1.Picture.Bitmap.Width := Round((ReObject.sizel.cx / 2540) * 96);
Image1.Picture.Bitmap.Height := Round((ReObject.sizel.cy / 2540) * 96);
MetaFilePict := GlobalLock(stgm.hMetaFilePict);
try
with MetaFilePict^ do
if hMF <> 0 then try
with Image1.Picture.Bitmap do begin
SetMapMode(Canvas.Handle, MM_ANISOTROPIC);
SetViewportExtEx(Canvas.Handle, Width, Height, nil);
PlayMetaFile(Canvas.Handle, hMF)
end
finally
DeleteMetafile(hMF)
end
finally
GlobalUnlock(stgm.hMetaFilePict)
end
end
end
end
end;
ShowMessage("Object ¹ " + IntToStr(i + 1))
end
end
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c