Страница: 1 |
Страница: 1 |
Вопрос: RichTextBox
Добавлено: 04.05.05 20:10
Автор вопроса: mr_Frank | Web-сайт:
Я уже наверное всех достал с этим RichTextBox`ом. )))
Вопрос такой:
у меня есть текст с n-ым количеством букв. этот текст разделён n-ое кол0во цветов(т.е. текст в разных цветах), мне нужно любым образом получить с какой буквы (по счёту)начинается первый цвет, какой кончается(тоже по счёту) и так повторить n-ое кол-во раз, а потом после проделаных мною операций, поставить все цвета на место как и было.
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #1
Добавлено: 04.05.05 20:52
ты рассмотри структуру RTF документа а потом оперируй с цветами.
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 05.05.05 11:08
Если знаешь API, то вот тебе, разбирайся:
http://basicproduction.nm.ru/bparpad2.rar
Номер ответа: 3
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #3
Добавлено: 05.05.05 13:56
У меня тоже вопрос по RichTextBox.
Как можно сделать нумерацию каждой строки?
Номер ответа: 4
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #4
Добавлено: 05.05.05 14:02
Ну как в HTML редакторах
Номер ответа: 5
Автор ответа:
mr_Frank
ICQ: 316417
Вопросов: 36
Ответов: 94
Web-сайт:
Профиль | | #5
Добавлено: 05.05.05 17:27
progos:
http://vbstreets.ru/VB/Sources/65984.aspx
короче искходники шароварного HTML едитора которй стоит 250 рублей(http://www.bitshape.com/iedit.html?lang=ru)
Номер ответа: 6
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #6
Добавлено: 06.05.05 09:25
Спасибо, прикольный примерчик
Номер ответа: 7
Автор ответа:
mr_Frank
ICQ: 316417
Вопросов: 36
Ответов: 94
Web-сайт:
Профиль | | #7
Добавлено: 06.05.05 15:11
незачто
Номер ответа: 8
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #8
Добавлено: 06.05.05 17:09
Пример-то прикольный, но там используется контрол без исходников, а мне надо знать, как это можно сделать
Номер ответа: 9
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #9
Добавлено: 06.05.05 17:58
Если я правильно тебя понял
Option Explicit
 im OldRTF As String
Private Sub Command1_Click()
 im i As Long
 im Start As Long
 im CurrentColor As Long
List1.Clear
For i = 0 To Len(rtb.Text) - 1
rtb.SelStart = i
rtb.SelLength = 1
If i = 0 Then
Start = 1
CurrentColor = rtb.SelColor
ElseIf (CurrentColor <> rtb.SelColor And Asc(rtb.SelText) <> 32) Or i = Len(rtb.Text) - 1 Then
If i = Len(rtb.Text) - 1 Then
List1.AddItem Start & " " & i + 1
Else
List1.AddItem Start & " " & i - 1
End If
Start = i + 1
CurrentColor = rtb.SelColor
End If
Next i
End Sub
Private Sub Form_Load()
'это так, для наглядности
rtb.TextRTF = "{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset204{\*\fname Times New Roman;}Times New Roman CYR;}}{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;\red0\green128\blue0;}\viewkind4\uc1\pard\cf1\lang1049\f0\fs28\'ea\'f0\'e0\'f1\'ed\'fb\'e9\cf0\fs29 \cf2\fs28\'f1\'e8\'ed\'e8\'e9\cf0\fs29 \cf3\fs28\'e7\'e5\'eb\'e5\'ed\'fb\'e9\par }"
OldRTF = rtb.TextRTF
End Sub
'вернуть в исходное соcтояние - rtb.TextRTF = OldRTF
Номер ответа: 10
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #10
Добавлено: 06.05.05 21:32
ухты, классный пример!..
Номер ответа: 11
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #11
Добавлено: 07.05.05 06:02
У меня возник еще один вопрос - как можно сделать прокрутку в richtextbox, ну, типа, как в listbox'е TopIndex(мне надо и получать первую строку и устанавливать,
Номер ответа: 12
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #12
Добавлено: 07.05.05 07:25
2Progos, посмотри этот код, может что и пригодится для решения твоей задачи
Option Explicit
Private Const EM_LINESCROLL = &HB6
Private Const EM_GETRECT = &HB2
Private Const WM_GETFONT = &H31
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETFIRSTVISIBLELINE = &HCE
Private Type RECT
left As Long
top As Long
right As Long
bottom As Long
End Type
Private Type TEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
End Type
Private Declare Function SendMessageBynum Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" (ByVal hDC As Long, lpMetrics As TEXTMETRIC) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Sub Command1_Click()
 im rc As RECT
 im hDC As Long
 im lfont As Long
 im oldfont As Long
 im di As Long
 im tm As TEXTMETRIC
 im lc As Long
 im dl As Long
 im FirstVisible As Long
 im LastVisible As Long
'так можно получить индекс первой видимой строки
FirstVisible = SendMessage(Text1.hwnd, EM_GETFIRSTVISIBLELINE, 0, 0)
'так, индекс последней видимой строки
lc = SendMessage(Text1.hwnd, EM_GETRECT, 0, rc)
lfont = SendMessage(Text1.hwnd, WM_GETFONT, 0, 0)
hDC = GetDC(Text1.hwnd)
If lfont <> 0 Then oldfont = SelectObject(hDC, lfont)
di = GetTextMetrics(hDC, tm)
If lfont <> 0 Then lfont = SelectObject(hDC, oldfont)
LastVisible = ((rc.bottom - rc.top) / tm.tmHeight) - FirstVisible
'так можно "прокрутить" текст
SendMessageBynum Text1.hwnd, EM_LINESCROLL, 0, -1
'lParam - количество строк для прокрутки по вертикали
'(положительное для прокрутки вверх, отрицательное для прокрутки вниз)
End Sub
Номер ответа: 13
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #13
Добавлено: 07.05.05 08:21
БОЛЬШОЕ СПАСИБО!
Помогло