[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Наш сайт » Visual basic » Очистить буфер отмены. Отменить последнее действие. (Очистить буфер отмены. Отменить последнее действие.)
Очистить буфер отмены. Отменить последнее действие.
ilimДата: Среда, 09.11.2011, 22:36 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 680
Награды: 17
Репутация: 4
Статус: Offline
Очистить буфер отмены. Отменить последнее действие. Позволить вводить в ТекстБокс только определенные символы

'Необходимо добавить в модуль:

Public Const EM_EMPTYUNDOBUFFER = &HCD
Public Const EM_CANUNDO = &HC6
Public Const EM_GETMODIFY = &HB8
Public Const EM_SETMODIFY = &HB9
Public Const EM_UNDO = &HC7
Public Const GWL_STYLE = (-16)
Public Const ES_NUMBER = &H2000
Public Const ES_UPPERCASE = &H8&
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'Установить: изменился текст или нет

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

'Запрос: можно отменить последнее действие?
SendMessage(Text1.hwnd, EM_CANUNDO, 0, 0)

'Очистить буфер отмены
Call SendMessage(Text1.hwnd, EM_EMPTYUNDOBUFFER, 0, 0)
Call SendMessage(Text1.hwnd, EM_SETMODIFY, False, 0)

'Отменить последнее действие
If SendMessage(Text1.hwnd, EM_CANUNDO, 0, 0) <> 0 Then SendMessage Text1.hwnd, EM_UNDO, 0, 0

'Позволить вводить в ТекстБокс только определенные символы
Dim l As Long, 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) 'буквы в н. регистре


www.ilim.kz
 
Форум » Наш сайт » Visual basic » Очистить буфер отмены. Отменить последнее действие. (Очистить буфер отмены. Отменить последнее действие.)
Страница 1 из 11
Поиск: