Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Верхний и нижний индексы в RichTextBox Добавлено: 18.08.08 22:09  

Автор вопроса:  Яр
Всем привет!
Помогите еше, пожалуйста. знатоки.
Можно ли в RichTextBox вывести верхний или нижний символы (типа икса в квадрате) без редактора формул? Еслм можно, то как?
Всем большущее спасибо.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #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-сайт: houselab.narod.ru
 Профиль | | #3
Добавлено: 19.08.08 18:59
Конкретный пример:
кинь на форму RichTextBox, кнопку и вставь этот код
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
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-сайт: houselab.narod.ru
 Профиль | | #4
Добавлено: 19.08.08 19:03
А вот ещё забыл
Private Const vbcNull               As Long = &H0


Ну это так, на всякий случай :)

Ответить

Номер ответа: 5
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #5
Добавлено: 19.08.08 19:43
А не проще ли распарсить RTF и добавить тег "\super" ?

Ответить

Номер ответа: 6
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #6
Добавлено: 19.08.08 20:05
ИМХО нет (не проще)

Ответить

Номер ответа: 7
Автор ответа:
 Яр



Вопросов: 18
Ответов: 24
 Профиль | | #7 Добавлено: 19.08.08 21:36
Большое спасибо!!!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам