各位前辈好,我想在form1中加入ImageList,ComboBoxEx和Richedit。ImageList中添加了许多表情图片,ComboBoxEx用于显示ImageList中图片,通过选择ComboBoxEx中的表情,让该表情显示在Richedit中。
现在的问题是,1、Richedit可以显示图片吗?
2、Richedit可以显示图片的话,如何在Richedit中显示ComboBoxEx选择的表情图
片呢?
3、我查看了相关资料,说RxRichEdit可以用来显示图片,那要是采用RxRichEdit
又该如何实现?
谢谢各位前辈指导~期待你们的回答!
现在的问题是,1、Richedit可以显示图片吗?
2、Richedit可以显示图片的话,如何在Richedit中显示ComboBoxEx选择的表情图
片呢?
3、我查看了相关资料,说RxRichEdit可以用来显示图片,那要是采用RxRichEdit
又该如何实现?
谢谢各位前辈指导~期待你们的回答!
var
bi, bb: string;
bis, bbs: Cardinal;
achar: string[2];
Buffer: string;
I: Integer;
type
PWord = ^Word;
begin
GetDIBSizes(Bitmap.Handle, bis, bbs);
SetLength(bi, bis);
SetLength(bb, bbs);
GetDIB(Bitmap.Handle, Bitmap.Palette, PChar(bi)^, PChar(bb)^);
SetLength(Buffer, (Length(bb) + Length(bi)) * 2);
i := 1;
for bis := 1 to Length(bi) do
begin
achar := IntToHex(Integer(bi[bis]), 2);
PWord(@Buffer[i])^ := PWord(@achar[1])^;
inc(i, 2);
end;
for bbs := 1 to Length(bb) do
begin
achar := IntToHex(Integer(bb[bbs]), 2);
PWord(@Buffer[i])^ := PWord(@achar[1])^;
inc(i, 2);
end;
Result := '{\rtf1 {\pict\dibitmap ' + Buffer + ' }}';
end;procedure InsertBitmapIntoRxRichEdit(const Bitmap: TBitmap; const RxRichEdit:
TRxRichEdit); overload;
begin
RxRichEdit.SelText := ConvertBitmapToRTF(Bitmap);
RxRichEdit.SelLength := 0;
RxRichEdit.SelStart := RxRichEdit.SelStart + 1;
end;procedure TForm1.FormCreate(Sender: TObject);
var Items:TComboExItem;
i:integer;
begin
ComboBoxEx1.Style:=csExDropDownList;
for i:=0 to ImageList1.Count-1 do
begin
Items:=ComboBoxEx1.ItemsEx.Add;
Items.Caption:=IntToStr(i);
Items.ImageIndex:=i;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var Image:TBitmap;
begin
if ComboBoxEx1.ItemIndex<>-1 then
begin
Image:=TBitmap.Create;
ImageList1.GetBitmap(ComboBoxEx1.ItemIndex,Image);
InsertBitmapIntoRxRichEdit(Image,RxRichEdit1);
Image.Free;
end;
end;
但是procedure InsertBitmapIntoRxRichEdit(const Bitmap: TBitmap; const RxRichEdit:
TRxRichEdit); overload;过程中,把; overload删了才可以运行,要不会一直提示“Invalid compiler directive:'OVERLOAD'”
http://dev.csdn.net/develop/article/15/15089.shtm
主要是用GetDIB把设备有关位图转换成设备无关位图