Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichEdit атрибуты текста, Очень надо, пожалуйста помогите 
V
    Опции темы
WapCel
Дата 7.4.2010, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Создал чат
Сообщения сохраняются в TRichEdit

у меня есть имя юзера и сообщение

Так как ищо не знаю как только имя юзера покрасить, я просто крашу всю строку
Строка локального юзера: clBlack, других: clGray
Код

if (tmUser == EditNickname->Text) // tmUser - юзер // EditNickname->Text - имя юзер клиента
{
RichChat->SelAttributes->Color = clBlack;
RichChat->SelAttributes->Style = MemoChat->SelAttributes->Style << fsBold;
}
else
{
RichChat->SelAttributes->Color = clGray;
RichChat->SelAttributes->Style = MemoChat->SelAttributes->Style << fsBold;
}
RichChat->Lines->Add(tmTmp); / tmTmp - юзер: сообщение
}


Помогите украсить имя юзера чтобы получилось так:

Andrey: Hi all!
Nicky: Hi Andrey! What do you do?
Andrey: I play CS smile
Nicky: Are you ok?
Andrey:I'm fine thank you and you?
PM MAIL WWW ICQ   Вверх
xvr
Дата 7.4.2010, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Вместо RichChat->Lines->Add(tmTmp); используй вставку текста через RichChat->SelText=... (перед этим надо сделать RichChat->SelStart=RichChat->Text.Length(); RichChat->SelLength=0;) остальное, как у тебя
NB. Вместо вычисления RichChat->Text.Length() каждый раз лучше хранить длинну текста в переменной и обновлять ее при добавлении текста, иначе для больших текстов в RichEdit'е будут тормоза.

PM MAIL   Вверх
WapCel
Дата 7.4.2010, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Очень много кода  smile 
А так все ок  smile  smile  smile  smile 
xvr, вы так имели ввиду сделать?

Код

if (tmUser == EditNickname->Text)
{
RichChat->SelStart=RichChat->Text.Length();
RichChat->SelLength = 0;
RichChat->SelAttributes->Color = clGray;
RichChat->SelAttributes->Style = RichChat->SelAttributes->Style << fsBold;
RichChat->SelText = tmUser+": ";
RichChat->SelAttributes->Color = clBlack;
RichChat->SelAttributes->Style = RichChat->SelAttributes->Style.Clear();
RichChat->SelText = tmValue;
}
else
{
RichChat->SelStart=RichChat->Text.Length();
RichChat->SelLength = 0;
RichChat->SelAttributes->Color = clBlue;
RichChat->SelAttributes->Style = RichoChat->SelAttributes->Style << fsBold;
RichChat->SelText = tmUser+": ";
RichChat->SelAttributes->Color = clBlack;
RichChat->SelAttributes->Style = RichChat->SelAttributes->Style.Clear();
RichChat->SelText = tmValue;
}
MemoChat->Lines->Add("");

MemoChat->Perform(EM_SCROLLCARET, 0, 0);
}

PM MAIL WWW ICQ   Вверх
WapCel
Дата 7.4.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Screenshot

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  Untitled_1.gif 134,70 Kb
PM MAIL WWW ICQ   Вверх
xvr
Дата 7.4.2010, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(WapCel @  7.4.2010,  13:09 Найти цитируемый пост)
xvr, вы так имели ввиду сделать?
Да, как то так
Цитата

Очень много кода
Обвернуть в процедуры

PM MAIL   Вверх
WapCel
Дата 7.4.2010, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Обвернуть в процедуры

Как?..  smile 
PM MAIL WWW ICQ   Вверх
xvr
Дата 7.4.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(WapCel @  7.4.2010,  16:39 Найти цитируемый пост)
Как?..

Код

void <YouForm>::draw(AnsiString text, TColor color, bool is_bold=true)
{
 RichChat->SelStart=RichChat->Text.Length();
 RichChat->SelLength = 0;
 RichChat->SelAttributes->Color = color;
 if (is_bold) RichChat->SelAttributes->Style = RichChat->SelAttributes->Style << fsBold;
 RichChat->SelText = text;
 RichChat->SelAttributes->Color = clBlack;
 RichChat->SelAttributes->Style = RichChat->SelAttributes->Style.Clear();
 RichChat->SelStart=RichChat->Text.Length();
 RichChat->SelLength = 0;
}

...

draw(tmUser+": ",tmUser == EditNickname->Text?clGray:clBlue);
RichChat->SelText = tmValue+"\r\n";
MemoChat->Perform(EM_SCROLLCARET, 0, 0);

...


PM MAIL   Вверх
WapCel
  Дата 7.4.2010, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



xvr, Все понял спасибо за сделаю под свою прог smile у  smile   smile  smile  smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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