.
17-04-2007 15:41
к комментариям - к полной версии
- понравилось!
Определение положения курсора на усовершенствованом текстовом поле (rtf)
На форме создаем: RTB - rtfText, SB - статус строка, в ней 2 или более ячеек (в примере используются первые две
для отображения текущей/максимальной строки и текущей/максимальной колонки
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 Col As Integer, Row As Integer ‘ текущая колонка и
строка
Private mCol As Integer, mRow As Integer ‘ максимальная
колонка и строка
‘процедуры реагирования на мышь
Private Sub RTB_Click()
Call ChangeStatus
End Sub
‘ и на клавиатуру
Private Sub RTB_KeyUp(KeyCode As Integer, Shift As Integer)
Call ChangeStatus
End Sub
Private Sub ChangeStatus()
Dim i As Integer, iChar As Integer, cChar As Integer
Dim str1 As String
mRow = (SendMessage(RTB.hwnd, &HBA, 0, 0&)) 'всего строк
Row = 1 + SendMessage(RTB.hwnd, &HC9, (RTB.SelStart), 0&) 'текущая строка
'Row = RTB.GetLineFromChar(RTB.SelStart) ' вариант без использования API
mCol = SendMessage(RTB.hwnd, &HC1, (RTB.SelStart), 0&) + 1 'всего колонок
Col = RTB.SelStart - SendMessage(RTB.hwnd, &HBB, (Row - 1), 0&) + 1 ' текущая
'-----------------------
SB.Panels(1).Text = "Row: " & CStr(Row) & "/" & CStr(mRow)
SB.Panels(2).Text = "Col: " & CStr(Col) & "/" & CStr(mCol)
End Sub
вверх^
к полной версии
понравилось!
в evernote