Подсветка текста в ричедите

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

Подсветка текста в ричедите

Сообщение NaFanya » 04.08.2004 (Ср) 17:13

Люди, подскажите, как мне сделать быструю подсветку в ричтексте. Обычным способом (выделяем и красим) 200 Кб HTML красятся за 20 секунд (Пень 200, 32 Мб). Может, есть более быстрый способ? Или надо Це++ изучать?

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 04.08.2004 (Ср) 17:20


NaFanya
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2004 (Ср) 17:08

Сообщение NaFanya » 04.08.2004 (Ср) 18:04

Этот способ я пробовал. Скорость на Пне 200 медленнааааааяяяя... Может, что побыстрее есть?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 04.08.2004 (Ср) 18:51

быстрее будет, если работать прямо с rtf-текстом, но все равно медленно, если рассчитывать на реально большие файлы.

надо как-то умудриться раскрашивать только то, что видно в окошке RTB...
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 04.08.2004 (Ср) 21:27

А ты как раскрашиваешь? Через методы RichTextBox'а?
Попробуй через API.
Выделяешь нужный текст через тип CHARRANGE,
затем задаёшь маску и цвет через тип CHARFORMAT,
Что то типа
DIM Формат AS CHARFORMAT
Формат.cbSize=LEN(CHARFORMAT)
Формат.dwMask=CFM_COLOR
Формат.dwEffects=0
Формат.crTextColor=QBCOLOR(1)
Ну и потом посылаешь сообщение
Const EM_SETCHARFORMAT As Long = (WM_USER + 68)
Const SCF_SELECTION As Long = &H1
SendMessage hWndRichEdit, EM_SETCHARFORMAT, SCF_SELECTION, Формат

Вдруг быстрее будет ;)

NaFanya
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2004 (Ср) 17:08

Сообщение NaFanya » 05.08.2004 (Чт) 9:43

Что-то не понял, объясни, как через тип CHARRANGE находить текст. Подробнее. Статус, что ли, мой не видишь? "Начинающий" :)
НаФаня. Уфа, 2004г. н.э.

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 05.08.2004 (Чт) 10:28

А почему не использовать готовый котрол. Например CodeMax. Там есть и раскраска текста и ещё куча всего...

Шурик
Самогонщик
Самогонщик
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 30.06.2003 (Пн) 13:27
Откуда: из запоя :))))) Матных сообщений: 972

Сообщение Шурик » 05.08.2004 (Чт) 11:02

На форму добавь RTB и кнопку:
Код: Выделить всё
Private Sub Command1_Click()
Dim lWhere, lPos As Long
Dim sTmp, sSearch As String
lPos = 1
'Здесь вы можете указать слово для поиска и замены
sSearch = "FAQ"
'поиск по всему тексту
Do While lPos < Len(Me.RichTextBox1.Text)
sTmp = Mid(Me.RichTextBox1.Text, lPos, Len(Me.RichTextBox1.Text))
lWhere = InStr(sTmp, sSearch)
lPos = lPos + lWhere
If lWhere Then 'если строка для поиска найдена
Me.RichTextBox1.SelStart = lPos - 2 'установить начало выделения
Me.RichTextBox1.SelLength = Len(sSearch) 'установить длину выделения
Me.RichTextBox1.SelColor = RGB(255, 0, 0) 'изменить цвет выделения красным цветом
Else
Exit Do
End If
Loop
End Sub

Private Sub Form_Load()
'установите ссылку на любой файл в формате rtf или txt
RichTextBox1.FileName = "C:\Мои документы\courier.txt"
End Sub

так тоже медленно???
Правда сам не проверял :oops:
А вообще Sirik прав... есть для этого готовые контролы....!!!

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 05.08.2004 (Чт) 11:32

Еще можно изучить готовые решения, которые лежат, между прочим, тут же на VBStreets
http://www.vbstreets.ru/VB/Sources/65984.aspx
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

NaFanya
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2004 (Ср) 17:08

Сообщение NaFanya » 05.08.2004 (Чт) 11:54

Какие контролы, например?Может, дадите ссылки. А Кодмакс много весит и небесплатный. Мне бы до 200 Кб размером.
НаФаня. Уфа, 2004г. н.э.


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 28

    TopList  
cron