Тема вроде была избитая, но...

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

Тема вроде была избитая, но...

Сообщение NJ » 25.03.2003 (Вт) 8:49

Здравствуйте, чёрт возьми... Вот и я попался на эту удочку (в "более раннем" форуме кажись что-то было на эту тему - но канул он в лету...). Вопрос: что за бл("poison" англ.)ство, извиняюсь? Какого, спрашивается, хэ?
А дело вот в чём: берём RichTextBox, программно (через его .Text т.е. text=text & str) добавляем ему строчку, выделяем её, ставим всякие проперти, которые на Sel начинаются, допустим цвет (.SelColor) - красота! Второй раз - тоже всё получается - две строчки разными цветами, всё чики-пуки... Блин! А почему он после третьего (и т.д.) раза все ранее написаные строчки красит в цвет первой строки?!

Вот пример кода, коли не верите:

Код: Выделить всё
Private Sub Command1_Click()
RichTextBox1.BackColor = vbBlack
addTextToRTB "Line 1", vbRed
MsgBox "Line 1 must be red."
addTextToRTB "Line 2", vbGreen
MsgBox "Line 1 must be red and line 2 must be green."
addTextToRTB "Line 3", vbBlue
MsgBox "Line 1 must be red, line 2 must be green and line 3 must be blue."
End Sub

Private Sub addTextToRTB(addLine As String, txtColor As Long)

RichTextBox1.Text = RichTextBox1.Text & addLine & vbNewLine
RichTextBox1.SelStart = Len(RichTextBox1.Text) - Len(addLine & vbNewLine)
RichTextBox1.SelLength = Len(addLine & vbNewLine) 'Этого можно было-бы и не писать, но...
RichTextBox1.SelColor = txtColor
RichTextBox1.SelStart = Len(RichTextBox1.Text)
End Sub


Мысли роятся, конечно (куда-ж без них-то :roll: )... Возможно это как-то связано с тем, что я полностью обновляю весь текст в боксе, даже скорее всего так оно и есть, но как от этого уйти? Руками писать в какой-нибудь TEMP.RTF на диск, а потом читать в бокс - я еп всё так развлекаться... А у вас какие-нибудь есть идеи?
-=*=-
Трудно быть хорошим.

TimeKeeper
Постоялец
Постоялец
 
Сообщения: 437
Зарегистрирован: 11.10.2002 (Пт) 4:47
Откуда: Russia

Сообщение TimeKeeper » 25.03.2003 (Вт) 9:16

У меня есть идея: использовать TextRTF вместо Text.

Сейчас попробывать не могу

NJ
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 10.12.2001 (Пн) 9:02
Откуда: Russia, Tomsk

Сообщение NJ » 25.03.2003 (Вт) 9:21

TimeKeeper писал(а):У меня есть идея: использовать TextRTF вместо Text.

Сейчас попробывать не могу


Те же яйца. Тот-же TEMP.RTF ИМХО...
-=*=-
Трудно быть хорошим.

TimeKeeper
Постоялец
Постоялец
 
Сообщения: 437
Зарегистрирован: 11.10.2002 (Пт) 4:47
Откуда: Russia

Сообщение TimeKeeper » 25.03.2003 (Вт) 9:25

Через пол часа у меня будут возможность опробывать твой пример.

TimeKeeper
Постоялец
Постоялец
 
Сообщения: 437
Зарегистрирован: 11.10.2002 (Пт) 4:47
Откуда: Russia

Сообщение TimeKeeper » 25.03.2003 (Вт) 10:37

Ни хрена не получается! Какая-то фигня, я думаю, с RTF.

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 25.03.2003 (Вт) 19:28

Private Sub addTextToRTB(addLine As String, txtColor As Long)
With RTB
.SelStart = Len(RTB.Text)
.SelColor = txtColor
.SelText = addLine
End With
End Sub
Изображение

TimeKeeper
Постоялец
Постоялец
 
Сообщения: 437
Зарегистрирован: 11.10.2002 (Пт) 4:47
Откуда: Russia

Сообщение TimeKeeper » 26.03.2003 (Ср) 6:15

А вот это работает :)

Как говорится, все гениальное - просто :wink:

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

Сообщение alibek » 26.03.2003 (Ср) 9:34

sanches, я бы только написал бы .SelText = addLine & VbNewLine :)
Lasciate ogni speranza, voi ch'entrate.

sanches
El compañero
El compañero
 
Сообщения: 823
Зарегистрирован: 09.01.2003 (Чт) 3:58
Откуда: Р_О_С_С_И_Я ! (Питер)

Сообщение sanches » 26.03.2003 (Ср) 19:11

ну забыл я, что тута AddLine а не AddText...но это ладно, у меня другой вопрос возник.....Объясните мне ламеру :lol:, за каким фигом понадобилось Мелгомягким заводить две ОДИНАКОВЫЕ константы vbCrLf и vbNewLine?Я идиот! Убейте меня, кто-нибудь!? Ведь по смыслу то они одинаковые :?:
Изображение

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 26.03.2003 (Ср) 20:47

vbNewLine должна быть платформозависимая. По крайней мере так написано. Т.е. где-то, не знаю где, она может быть не равна vbCrLf.

NJ
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 10.12.2001 (Пн) 9:02
Откуда: Russia, Tomsk

Сообщение NJ » 27.03.2003 (Чт) 5:55

Хм... Всё так просто. Спасибо! :o
-=*=-
Трудно быть хорошим.

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 27.03.2003 (Чт) 7:40

как-никак а vbcrlf - этож просто символ перевода строка на новую сторку, и должен везде (и при всех условиях :lol: ) работать ...
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 27.03.2003 (Чт) 13:45

Firestorm писал(а):как-никак а vbcrlf - этож просто символ перевода строка на новую сторку, и должен везде (и при всех условиях :lol: ) работать ...


vbCrLf ::= vbCr & vbLf ::= Chr$(13) & Chr$(10)

, т.е., как видим, это не символ, а набор символов.
13 - перевод каретки в начало строки, 10 - переход на новую строку.

Под DOC достаточно было перевода каретки (13), под другими системами (кажется под UNIX) - перехода на новую строку (10). Посмотри тексты сформатированные не под Windows. Потому, во избежание проблем, рекомендуют пользоваться константой vbNewLine, которая содержит правильный набор символов. Хотя я по привычке пользую vbCrLf и пока всё живёт.


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

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

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

    TopList