Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Undo and Redo Commands Добавлено: 09.02.05 18:13  

Автор вопроса:  Valera
Народ подскажите как правельно организовать в текстовом редакторе команды "Undo and Redo Commands". Может кто пример даст или ссылку.

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 09.02.05 18:24
Да в точке всё уже давно придумано - МСДН тебе поможет. Ну ежели хочешь свою реализацию, то сюда: http://www.informit.com/articles/article.asp?p=25047&seqNum=4

Ответить

Номер ответа: 2
Автор ответа:
 Valera



Вопросов: 15
Ответов: 43
 Профиль | | #2 Добавлено: 09.02.05 18:50
Что-то вроде этого Я искал спасибо.
Если у кого-нибудь будут еще варианты буду очень благодарен.

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 09.02.05 19:23
Тупо в памяти строить стек действий и хранить для него вершину и размер.

Ответить

Номер ответа: 4
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #4 Добавлено: 09.02.05 20:17
Если кроме самого текста, изменяешь свойства шрифта, тогда после каждого изменения вызывай процедуру SaveChenge. В этом варианте сохраняется 20 “шагов”.

Option Explicit
    ;Dim aChanges() As String
    ;Dim Ind As Integer

Private Sub cmdRedo_Click()
    ;Dim SStart As Long
    ;Dim TLen As Long
    SStart = rtb.SelStart
    TLen = Len(rtb.Text)
    If Ind < UBound(aChanges) - 1 Then
        Ind = Ind + 1
        cmdUndo.Enabled = True
    End If
    If Ind = UBound(aChanges) - 1 Then cmdRedo.Enabled = False
    rtb.TextRTF = aChanges(Ind)
    If Len(rtb.Text) <> TLen Then
        rtb.SelStart = Len(rtb.Text)
    Else
        rtb.SelStart = SStart
    End If
End Sub

Private Sub cmdUndo_Click()
    ;Dim SStart As Long
    ;Dim TLen As Long
    SStart = rtb.SelStart
    TLen = Len(rtb.Text)
    If Ind > 0 Then
        Ind = Ind - 1
        cmdRedo.Enabled = True
    End If
    If Ind = 0 Then cmdUndo.Enabled = False
    rtb.TextRTF = aChanges(Ind)
    If Len(rtb.Text) <> TLen Then
        rtb.SelStart = Len(rtb)
    Else
        rtb.SelStart = SStart
    End If
End Sub

Private Sub Form_Load()
    ReDim aChanges(0)
    aChanges(UBound(aChanges)) = rtb.TextRTF
    ReDim Preserve aChanges(0 To UBound(aChanges) + 1)
End Sub

Private Sub rtb_KeyPress(KeyAscii As Integer)
    If KeyAscii < 33 Then SaveChenge
End Sub
Private Sub SaveChenge()
    ;Dim i As Long
    If UBound(aChanges) = 21 Then
        ;Dim aTemp() As String
        ReDim aTemp(0 To UBound(aChanges) - 1)
        For i = 1 To UBound(aChanges) - 1
            aTemp(i - 1) = aChanges(i)
        Next i
        aChanges() = aTemp()
        Erase aTemp()
    End If
    cmdUndo.Enabled = True
    If aChanges(UBound(aChanges) - 1) <> rtb.TextRTF Or Len(aChanges(UBound(aChanges) - 1)) <> Len(rtb.Text) Then
        aChanges(UBound(aChanges)) = rtb.TextRTF
        ReDim Preserve aChanges(0 To UBound(aChanges) + 1)
    End If
    If UBound(aChanges) = 1 Then cmdUndo.Enabled = False
    Ind = UBound(aChanges) - 1
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #5 Добавлено: 10.02.05 07:34
Михалыч, это топик про .NET ... ;)
Valera, так там же есть свойства и комманды в самом TextBox'e и RichEdit'e.

Ответить

Номер ответа: 6
Автор ответа:
 Vah V



Вопросов: 3
Ответов: 9
 Профиль | | #6 Добавлено: 10.02.05 10:53
Александр, есть то они есть, да только работает все как-то криво. Мне кажется со стеком самый классный вариант.
Чейто Я пытаюсь накарябать, да не очень получается.

Ответить

Номер ответа: 7
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #7
Добавлено: 19.02.05 19:34
Реализую подобный механизм(в смысле Анду)
но для клиента базы данных ИМХО изобретаю велосипед никто не втречался с наработками по этой теме ?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам