форматирование текста в RichTextBox

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

форматирование текста в RichTextBox

Сообщение amer » 11.10.2012 (Чт) 21:09

Добрый день!
Проблема в следующем:
есть процедура, я в нее передаю текст и признак жирный он или нет
но она почему-то странно работает (применяются только первый и последний признаки)
вот процедура:
Код: Выделить всё
Private Sub fT(txt As String, B As Boolean)
    With RTFText4
        .Text = .Text & txt
        n = Len(txt)
        .SelStart = k
        .SelLength = n
        .SelBold = B
        k = Len(.Text)
    End With
End Sub


передаю в процедуру так:
fT "text1", true
fT "text2", false
fT "text3", true
fT "text4", false
...
fT "textn", false

переменная k определена вне процедур
получается следующее:
text1
text2
text3
text4
...

textn
что не так?
спасибо.

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: форматирование текста в RichTextBox

Сообщение ark » 12.10.2012 (Пт) 10:50

k нигде не обнуляется "вне процедур"? А вообще-то непонятно - нафиг она нужна?
Код: Выделить всё
Private Sub fT(txt As String, B As Boolean)
    With RTFText4
        .SelStart = Len(.Text)
        .SelBold = B
        .SelText=txt
    End With
End Sub

amer
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 02.08.2003 (Сб) 19:41
Откуда: Воронеж

Re: форматирование текста в RichTextBox

Сообщение amer » 12.10.2012 (Пт) 11:34

k=0
потом передаю текст1, текст2.... в процедуру
в процедуре происходит конкатенация и k указывает на начало выделяемого текста, а n на длину переданного текста

ark
Бывалый
Бывалый
 
Сообщения: 216
Зарегистрирован: 18.07.2011 (Пн) 0:57

Re: форматирование текста в RichTextBox

Сообщение ark » 13.10.2012 (Сб) 3:47

А поставить бряк на .Text = .Text & txt и посмотреть, что происходит, недосуг? Во первых, это неправильно вообще - считывать и переписывать ВЕСЬ текст ради добавления нескольких знаков. Представь, у тебя на столе (письменном, не рабочем) лежит книжка "Война и мир" (бумажная, не электронная) и ты ради добавления точки в конец текста должен прочитать всё и переписать всё, добавив точку!
Во вторых, в твоём случае, при замене всего текста сохраняется форматирование первого знака, т.е.:
Первое добавление к пустому тексту - нет форматирования->добавлено text1->добавлено форматирование->весь техт жирный
Второе добавление (фактически, это не добавление, а переписывание) текст стирается и печатается text1, text2 ЖИРНЫМ, т.к. первая буква была жирная->форматируется последний блок НЕ ЖИРНЫМ
Третье добавление - опять всё стирается и печатается text1, text2, text3 ЖИРНЫМ, т.к. первая буква была жирная->форматируется последний блок НЕ ЖИРНЫМ
И т.д
Код: Выделить всё
Private Sub Command1_Click()
   Static x As Long, bold As Boolean
   x = x + 1: bold = Not bold
   fT "text_" & x & vbCrLf, bold
End Sub
Понажимай на кнопочку - увидишь. Используй .SelText = txt


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

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

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

    TopList