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

Previous  Top  Next

    
 

 

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

 

 

©Drkb::00562

Автор: 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:

Code:

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;

 

 

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

Code:

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

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

RE.PlainText := False;

RE.StreamMode := [smSelection];

RE.Lines.LoadFromStream(SS);

SS.Free;

 

©Drkb::00563

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