|
Вопрос # 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]:
компоненты разные
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|