Страница: 1 |
Вопрос: TextEdit (Unicode usercontrol)
Добавлено: 04.04.10 03:00
Автор вопроса: Winand | Web-сайт: winandfx.narod.ru
Перевел textedit из класса в ряды юзерконтролов, ибо это удобнее намного
http://narod.ru/disk/19371879000/textedit.zip.html
Свойств, редактируемых в дезигн-тайм нет, потому что их добавление - муторно и лениво. Неплохо было бы, если кто-то потестит. Пару раз ide падало, но не совсем понятно из-за контрола или нет
Ответить
Номер ответа: 1Автор ответа: AWP
ICQ: 345685652 Вопросов: 96Ответов: 1212
Web-сайт: xawp.narod.ru Профиль | | #1
Добавлено: 04.04.10 16:23
сразу выдает
Public Property Get text() As String
If Not RuntimeMode Then Exit Sub
Dim textlen As Long , copied As Long
If multilined Then
Dim lineCount As Long , firstchar As Long , i As Long
lineCount = SendMessage(editwnd, EM_GETLINECOUNT, 0, 0&)
ReDim res(lineCount - 1) As String
For i = 0 To lineCount - 1
firstchar = SendMessage(editwnd, EM_LINEINDEX, i, ByVal 0)
If b(textlen, SendMessage(editwnd, EM_LINELENGTH, firstchar, ByVal 0)) Then
ReDim buf(textlen * 2) As Byte
lngToArr buf, textlen, 0
copied = SendMessage(editwnd, EM_GETLINE, i, buf(0))
res(i) = MidB(buf, 1, copied * 2)
End If
Next i
text = Join$(res, vbNewLine)
Else
If b(textlen, length) Then
ReDim buf(textlen * 2) As Byte
lngToArr buf, textlen, 0
copied = SendMessage(editwnd, EM_GETLINE, 0, buf(0))
text = MidB(buf, 1, copied * 2)
End If
End If
End Property
на строке: b(textlen, SendMessage(editwnd, EM_LINELENGTH, firstchar, ByVal 0))
Функция не задана.
заметил, что CopyMemory не декларирована.
Ответить
Номер ответа: 2Автор ответа: Winand
Вопросов: 87Ответов: 2795
Web-сайт: winandfx.narod.ru Профиль | | #2
Добавлено: 04.04.10 18:40
фач. Опять я))Option Explicit
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As Any, lpSource As Any, ByVal cBytes&)
Public Function b(p1 As Long , p2 As Long ) As Boolean
p1 = p2
b = CBool (p1)
End Function
Public Sub lngToArr(ByRef arrTo() As Byte , ByRef lng As Long , ByRef pos As Long )
CopyMemory arrTo(pos), ByVal VarPtr(lng), 4
pos = pos + 4
End Sub
Public Function cColor(ByVal clr As Long , Optional hPal As Long = 0) As Long
If Bits(clr, &H80000000) Then
If OleTranslateColor(clr, hPal, cColor) Then cColor = &HFFFF
Else
cColor = clr
End If
End Function
Ответить
Страница: 1 |
Поиск по форуму