• Авторизация


. 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


Вы сейчас не можете прокомментировать это сообщение.

Дневник . | _Программирование_ - Дневник _Программирование_ | Лента друзей _Программирование_ / Полная версия Добавить в друзья Страницы: раньше»