Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.113.188] |
|
Сообщ.
#1
,
|
|
|
Как поместить картинку в компонент Memo (я пишу чат для локалки и хочу использовать смайлики)
|
Сообщ.
#2
,
|
|
|
Ну так знай, в TMemo у тебя не получится, он такое просто не поддерживает.
|
Сообщ.
#3
,
|
|
|
я вот тож подумал, а почему не воспользоваться RichEdit и не сделать его readonly ?
|
Сообщ.
#4
,
|
|
|
Да, вообщето не получиться.
Вопрос, почему M$ не стала поддерживать OWNERDRAW у EDITBOX? (Для тех кто не знает, Memo - это большой EDITBOX). Т.е. вообще странно, почему можно рисовать в COMBOBOX, LISTBOX, LISTVIEW, BUTTON и даже STATIC, а в EDITBOX - нет. Так что дял такой задачи придется писать свой класс, самому обрабатывать клаву, расставялть строки по местам и т.д. и т.п. А чем тут может помочь RICHEDIT, я не понял. |
Сообщ.
#5
,
|
|
|
Ну почему же не получится ?
У любого видимого компонента, в том числе и TMemo есть Canvas, а на ней по определению можно чертить, рисовать, класть битмапы,писать буквами итд. Другое дело какой компонент взять, чтобы геморроя было поменьше... У ТМемо, я так понимаю, только один геморрой будет - как устроить скроллинг иконок вместе с текстом... Ну или при редактировании текста как отрабатывать их перемещение... |
Сообщ.
#6
,
|
|
|
С Canvas ты загнул определенно: как ты вообще это собираешся реализовыать. Вот есть у тебя текст, а тебе надо посредине вставить картинку. Вопрос, как ты этот текст раздвинешь? Веть он рисуется вне зависимости от тебя. Да конечно, рисвоть в канве можно, но с текстом ты ничего не сделаешь. Можно конечно стерать все по OnPaint, и рисовать текст еще раз самостоятельно (с картинками), но это уже точно гемморой. Да и систему загрузит.
|
Сообщ.
#7
,
|
|
|
Ну, к примеру, можно сделать так:
Есть некое определенное количество смайликов (иконок). Назначаем каждой иконке некий нечитабельный код символа, который точно не должен присутствовать в тексте, ну там $01,$02,$03... Создаем предка от TMemo и подправляем вывод текста на канвас (ну или метод в предке который этим занимается), с тем условием, что если встречается такой символ, то надо не букву вывести а иконку вставить и сдвинуть текущую позицию на ширину иконки... Тогда все операции по перерисовке и скролингу он будет делать сам без посторонней помощи... Вариант 2 , правда не пройдет с разноцветными иконками: Создаем динамически шрифт, в котором содержатся эти самые смайлики или переключаем шрифт в момент вывода на экран, если встретился такой символ...(к сожалению TMemo только с одним шрифтом одновременно работать умеет) Единственное что удастся раскрасить - это символ целиком. Ну это уже по желанию... |
Сообщ.
#8
,
|
|
|
Вот об этом я и говорил. Как ты собираешся раздвигать текст, ели он рисуется без твоего разумения (его рисует Windows), и ни какой предок TMemo этим не занимается.
|
Сообщ.
#9
,
|
|
|
Блин... Ну и фиг с ним, нехай рисует, мне что от этого... Что я ему дам и где скажу - там и нарисует...
Или виндовс сам знает что писать и где? Позиция и текст хранятся в КОМПОНЕНТЕ ! Скармливать виндам текст по кускам и где надо свою процедуру запускать с перерисовкой иконок и ок.. Что опять не прав ? |
Сообщ.
#10
,
|
|
|
Я об этом уже говорил, что так можно делать, но вопервых, придется сначала все стирать, а потом рисовать самостоятельно, а это сильно гемморойно и не рационально.
|