Работа с RickTextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Работа с RickTextBox

Сообщение cg_ck » 24.04.2004 (Сб) 18:14

Итак, есть TichTextBox, в котором уже есть какой-то текст. И есть переменная My_String (string), в которой содержится какая-то информация.
Как мне добавить в элемент RichTextBox информацию из этой переменной, так, что бы первые 10-ть символов добавляемого мною были Жырными, красного цвета, остальные зелёными, и шрифта другого размера, например до 10-ого - 8-мь, а после 10-ого 12-ть.(Размер шрифта).
Заранее благодерн.
З.Ы.: Не желатльно использовать методы selstart, sellenght и т.п.


Можно для этого создать второй RichTextBox.

Заранее благодарен.
Ходит по лесу хомяк, хищный маленький дурак...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 24.04.2004 (Сб) 19:46

ИМХО, без SelStart и SelLength никак.
Код: Выделить всё
Sub Form_Load()
Dim My_String$
My_String = "БлаБлаБла-БлаБлаБла!!!"
With RichTextBox1
.TextRTF = My_String
.SelStart = 0
.SelLength = 10
.SelColor = vbRed
.SelBold = True
.SelFontSize = 8
.SelStart = 10
.SelLength = Len(RichTextBox1.Text)
.SelColor = vbGreen
.SelFontSize = 12
.SelStart = 0
.SelLength = 0
End With
End Sub
Нет меня больше

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 20:07

Хех. Так я тоже умею. Но у меня в проэкте это выглядит следующим образом: Текст на мгноение изменяет свои параметры а потом вновь становится как и прежде, таким же серым и не интересным. На самом деле задача каплю другая. Это активное окно, окно чата, которое постоянно обновляется. Тоесть. каждую секунду там появляется по несколько новых строк. Хотелосьбы сделать так, что бы эти строки уже сразу загружадись туда отформатированными. Ну, как если копировать textRTF а не текст и сново его форматировать. ВОт в этом проблемма. Пользователь может держать курсор в определённом месте, а форматированный текст должен поступать туда независимо. Можно так сделать?
Ходит по лесу хомяк, хищный маленький дурак...

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 20:08

И ещё, что бы сразу. Как правильно глобально обявить масив? Что бы так раз и навсегда. Что бы его значения можно было просматриват/редактировать с любого места проэкта?
Ходит по лесу хомяк, хищный маленький дурак...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.04.2004 (Сб) 20:17

В модуле делаешь Public массив:

Код: Выделить всё
Public NewArray(1 To 32767) As Variant

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 20:20

Спасибо, про массив я щас посмотрю, а первый вопрос снимается. Придумал другой способ. Он подошёл и вполне уютно себя чувствует.
Ходит по лесу хомяк, хищный маленький дурак...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.04.2004 (Сб) 20:27

Это очень даже хорошо... Потом расскажешь про другой способ? :)
Было бы интересно услышать :)

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 20:43

Public STR_IN_MEMORY(1 To 5) As String

Compile error:
Constants, fixed-lenghts, strings, arrays, user-defined types and Declare startents not allowed as Public members of object modulse.

Вот такие пироги.
Ходит по лесу хомяк, хищный маленький дурак...

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 20:50

Про другой способ. Я не буду копировать код, я просто объясню пинцип.
Каждая порция информации - Абзац, не больше 255 символов. Ну как-то так.
Есть пееменная: MOUSE_POINT - положение курсора в конце файла до обновения.

Private Sub ТекстПоле_Change()
Собственно теперешнее положение курсора = ТекстПоле.SelStart
ТекстПоле.SelStart = MOUSE_POINT

Тут как нужно обработать, ибо все координаты известны.

ТекстПоле.SelStart = то что было в самом начале
MOUSE_POINT = OutputBox.SelStart

End Sub

Ну, как бы примерно тоже самое, но я так посмотрел, врое работает. А с массивом до сих пор неизвестно.
Ходит по лесу хомяк, хищный маленький дурак...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.04.2004 (Сб) 20:59

А массив ты с коде формы создаёшь? Надо в модуле. Добавь в проект новый модуль и в нём пиши...

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 24.04.2004 (Сб) 21:59

Точно, замечательно. Теперь даже создам модуль для объявления переменных спциальный. Удобно это.
А вот ещё вопрос, я просто что бы сразу. Как отследить в текстовом поле нажатие клавиши вверх. ?
Ходит по лесу хомяк, хищный маленький дурак...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.04.2004 (Вс) 3:25

Код: Выделить всё
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 38 Then MsgBox "Нажата клавиша 'вверх'!"
End Sub


Всё очень просто :)

А чтобы узнать коды друих клавиш, напиши:
Код: Выделить всё
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
    MsgBox KeyCode
End Sub

И понажимай кнопочки :)

cg_ck
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 11.06.2003 (Ср) 12:02
Откуда: Riga(Latvia)

Сообщение cg_ck » 25.04.2004 (Вс) 13:00

Ой, огромное спасибо! Действительно, всё очень просто. Я пытался сдлелать так:
Private Sub Text1_KeyPress(KeyAscii As Integer)
MsgBox KeyAscii
End Sub
И у меня естественно не работало. Сколь я всётаки не совершенен. Ещё раз спасибо.
Ходит по лесу хомяк, хищный маленький дурак...

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

Сообщение alibek » 26.04.2004 (Пн) 9:26

Насчет первого вопроса.
Если сделать так:
Код: Выделить всё
My_String = "БлаБлаБла-БлаБлаБла!!!"
SP = 12
With RichTextBox1
  .SelStart = SP
  .SelLength = 0
  .SelText = My_String
  .SelStart = SP + 0
  .SelLength = 10
  .SelColor = vbRed
  .SelBold = True
  .SelFontSize = 8
  .SelStart = SP + 10
  .SelLength = Len(MyString - SP - 10)
  .SelColor = vbGreen
  .SelFontSize = 12
  .SelStart = 0
  .SelLength = 0
End With

то ничего мерцать не будет
Lasciate ogni speranza, voi ch'entrate.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 7

    TopList