Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

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

01.01.2007

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

Автор: Vit

Взято с Vingrad.ru https://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;

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