слово было друим цветом

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 31.07.2006 (Пн) 18:56

Слушайте, у меня другая проблема. Пробовал поиском - ничего не нашёл.
Вобщем имею текст в РТФтекстбоксе.
Подсвечиваю его путём установки выделенного текста и .SelColor=vbBlue.
После этого мне надо добавить туда текст.
Я делаю это так: MyRTF.text=MyRTF.text & string.
Всё форматирование сбрасываецца. Точнее всё становицца синим.
Если использовать не .text, а .textRTF - новый текст не добавляется. Там в .textRTF вообще какие-то теги, а я не хочу с ними разбираться, ибо должен быть какой-то нормальный способ это сделать.
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 31.07.2006 (Пн) 20:58

Надо копировать TextRTF. Он с форматированием.
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 14:31

keks-n писал(а):Надо копировать TextRTF. Он с форматированием.

Ты не дочитал, видимо мой пост.
Q2W писал(а):Я делаю это так: MyRTF.text=MyRTF.text & string.
Всё форматирование сбрасываецца. Точнее всё становицца синим
Я знаю верный путь

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 01.08.2006 (Вт) 14:42

ИМХО потом надо заново менять цвета :?
#define ROFL 0xDDDD

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 14:47

Q2W
А ты не понял...
Код: Выделить всё
RichTextBox1.SelStart = Len(RichTextBox1.TextRTF)
RichTextBox1.SelRTF = RichTextBox2.TextRTF
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 15:39

keks-n писал(а):Q2W
А ты не понял...
Код: Выделить всё
RichTextBox1.SelStart = Len(RichTextBox1.TextRTF)
RichTextBox1.SelRTF = RichTextBox2.TextRTF

Дык для этого нужен второй RTF-контрол, а это не красиво!
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 16:03

Руками генери RTF, если это по твоему некрасиво...
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 16:09

keks-n писал(а):Руками генери RTF, если это по твоему некрасиво...
Дык и это не лучше...
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 16:22

Чем тебя не устраивает ещё один текстбокс, к тому же невидимый?
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 16:28

Тем, что целый RTF-текстбокс только для добавления неформатированного текста в другой RTF-текстбокс без сброса форматирования в этом "другом".
Избыточная функциональность.
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 16:29

А выделить только что вставленный текст и руками поставить дефолтное форматирование религия не позволяет?
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 16:37

keks-n писал(а):А выделить только что вставленный текст и руками поставить дефолтное форматирование религия не позволяет?

Причём здесь религия и только что вставленный текст?
Сразу после того, как я вставил, теряется ВСЁ форматирования RTF-контрола. Т.е. всё, что там было до добавления, стало с дефолтным форматированием!
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 16:39

:shock: Покажи.
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 16:52

keks-n писал(а)::shock: Покажи.

Код: Выделить всё

Private Sub Command1_Click()
    ' Добавлялка текста в RTF-контрол
    RichTextBox1.Text = RichTextBox1.Text & "aaa"
End Sub
Private Sub Command2_Click()
    ' Красим выделенное в синий
    RichTextBox1.SelColor = vbBlue
End Sub

Вот тут в RTF-контроле чё-нить пишем, чё-нить выделяем, нажимаем Command1, чтобы выделенное покрасилось, нажимаем Command2, чтобы добавить текст, видим, что то, что было покрашено, стало опять чёрным.
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 16:57

Гм... Баг.
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 17:02

На самом деле дело в том, что я полностью сбрасываю текст RTF-контрола и вставляю текст без форматирования (.Text - текст без форматирования).
Если вставлять TextRTF=TextRTF & "aaa", то "ааа" не видно, ибо оно вне тегов RTF. Лезть в теги RTF - не выход.
Я знаю верный путь

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 01.08.2006 (Вт) 17:08

Вставляй отдельно:
TextRTF=TextRTF
SelStart=Len(TextRtf)
Seltext="aaa"
Изображение

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 01.08.2006 (Вт) 17:12

Отлично, большое спасибо, сам не додумался :)
Я знаю верный путь

Master
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 27.08.2006 (Вс) 14:26

Сообщение Master » 27.08.2006 (Вс) 14:39

Решил написать клиент IRC чата. Был доволен когда отправил из него сообщение :). А счас решил сделать подсветку. Что б ники др. цветом выдилялись ну и тд ...
Нашел на этом форуме 3 топика посвяшенных вопросам подсветки в RichTextBox е. Все изучив попробовав пару способов столкнулся с проблемами.

Решение 1. Просто при получении нового сообшения выдилять его и давать определенный цвет.
Проблема. Последнее добавленое сообщение светиться правильно а все остальные непрвильно(все одним цветом)

Код: Выделить всё
Sub selTextCol(color as Long)
    Text1.SelStart = ChatLen
    Text1.SelLength = Len(Text1.Text) - ChatLen
    Text1.SelColor = color
    ChatLen = Len(Text1.Text)
End Sub


Решение 2. Получая сообщение добавлять в масив начальную позицию, длинну и цвет. А потом просто обновлять весь TextBox.
Проблема. Когда в TextBox больше 200 строк стает сильно заметно как он дергаеться при обновлении.
Последний раз редактировалось Master 28.08.2006 (Пн) 20:55, всего редактировалось 1 раз.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.08.2006 (Пн) 7:02

По идее в первом варианте у тебя все правильно, может быть что-то не так с переменной ChatLen?
Весь мир матрица, а мы в нем потоки байтов!

Master
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 27.08.2006 (Вс) 14:26

Сообщение Master » 28.08.2006 (Пн) 20:52

!Viper! писал(а):По идее в первом варианте у тебя все правильно, может быть что-то не так с переменной ChatLen?


Исключено! С ней 100% все гуут. Вот я пробовал так

Код: Выделить всё

    Text1.SelStart = cont
    Text1.SelLength = 1
    Text1.SelColor = color
    ChatLen = Len(Text1.Text)
    cont = cont + 2


ТОчно также. Цветной только один символ, все остальное черное.
Последний раз редактировалось Master 30.08.2006 (Ср) 12:30, всего редактировалось 1 раз.
Правописание как Кунг-фу, настоящий мастер никогда не показывает свое умение. :D

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 29.08.2006 (Вт) 7:06

Если все было черным до изменения цвета одного символа, то черным и останется
Весь мир матрица, а мы в нем потоки байтов!

Master
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 27.08.2006 (Вс) 14:26

Сообщение Master » 29.08.2006 (Вт) 13:40

!Viper! писал(а):Если все было черным до изменения цвета одного символа, то черным и останется


Сорри :roll: это просто я неполный кусок кода показал вот:

Код: Выделить всё

Private Sub Timer1_Timer()
    Dim color as Long
    color = RGB (255,0,0)
    Text1.Text = Text1.Text + chr(13) + chr(10) + "Hello!"
    Text1.SelStart = cont
    Text1.SelLength = 1
    Text1.SelColor = color
    ChatLen = Len(Text1.Text)
    cont = cont + 2
End sub


Таймер:
Enabled = true
Interval = 1000
Правописание как Кунг-фу, настоящий мастер никогда не показывает свое умение. :D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2006 (Вт) 13:45

Разумеется.
Потому что речь шла о RichTextBox, а не TextBox.
Lasciate ogni speranza, voi ch'entrate.

Master
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 27.08.2006 (Вс) 14:26

Сообщение Master » 29.08.2006 (Вт) 21:54

alibek писал(а):Разумеется.
Потому что речь шла о RichTextBox, а не TextBox.


Нет, я говорю именно про RichTextBox. Помойму у TextBox вообще нет SelColor.
Правописание как Кунг-фу, настоящий мастер никогда не показывает свое умение. :D

blinow
Обычный пользователь
Обычный пользователь
 
Сообщения: 53
Зарегистрирован: 27.06.2005 (Пн) 3:13

Сообщение blinow » 30.08.2006 (Ср) 2:51

Мама дорогая, (не мамкай), Хакер мне нуно сделать проект по станции переливания крови, ну ни как не пойу чо делать, накатай а :twisted:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.08.2006 (Ср) 7:26

Master писал(а):Нет, я говорю именно про RichTextBox.

В таком случае перечитай топик. Например, ответ keks-n.
Lasciate ogni speranza, voi ch'entrate.

Master
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 27.08.2006 (Вс) 14:26

Сообщение Master » 30.08.2006 (Ср) 11:52

alibek писал(а):В таком случае перечитай топик. Например, ответ keks-n.


Перечетале еще пару раз топик все заработало! Спасибо! Вот что вышло:
Код: Выделить всё
Sub PrintText(TextS As String, color As Long)
Text2.Text = TextS
Text2.SelStart = 0
Text2.SelLength = Len(Text2.Text)
Text2.SelColor = color
Text1.SelStart = Len(Text1.TextRTF)
Text1.SelRTF = Text2.TextRTF
End Sub
Правописание как Кунг-фу, настоящий мастер никогда не показывает свое умение. :D

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList  
cron