Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отменить?

403
21 августа 2006 года
ace lighting
411 / / 05.05.2006
Как организовать в RTB функцию Undo?
1.8K
21 августа 2006 года
Валериус
190 / / 14.07.2006
Берёшь, создаешь массив [FONT="Courier New"]Buff(1 to 3) [COLOR="Blue"]as String[/COLOR][/FONT], переменную [FONT="Courier New"]Chahged [COLOR="Blue"]as Boolean[/COLOR][/FONT], таймер с интервлом около полсекунды. В событии [FONT="Courier New"]Text1_Change[/FONT] прописываешь [FONT="Courier New"]Changed = [COLOR="Blue"]True[/COLOR][/FONT], а по [FONT="Courier New"]Timer1_Timer[/FONT] пишешь
 
Код:
If Changed Then
Buff(3) = Buff(2)
Buff(2) = Buff(1)
Buff(1) = Text1.Text
End If

По нажатию кнопки Undo:
 
Код:
Text1.Text = Buff(2)
Buff(1) = Buff(2)
Buff(2) = Buff(3)

Знаю, что безумие, но ты ведь не собираешься обрабатывать мегабайтные тексты? :)
1.8K
21 августа 2006 года
Валериус
190 / / 14.07.2006
Вот ещё один вариант. Создаём переменну [FONT="Courier New"]Buff[/FONT] и таймер, в событии Text1_Change изменяем интервал таймера эдак на секунду (время, заведомо большее, чем время между нажатиями на клавиши), и по таймеру присваиваем переменной содержимое бокса. По нажатию Undo ясно что делать :) Проблема может быть вот какая: если в таймере, не дождавшись его завершения, сменить интервал, он сбросится и начнёт отсчёт с нового интервала? Если так, то должно работать.
10K
22 августа 2006 года
Sergei Popov
20 / / 25.06.2005
А сочетние клавиш Ctrl+Z посылать непробывал?
280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
Я делал undo так используя SendMessage, и вот мой
Код:
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

_____________________
Надеюсь, разберется :)
1.8K
22 августа 2006 года
Валериус
190 / / 14.07.2006
ВуД™, ты гений :) Вот что значит знать и пользовать стандартные библиотеки Винды :)
280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
Валериус да, стандартные библиотеки винды это хорошая штука.:D
403
22 августа 2006 года
ace lighting
411 / / 05.05.2006
спасибо за такой полноценный ответ!
А как на счёт кнопки повиорить :)
280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
Цитата:
А как на счёт кнопки повиорить


Кнопки REDO :confused:

280
22 августа 2006 года
ВуД™
326 / / 04.01.2006
ace lighting]

Если ты имел виду кнопку 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
403
22 августа 2006 года
ace lighting
411 / / 05.05.2006
А... понял-понял:)
403
22 августа 2006 года
ace lighting
411 / / 05.05.2006
а где вообще посмотреть эти методы типа EM_UNDO и EM_REDO... может там ещё что полезное:)
280
23 августа 2006 года
ВуД™
326 / / 04.01.2006
[QUOTE=ace lighting]а где вообще посмотреть эти методы типа EM_UNDO и EM_REDO... может там ещё что полезное:)[/QUOTE]
Смотри в интернети про функцию SendMessage может че и найдешь интересного. :D
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог