Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2013, 18:58   #1
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию Картинка и текст RxRichEdit

Здравствуйте! Я делаю чат и мне понадобилось сделать смайлы для него.

Использую эту функцию:
Код:
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\dibitmap0 ';
   SetLength(hexpict, (Length(bb) + Length(bi)) * 2);
   I := 2;
   for bis := 1 to Length(bi) do
   begin
     achar := IntToHex(Integer(bi[bis]), 2);
     hexpict[I - 1] := achar[1];
     hexpict[I] := achar[2];
     Inc(I, 2);
   end;
   for bbs := 1 to Length(bb) do
   begin
     achar := IntToHex(Integer(bb[bbs]), 2);
     hexpict[I - 1] := achar[1];
     hexpict[I] := achar[2];
     Inc(I, 2);
   end;
   rtf := rtf + hexpict + ' }}';
   Result := rtf;
end;
для вставки изображения в RxRichEdit.

Смайл вставляется отлично если нету рядом никакого текста. В противном случае вместо картинки выводится подобный текст:
Цитата:
{\rtf1 {\pict\dibitmap0 28000000100000001000000001000100000 00000400000000000000000000000000000 000000000000000000FFFFFF00FF000000F F000000FF000000FF000000FF000000FF00 0000FF000000FF000000FFFF0000FFFF000 0FFFF0000FFFF0000FFFF0000FFFF0000FF FF0000FFFF0000 }}
Смайл вставляю таким способом:
Код:
RxRichEdit1.Text:=StringReplace(RxRichEdit1.Text,'=)',BitmapToRTF(image1.Picture.Bitmap),[rfReplaceAll]);
Как можно исправить эту ситуацию?
Pearl777 вне форума Ответить с цитированием
Старый 27.05.2013, 20:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты перед смайлом попробуй пробел ставить.
Или перевод каретки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2013, 21:00   #3
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Stilet, Спасибо, но это не помогло.
Pearl777 вне форума Ответить с цитированием
Старый 27.05.2013, 22:14   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда не знаю...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2013, 22:47   #5
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Нашел рабочий модуль.
Вставляю картинку вот так:
Код:
InsertBitmapToRE(RichEdit1.Handle, image1.Picture.Bitmap.Handle);
Но как мне ставить её в нужное мне место?
Pearl777 вне форума Ответить с цитированием
Старый 27.05.2013, 22:48   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно Bitmap напрямую в RxRichEdit засунуть и потом сохранить/прочитать в rtf-формате. Нужное место SelStart или без него после курсора
Код:
procedure TForm1.Button1Click(Sender: TObject);
var BitMap: TBitmap;
begin
  BitMap:=TBitmap.Create;
  BitMap.LoadFromFile('E:\Delete1.bmp');
  Clipboard.Assign(BitMap);
  RxRichEdit1.SelStart:=1;
  RxRichEdit1.PasteFromClipboard;
  Clipboard.Clear;
  BitMap.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  RxRichEdit1.Lines.SaveToFile('e:\uuu.rtf');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  RxRichEdit1.Clear;
  RxRichEdit1.Lines.LoadFromFile('e:\uuu.rtf');
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.05.2013 в 22:52.
Аватар вне форума Ответить с цитированием
Старый 27.05.2013, 23:33   #7
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Всем спасибо! Проблема решина.
Pearl777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RxRichEdit и русский текст vodolef Компоненты Delphi 0 11.03.2011 23:35
Картинка и текст Abuhamed HTML и CSS 1 24.02.2011 08:20
Мне надо сделать так что бы на главной странице картинка была по центру и под ней находился текст Чайник = ) HTML и CSS 1 21.10.2010 18:39
Картинка и текст в одном поле таблицы _SERGEYX_ БД в Delphi 0 23.01.2010 16:19
Текст + картинка Killbrum Помощь студентам 13 26.05.2008 22:33