Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с richedit (please HELP), ну очень надо 
:(
    Опции темы
coolikov
Дата 27.4.2006, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



Есть такая проблема не могу правильно выделять и копировать текст из RichEdit
В richedit на определенном месте стоит текстовый курсор.
Необходимо :  текст от самого начала  до курсора необходимо скопировать в строковую переменную, после этого скопировать от курсора до конца текста в другую.

Вариант типа скопировать все из Richedit и потом поделить строковыми функциями на две половины прошел бы, но токо в том случае есди бы я знал позицию текстового курсора в строке(не в пикселях а в знакоместах, (т.е. например 7 или 8 символ, а не 115х100 пикс)) 

Помогите ПЛИЗЗЗ а то уже нервы здают!!!
 smile 
 
PM MAIL   Вверх
~FoX~
Дата 27.4.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



i:=RichEdit1.SelStart;
Вернет номер символа за которым курсор висит 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Snowy
Дата 27.4.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

  s1 := copy(RichEdit1.Lines.Text, 0, RichEdit1.SelStart);
  s2 := copy(RichEdit1.Lines.Text, RichEdit1.SelStart + 1, Length(RichEdit1.Lines.Text));
 
PM MAIL   Вверх
coolikov
Дата 27.4.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



Огромное спасибо. Работает. Но в моей задаче оказалось не приминимо.

Вобщем то мне надо было осущ следующееЖ

1)вводить текст в richedit по кнопкам вставлять  смайлы  (СДЕЛАНО. смайлы беру из rtf)

2)при пасылке смайлы заменять на символьное представление (??????????)

3) при получении менять символьное представление на смайлы (СДЕЛАНО)

вот второй пункт как осущ не знаюю
Использовал только что предложенный  Snowy кусок кода

перед вставкой символа

Код

 s1 := copy(RichEdit1.Lines.Text, 0, RichEdit1.SelStart);    
  s2 := copy(RichEdit1.Lines.Text, RichEdit1.SelStart + 1, Length(RichEdit1.Lines.Text));
  s:=s1+'симв представление смайла'+s2



но вот в чем беда, если вставлять один смайл то это катит, а если их больше то символьным представлением замениться только один символ (на котором стоит курсор) а все другие просто будут пробелами (RichEdit их так вернет в строковую переменную)

мож кто посоветует реальный способ

З.Ы. простите что неясно изьясняюсь но башка не варит уже
 
PM MAIL   Вверх
Snowy
Дата 27.4.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



А. Всего-то.
Код
  RichEdit1.SelText := 'симв представление смайла';
И все. Ничего не нужно клеить. Всего одна строка. 
PM MAIL   Вверх
coolikov
Дата 27.4.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



to Snowy:
ПРоблема не в том :
У меня в Richedit нет симв представления смайлов там сразу картинки из rtf (как в ICQ в окне в котором ты пишешь нет символьного представления смайлов токо картинки) .
А как в данном форуме например организованы смайлы(в окне где пишеш вставляеться не картинка smile  а например-- omg ) не катит

Добавлено @ 13:22 
 smile А если исп не печатаемые символы(каждому смайлу соответствует свой непечат. символ) для того что бы потом перед отправкой заменять их на симв. представление.

Как думаете покатит?
  
PM MAIL   Вверх
~FoX~
Дата 27.4.2006, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



coolikov, Покатит, но символов маловато....
Смайл в форуме (да и везде) не есть один символ, это пследовательность символов, собственно как и везде....Так что проще тебе будет искать подстроку по шаблону.....Т.е. составляешь таблицу строк и соответствующих им картинок.....Потом с помощью SetPos (вроде так подстрока ищеться), определяешь положение смайлов и уже их рисуешь.
 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
coolikov
Дата 27.4.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



то  ~FoX~
Эта задача решена 
Решаем как выполнить обратное преобразование

ищу я в RichEdite а там картинки а не символьные представления. Я ж немогу искать определенную картинку(ИЛИ МОГУ??) и заменять ее на симв предст 
PM MAIL   Вверх
~FoX~
Дата 27.4.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



coolikov, Ты не так понял.....строка она и остается строкой (ты же посылаешь/принемаешь строку?), вот и работай с ней, а то что у тебя символы не отображаются как символы, а как картинки на контроле это уже дело десятое. 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
coolikov
Дата 27.4.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



To FOX
Да я принимаю и отправляю строку

У меня (УЖЕ ГОТОВА) функция приема и перевода символьного представления в смайлы
Т.Е. по приходу строки " :-)привет:-("
на ричедит1 выведеться " smile привет smile "

а вот счас надо наоборот:
Юзер пишет в окне текст но ведь не красиво чтобы он смайлы вставлял такие ":-)" 
поэтому он жмет на кнопку и выбират смайл (прям как в ICQ) и в ричедите2 вставляеться смайл-картинка а не символьное представление(УЖЕ СДЕЛАЛ)

осталось перед отправлением каким-то образом обработать данные в ричедите2 и заменить картинки на символьное представление 
ВОТ КАК ЭТО ОСУЩЕСТВИТЬ ??? smile 
 
PM MAIL   Вверх
Демо
Дата 27.4.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(coolikov @  27.4.2006,  14:15 Найти цитируемый пост)
ВОТ КАК ЭТО ОСУЩЕСТВИТЬ ??? 

Вручную обрабатывать все позиции, в которых находятся смайлики, т.е. при вставке запоминать позицию, соответственно, менять ее при корректировке, и т.д.
 


--------------------
    
PM MAIL ICQ Skype   Вверх
coolikov
Дата 27.4.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



ТО Демо


Цитата

Вручную обрабатывать все позиции, в которых находятся смайлики, т.е. при вставке запоминать позицию, соответственно, менять ее при корректировке, и т.д.


Думал так делать но тогда если пользователь отредактирует текст т.е. сотрет его или добавит, то позиции изменяться smile

Добавлено @ 14:32 
а отслеживать корректировку я думаю не так то просто (Делиты инсерты бекспейсы и .т.д) 
PM MAIL   Вверх
~FoX~
Дата 27.4.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



coolikov, Ну храни принятую/послонную/составленную строку отдельно, т.е. не надо ее брать из самого рича........Еще раз говорю, то что нарисовано в компаненте дело десятое....

Добавлено @ 15:06 
Короче так.....
Ты в риче пишеш текст, попутно вставляя туда смайлы....Смайлы у тебя кодяться последовательностью символов...Т.е. "привет smile" у тебя выглядит как 
Код

RichEdit1.Text := 'привет' + ' ' + ';-)';
//Точнее вот так 
RichEdit1.Text := RichEdit1.Text + ' ' + ';-)' //Или любой код смайла;
, 
В итоге текст твоего рича выглядит так:
Код

RichEdit1.Text := 'привет ;-)';

вот его и отправля/принемай/обрабатывай/рисуй etc. 
Если ты прям из текста рича выдираешь символы и рисуешь на их месте смайл, то парралельно заведи переменную s и в нее складируй не парсинную строку... 

Это сообщение отредактировал(а) ~FoX~ - 27.4.2006, 15:12


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0667 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.