| 
| 
 | Вопрос # 4 040/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Здравствуйте!Доброго времени суток! вопрос такой:
 Как найти текст в RichView и заменить его?
 
|  |   Вопрос задал: RazyilleR (статус: Посетитель)Вопрос отправлен: 15 апреля 2010, 02:00
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 16; последнее сообщение — 15 апреля 2010, 10:24; участников в обсуждении: 3. 
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:11 [#1]:Memo ИМХО |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:15 [#2]:Memo не подходит, нужно искать текст и заменять его на картинки |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:24 [#3]:чё за прога у тебя такая? =))) |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:30 [#4]:чат)) |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:32 [#5]:т.е. строка вводится в RichView в строке текс и коды смйликов, нужно обработать строку и заменить текст на текст + смайлик |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:36 [#6]:О те делать нечего!!! Давно бы уже скачал исходниг аналога ICQ =)))
 |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:39 [#7]:что поделать, каждыйй извращается посвоему |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:41 [#8]:Да, здесь ты прав!!! =))) А ты в многопоточности не шариш? =)
 |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:43 [#9]:Я остановился на клиент сервер не дойдя до смайлов и аватарок =) |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:45 [#10]:клиент - сервер работает нормально, а вот с анимированными смайликами запарка вышла, а отступать уже нелхота, столько перелопатил литературы |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 02:49 [#11]:Всё правильно(с литературой) =) Без этого никак =/
 |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 02:52 [#12]:как можно перехватить текст вводимый в RichView? т.е. событие что ли свое написать которое будет при приеме текста обрабатывать и выводить |  
|   | Ximer (статус: Посетитель), 15 апреля 2010, 03:01 [#13]:Используй любой из компонентов для работы с GIF`ами а потом вставляй саму компоненту в RichView методом AddControlEx 
 Пример работы с функцией AddControlEx:
 http://programmersforum.ru/attachment.php?attachmentid=8667&d=1234154829
 
 
 http://www.delphipages.com/forum/showpost.php?p=29105&postcount=3
 
 
 uses
 RichEdit;
 
 // Stream Callback function
 type
 TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
 cb: Longint; var pcb: Longint): DWORD;
 stdcall;
 
 TEditStream = record
 dwCookie: Longint;
 dwError: Longint;
 pfnCallback: TEditStreamCallBack;
 end;
 
 // RichEdit Type
 type
 TMyRichEdit = TRxRichEdit;
 
 // EditStreamInCallback callback function
 function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
 cb: Longint; var pcb: Longint): DWORD; stdcall;
 // by P. Below
 var
 theStream: TStream;
 dataAvail: LongInt;
 begin
 theStream := TStream(dwCookie);
 with theStream do
 begin
 dataAvail := Size - Position;
 Result := 0;
 if dataAvail <= cb then
 begin
 pcb := read(pbBuff^, dataAvail);
 if pcb <> dataAvail then
 Result := UINT(E_FAIL);
 end
 else
 begin
 pcb := read(pbBuff^, cb);
 if pcb <> cb then
 Result := UINT(E_FAIL);
 end;
 end;
 end;
 
 // Insert Stream into RichEdit
 procedure PutRTFSelection(RichEdit: TMyRichEdit; SourceStream: TStream);
 // by P. Below
 var
 EditStream: TEditStream;
 begin
 with EditStream do
 begin
 dwCookie := Longint(SourceStream);
 dwError := 0;
 pfnCallback := EditStreamInCallBack;
 end;
 RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream));
 end;
 
 // Convert Bitmap to RTF Code
 function BitmapToRTF(pict: TBitmap): string;
 // by D3k
 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;
 
 
 // Example to insert image from Image1 into RxRichEdit1
 procedure TForm1.Button1Click(Sender: TObject);
 var
 SS: TStringStream;
 BMP: TBitmap;
 begin
 BMP := TBitmap.Create;
 BMP := Image1.Picture.Bitmap;
 SS  := TStringStream.Create(BitmapToRTF(BMP));
 try
 PutRTFSelection(RxRichEdit1, SS);
 finally
 SS.Free;
 end;
 end;
 |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 03:06 [#14]:спс |  
|   | Ерёмин А.А. (статус: *Администратор), 15 апреля 2010, 07:00 [#15]:RazyilleR: В чём отличие от вопроса 4036? |  
|   | RazyilleR (статус: Посетитель), 15 апреля 2010, 10:24 [#16]:компоненты разные |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |