Запрос: можно отменить последнее действие?
SendMessage(Text1.hwnd, EM_CANUNDO, 0, 0)
Запрос: изменился ли текст?
SendMessage(Text1.hwnd, EM_GETMODIFY, 0, 0)
Установить: изменился текст или нет
Dim DirtyFlag As Long
DirtyFlag = SendMessage(Text1.hWnd, EM_GETMODIFY, ByVal 0&, ByVal 0&)
If DirtyFlag = 1 Then
MsgBox "Содержимое Text Box изменилось"
Else
MsgBox "Содержимое Text Box не изменилось"
End If
End Sub
Отменить последнее действие
If SendMessage(Text1.hwnd, EM_CANUNDO, 0, 0) <> 0 Then SendMessage(Text1.hwnd,
EM_UNDO, 0, 0)
Позволить вводить в ТекстБокс только
определенные символы
Dim l As Long, Dim r As Long
l = GetWindowLong(Text1.hwnd, GWL_STYLE)
r = SetWindowLong(Text1.hwnd, GWL_STYLE, l Or ES_NUMBER) 'только цифры
l = GetWindowLong(Text1.hwnd, GWL_STYLE)
r = SetWindowLong(Text1.hwnd, GWL_STYLE, l Or ES_UPPERCASE) 'буквы в верхнем
регистре и цифры
l = GetWindowLong(Text1.hwnd, GWL_STYLE)
r = SetWindowLong(Text1.hwnd, GWL_STYLE, l Or ES_LOWERCASE) 'буквы в нижнем
регистре и цифры
Очистить буфер отмены
Call SendMessage(Text1.hwnd, EM_EMPTYUNDOBUFFER, 0, 0)
Call SendMessage(Text1.hwnd, EM_SETMODIFY, False, 0)
Перебор контролов на предмет изменения их содержимого
Public Sub SaveData()
Dim itextBoxCount As Integer
For itextBoxCount = 0 To Controls.Count - 1
If TypeOf Controls(itextBoxCount) Is TextBox Then
If Changed(Controls(itextBoxCount)) Then
'Place code to save data here
End If
End If
Next
End Sub
Public Function Changed(ByVal ctlTextBox As TextBox) As Boolean
Changed = SendMessage(ctlTextBox.hwnd, EM_GETMODIFY, 0, 0) <> 0
End Function