Как вставить картинку в RichEdit?

В стандартном RichEdit нельзя, для RichEdit с картинками используйте RichEdit из RxLib или JVCL.

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Взято с Vingrad.ru http://forum.vingrad.ru

Ниже представлен пример, который можно применить к RxRichEdit, RichEditEx, RichEdit98, и Microsoft RichTextBox (поставляемый с VB5+) не прибегая к использованию буфера обмена или OLE:

function BitmapToRTF(pict: TBitmap): string;

var

 bi,bb,rtf: string;

 bis,bbs: Cardinal;

 achar: ShortString;

 hexpict: string;

 I: Integer;

begin

 GetDIBSizes(pict.Handle,bis,bbs);

 SetLength(bi,bis);

 SetLength(bb,bbs);

 GetDIB(pict.Handle,pict.Palette,PChar(bi)^,PChar(bb)^);

 rtf := '{\rtf1 {\pict\dibitmap ';

 SetLength(hexpict,(Length(bb) + Length(bi)) * 2);

 I := 2;

 for bis := 1 to Length(bi) do

 begin

  achar := Format('%x',[Integer(bi[bis])]);

  if Length(achar) = 1 then

  achar := '0' + achar;

  hexpict[I-1] := achar[1];

  hexpict[I] := achar[2];

  Inc(I,2);

 end;

 for bbs := 1 to Length(bb) do

 begin

  achar := Format('%x',[Integer(bb[bbs])]);

  if Length(achar) = 1 then

  achar := '0' + achar;

  hexpict[I-1] := achar[1];

  hexpict[I] := achar[2];

  Inc(I,2);

 end;

 rtf := rtf + hexpict + ' }}';

 Result := rtf;

end;

А вот пример использования этой функции:

{SS это TStringStream, RE это TRxRichEdit, а BMP это TBitmap содержащий картинку.}

SS := TStringStream.Create(BitmapToRTF(BMP));

RE.PlainText := False;

RE.StreamMode := [smSelection];

RE.Lines.LoadFromStream(SS);

SS.Free;

Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...