IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Изображение и RichEdit
Unconnected
сообщение 11.06.2009 20:34
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Допустим, имеется изображение(оно может быть разное) в RichEdit. Как его можно преобразовать в текст, чтобы для каждой картинки был свой "идентефикатор"? Помимо картинки в RichEdite может быть ещё и текст.

Сообщение отредактировано: Unconnected - 11.06.2009 20:39


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Unconnected
сообщение 16.06.2009 14:04
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Возникло одно непредвиденное затруднение...
Оформил я, значит, процедуру GetPosition в виде функции, возвращающей координаты курсора, и сделал формирование строки сообщения. Всё это дело висит на событии OnKeyPress РичЭдита. Выглядит вот так:

Function TForm1.GetPosition(Sender:TsRichEdit):TPoint;
var
iX,iY:Integer;
TheRichEdit:TsRichEdit;
begin
iX:=0;iY:=0;
TheRichEdit:=TsRichEdit(Sender);
iY:=SendMessage(TheRichEdit.Handle, EM_LINEFROMCHAR, TheRichEdit.SelStart,0);
iX:=TheRichEdit.SelStart - SendMessage(TheRichEdit.Handle, EM_LINEINDEX,iY, 0);
result.Y:=(iY+1);result.X:=(iX+1);
end;

procedure TForm1.sRichEdit1KeyPress(Sender: TObject; var Key: Char);
var pt:TPoint;
ss:string;
begin
ss:=key;
if key=#13 then begin
button4.click;
key:=#0;
exit;
end;
pt.X:=getposition(memo1).x;
pt.y:=getposition(memo1).y;
if pt.Y=1 then insert(ss,messag,pt.X)
else insert(ss,messag,(pt.Y*69)+pt.x);
end;


Вот так формируется строка. Если вставляется смайл, то в строку входит блок типа "#&номер_смайла#0". И это даже работает. Проблема в другом, допустим, пользователь набрал сообщение, со смайлом, вдруг увидел опечатку и стёр полмессаджа, в котором и был смайл. Как это можно отразить на формируемой строке? Я не могу придумать именно алгоритм действий. Можно, в принципе, обрабатывать нажатия BackSpace и Delete, но тогда придётся обработать ещё и ситуацию, когда пользователь выделил кусок текста и нажал Delete... Что посоветуете?..

Сообщение отредактировано: Unconnected - 16.06.2009 14:06


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Изображение и RichEdit   11.06.2009 20:34
volvo   А ты попробовал в стандартный TRichEdit запихать и...   12.06.2009 10:43
Unconnected   Картинка в RichEdit уже добавляется, в том и дело,...   12.06.2009 11:37
volvo   Насколько я понимаю, это для твоего ICQ-клиента, ч...   12.06.2009 12:39
Unconnected   Ну, почти угадал...:) Об реализации истории я ещ...   12.06.2009 13:04
Unconnected   Или ответ на мой вопрос кроется в этой фразе? Я ...   12.06.2009 14:40
volvo   :blink: Ты смотрел содержимое модуля, который при...   12.06.2009 14:58
Unconnected   Ну, я этой процедурой и добавляю, там нужно имя ри...   12.06.2009 15:07
volvo   Битмап всегда вставляется в текущую позицию, туда,...   12.06.2009 15:47
Unconnected   Ага, в принципе всё ясно... И ещё, как можно получ...   12.06.2009 15:51
volvo   "DRKB -> VCL -> TRichEdit -> Каретка...   12.06.2009 15:56
Unconnected   Спасибо, наконец иду дальше:)   12.06.2009 19:04
Unconnected   Возникло одно непредвиденное затруднение... Оформ...   16.06.2009 14:04
volvo   :yes2: Придется... Если хочешь сделать работоспос...   16.06.2009 15:16
Unconnected   Хм... ну допустим, а вот если в выделенном фрагм...   18.06.2009 19:39
volvo   Я окончательно запутался в том, что ты делаешь... ...   18.06.2009 21:06
Unconnected   Volvo, у тебя AlphaControls не установлен случаем?...   18.06.2009 21:42
Unconnected   Вот часть проекта с формированием строки, все комп...   18.06.2009 22:27


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.07.2025 10:27
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"