Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 040

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Здравствуйте!Доброго времени суток! вопрос такой:
Как найти текст в RichView и заменить его?

RazyilleR Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: RazyilleR (статус: Посетитель)
Вопрос отправлен: 15 апреля 2010, 02:00
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 15 апреля 2010, 10:24; участников в обсуждении: 3.
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:11 [#1]:

Memo ИМХО
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:15 [#2]:

Memo не подходит, нужно искать текст и заменять его на картинки
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:24 [#3]:

чё за прога у тебя такая? =)))
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:30 [#4]:

чат))
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:32 [#5]:

т.е. строка вводится в RichView в строке текс и коды смйликов, нужно обработать строку и заменить текст на текст + смайлик
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:36 [#6]:

О те делать нечего!!!
Давно бы уже скачал исходниг аналога ICQ =)))
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:39 [#7]:

что поделать, каждыйй извращается посвоему
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:41 [#8]:

Да, здесь ты прав!!! =)))
А ты в многопоточности не шариш? =)
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:43 [#9]:

Я остановился на клиент сервер не дойдя до смайлов и аватарок =)
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:45 [#10]:

клиент - сервер работает нормально, а вот с анимированными смайликами запарка вышла, а отступать уже нелхота, столько перелопатил литературы
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 02:49 [#11]:

Всё правильно(с литературой) =)
Без этого никак =/
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 02:52 [#12]:

как можно перехватить текст вводимый в RichView? т.е. событие что ли свое написать которое будет при приеме текста обрабатывать и выводить
Ximer

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

RazyilleR (статус: Посетитель), 15 апреля 2010, 03:06 [#14]:

спс
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 15 апреля 2010, 07:00 [#15]:

RazyilleR: В чём отличие от вопроса 4036?
RazyilleR

RazyilleR (статус: Посетитель), 15 апреля 2010, 10:24 [#16]:

компоненты разные

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:29
Выполнено за 0.02 сек.