Показывает, когда TextBox отобразил последнюю строку
'Если нужно показать кнопку, когда пользователь прокрутит 'TextBox до конца, (напр. пользователь должен прочесть договор, и только когда 'прочтет, то отобразить кнопку "Согласен")
Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function SendMessageAny Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Sub Command1_Click() Unload Me End Sub
Private Sub Form_Load() Text1.Text = "Ready-To-Run Visual Basic Algorithms, Second Edition" & _ vbCrLf & vbCrLf & "Extend your applications with powerful algorithms written in Visual Basic. Sorting, searching, trees, hashing, advanced recursion, network algorithms, object-oriented programming, and much more. Visual Basic Algorithms updated and expanded for Visual Basic 5." & _ vbCrLf & vbCrLf & "http://www.vb-helper.com/vba.htm" & _ vbCrLf & "----------" & _ vbCrLf & "Bug Proofing Visual Basic" & _ vbCrLf & vbCrLf & "Every program more than 10 lines long contains at least one bug. Learn how to prevent, detect, and eradicate bugs in your programs." & _ vbCrLf & vbCrLf & "http://www.vb-helper.com/err.htm" End Sub
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim pos As Long
' Get the position of the bottom of the control. X = CLng(ScaleX(X, ScaleMode, vbPixels)) Y = CLng(ScaleY(Y, ScaleMode, vbPixels))
' Get the character number pos = SendMessageLong(Text1.hWnd, EM_CHARFROMPOS, _ 0&, X + Y * &H10000) And &HFFFF&
Debug.Print X; Y; pos; Len(Text1.Text) '@ If pos >= Len(Text1.Text) Then Command1.Enabled = True End If End Sub
' See if the last line is visible. Private Sub Timer1_Timer() Static done_before As Boolean Static X As Long Static Y As Long
Dim r As RECT Dim pos As Long
' Get text box's client rectangle size. If Not done_before Then SendMessageAny Text1.hWnd, EM_GETRECT, 0&, r X = r.Right - 1 Y = r.Bottom - 1 done_before = True End If
' Get the character number pos = SendMessageLong(Text1.hWnd, _ EM_CHARFROMPOS, 0&, X + Y * &H10000) _ And &HFFFF&
If pos >= Len(Text1.Text) Then Command1.Enabled = True Timer1.Enabled = False End If End Sub
Если Вас заинтересовала или понравилась информация программирование на Visual Basic - "Показывает, когда TextBox отобразил последнюю строку", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!