Страница: 1 |
Страница: 1 |
Вопрос: Верхний и нижний индексы в RichTextBox
Добавлено: 18.08.08 22:09
Автор вопроса: Яр
Всем привет!
Помогите еше, пожалуйста. знатоки.
Можно ли в RichTextBox вывести верхний или нижний символы (типа икса в квадрате) без редактора формул? Еслм можно, то как?
Всем большущее спасибо.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #1
Добавлено: 18.08.08 23:10
http://www.vbnet.ru/samples/download.aspx?id=480
в свойствах ищи FontSuperScript.
Номер ответа: 2
Автор ответа:
Яр
Вопросов: 18
Ответов: 24
Профиль | | #2
Добавлено: 19.08.08 11:31
Ув. Серёга!
Спасибо за Ваш ответ. Но т.к. я только начинаю осваивать VB, то в скачанных файлах я мало что понял. Если можно, поясните, как это все использовать на конкретном примере.
Спасибо.
Номер ответа: 3
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #3
Добавлено: 19.08.08 18:59
Конкретный пример:
кинь на форму RichTextBox, кнопку и вставь этот код
Private Const WM_USER As Long = &H400
Private Const EM_GETCHARFORMAT As Long = (WM_USER + 58)
Private Const EM_SETCHARFORMAT As Long = (WM_USER + 68)
Private Enum gbChFrmt2Effects
rhCFE_SUBSCRIPT = &H10000
rhCFE_SUPERSCRIPT = &H20000
End Enum
Private Enum gbChFrmtSt
rhSCF_DEFAULT = &H0
rhSCF_SELECTION = &H1
rhSCF_WORD = &H2
End Enum
Private Type CHARFORMAT2
cbSize As Integer
wPad1 As Integer
dwMask As Long
dwEffects As Long
yHeight As Long
yOffset As Long
crTextColor As Long
bCharSet As Byte
bPitchAndFamily As Byte
szFaceName(31) As Byte ' 32 bytes (0 base)
wPad2 As Integer
wWeight As Integer
sSpacing As Integer
crBackColor As Long
lLCID As Long
dwReserved As Long
sStyle As Integer
wKerning As Integer
bUnderlineType As Byte
bAnimation As Byte
bRevAuthor As Byte
bReserved1 As Byte
End Type
Private Sub Command1_Click()
SetFontSuperScript rhSCF_SELECTION, Not GetFontSuperScript(rhSCF_SELECTION)
End Sub
Private Sub prtSetFormat(ByRef inValue As CHARFORMAT2, _
Optional ByVal fOpt As gbChFrmtSt = rhSCF_SELECTION, _
Optional ByVal dwMskEffects As gbChFrmt2Effects)
inValue.cbSize = Len(inValue)
inValue.dwMask = inValue.dwMask Or dwMskOther Or dwMskEffects
Call SendMessage(RichTextBox1.hwnd, EM_SETCHARFORMAT, fOpt, inValue)
End Sub
Private Function prtGetFormat(Optional ByVal fOpt As gbChFrmtSt = rhSCF_SELECTION, _
Optional ByVal dwMskEffects As gbChFrmt2Effects) As CHARFORMAT2
prtGetFormat.cbSize = Len(prtGetFormat)
prtGetFormat.dwMask = dwMskOther Or dwMskEffects
Call SendMessage(RichTextBox1.hwnd, EM_GETCHARFORMAT, fOpt, prtGetFormat)
End Function
Private Function GetFontSuperScript(ByVal fOpt As gbChFrmtSt) As Boolean
GetFontSuperScript = ((prtGetFormat(fOpt, rhCFE_SUBSCRIPT Or rhCFE_SUPERSCRIPT).dwEffects And (rhCFE_SUBSCRIPT Or rhCFE_SUPERSCRIPT)) = (rhCFE_SUBSCRIPT Or rhCFE_SUPERSCRIPT))
End Function
Private Sub SetFontSuperScript(ByVal fOpt As gbChFrmtSt, ByVal bValue As Boolean)
Dim CF As CHARFORMAT2: CF.dwEffects = IIf(bValue, rhCFE_SUBSCRIPT Or rhCFE_SUPERSCRIPT, vbcNull)
Call prtSetFormat(CF, fOpt, rhCFE_SUBSCRIPT Or rhCFE_SUPERSCRIPT)
End Sub
Я тут просто вырезал несколько кусков из кода sne, ну и упростил малость
Выдели чтонить в боксе и нажми на кнопку.
Номер ответа: 4
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #4
Добавлено: 19.08.08 19:03
А вот ещё забыл
Ну это так, на всякий случай
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 19.08.08 19:43
А не проще ли распарсить RTF и добавить тег "\super" ?
Номер ответа: 6
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #6
Добавлено: 19.08.08 20:05
ИМХО нет (не проще)
Номер ответа: 7
Автор ответа:
Яр
Вопросов: 18
Ответов: 24
Профиль | | #7
Добавлено: 19.08.08 21:36
Большое спасибо!!!