If Changed Then
Buff(3) = Buff(2)
Buff(2) = Buff(1)
Buff(1) = Text1.Text
End If
Отменить?
Как организовать в RTB функцию Undo?
Код:
По нажатию кнопки Undo:
Код:
Text1.Text = Buff(2)
Buff(1) = Buff(2)
Buff(2) = Buff(3)
Buff(1) = Buff(2)
Buff(2) = Buff(3)
Знаю, что безумие, но ты ведь не собираешься обрабатывать мегабайтные тексты? :)
Вот ещё один вариант. Создаём переменну [FONT="Courier New"]Buff[/FONT] и таймер, в событии Text1_Change изменяем интервал таймера эдак на секунду (время, заведомо большее, чем время между нажатиями на клавиши), и по таймеру присваиваем переменной содержимое бокса. По нажатию Undo ясно что делать :) Проблема может быть вот какая: если в таймере, не дождавшись его завершения, сменить интервал, он сбросится и начнёт отсчёт с нового интервала? Если так, то должно работать.
А сочетние клавиш Ctrl+Z посылать непробывал?
Код:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Const EM_UNDO = &HC7
Private Sub Command1_Click()
SendMessage RichTextBox1.hwnd, EM_UNDO, 0&, 0&
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyControl + vbKeyZ Then SendMessage RichTextBox1.hwnd, EM_UNDO, 0&, 0&
End Sub
Private Sub Form_Load()
KeyPreview = True
End Sub
Const EM_UNDO = &HC7
Private Sub Command1_Click()
SendMessage RichTextBox1.hwnd, EM_UNDO, 0&, 0&
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyControl + vbKeyZ Then SendMessage RichTextBox1.hwnd, EM_UNDO, 0&, 0&
End Sub
Private Sub Form_Load()
KeyPreview = True
End Sub
_____________________
Надеюсь, разберется :)
ВуД™, ты гений :) Вот что значит знать и пользовать стандартные библиотеки Винды :)
Валериус да, стандартные библиотеки винды это хорошая штука.:D
А как на счёт кнопки повиорить :)
Цитата:
А как на счёт кнопки повиорить
Кнопки REDO :confused:
Если ты имел виду кнопку REDO о это делается почти также;) :
Код:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Any) As Long
Const EM_REDO = &H454
Private Sub Command1_Click()
SendMessage RichTextBox1.hwnd, EM_REDO, 0&, 0&
End Sub
Const EM_REDO = &H454
Private Sub Command1_Click()
SendMessage RichTextBox1.hwnd, EM_REDO, 0&, 0&
End Sub
А... понял-понял:)
а где вообще посмотреть эти методы типа EM_UNDO и EM_REDO... может там ещё что полезное:)
Смотри в интернети про функцию SendMessage может че и найдешь интересного. :D