Szybkie szukanie
Słowo kluczowe:
sobota, 11 luty 2012
Start arrow Tips & Tricks arrow Stosowanie funkcji UNDO i REDO np. w TextBoxie
Stosowanie funkcji UNDO i REDO np. w TextBoxie Drukuj E-mail
Napisał Administrator   
sobota, 21 styczeń 2006
Użycie funkcji UNDO z TextBoxem

Źródło - net

VB 4.0 +


Większość "windowsowych" aplikacji zawiera menu Edit(Edycja), w którym można
wybrać funkcję UNDO usuwającą ostatnio wykonaną operację.

Ten tekst wyjaśni jak dodać taką funkcję do własnej aplikacji napisanej w VB.

Używając SendMessage można sprawić, że modyfikowany przez Ciebie tekst
będzie zapisywany w zewnętrznym buforze.

Dzieki funkcji API - SendMessage - można pozwolić użytkownikowi odzyskać
zmodyfikowany tekst.

Załóżmy, że wpisałeś jakiś tekst w TextBoxie. Teraz chcesz usunąć jego część.
Aby to uczynić zaznaczasz tekst i usuwasz go naciskając DEL.
Tekst który zaznaczyłeś zostanie skasowany. Możesz udzyskać ten tekst używając VB
poprzez wysłanie komunikatu EM_UNDO do Windows.
Komunikar EM_UNDO informuje system operacyjny. że chcesz odzyskać tekst przed zmianami
które wprowadziłeś do pola edycji - w tym przypadku TextBoxa.ox.

Po wysłaniu komunikatu EM_UNDO , oryginalna zawartość TextBoxa zostanie przywrócona.


Zmodyfikowany tekst nadal znajduje się w buforze windows.
Dlatego w swojej aplikacji, powinieneś wysłać komunikat EM_EMPTYUNDOBUFFER
w celu usunięcia zawartości tego buffora. Komunikat EM_EMPTYUNDOBUFFER
sprawia, że nie będziesz mógł cofnąć ostatniej zmiany dokonanej w TextBoxie.


Tak jak pokazano w przykładowym programie niżej, możesz wykryć, czy operacja UNDO może
być aktualnie wykonana. Komunikat EM_CANUNDO zwraca całkowitą wartość ustawioną na
True jeżeli jakiś tekst znajduje się w buforze undo, albo zero, jeśli nie ma żadnego tekstu.
Możesz wykonać operację undo tylko wtedy, jeżeli zawartość TExtBoxa została wcześniej
zmodyfikowana i informacje sprzed modyfikacji znajdują się w buforze undo.r.

Przykładowy program.
Demonstruje jak dodać UNDO i REDO do swojej aplikacji.

1. Utwórz nowy projekt. Form1 utworzona jest domyślnie.
2. Dodaj poniższe stałe i deklaracje do General Declarations (Form1)

(poniższa deklaracja musi się znajdować w jednej lini)

Private Declare Function SendMessage Lib "User" (ByVal hWnd As Integer, _
ByVal wMsg As Integer, ByVal wParam As Integer, lParam As Long) As Long

Const WM_USER = &H400
Const EM_CANUNDO = WM_USER + 22
Const EM_EMPTYUNDOBUFFER = WM_USER + 29
Const EM_UNDO = WM_USER + 23

3. Dodaj Text Box do Form1. Ustaw właściwość MultiLine na True.
4. Dodaj Command Button do Form1. Ustaw Caption na "Undo".
5. Dodaj poniższy kod do procedury Click Command1:

Private Sub Command1_Click()
Dim OK As Long
OK = SendMessage(Text1.hWnd, EM_UNDO, 0, 0&)
OK = SendMessage(Text1.hWnd, EM_EMPTYUNDOBUFFER, 0, 0&)
End Sub

6. Dodaj kolejny Command Button do Form1. Ustaw Caption na "Redo".
7. Dodaj poniższy kod do procedury Click Command2:

Private Sub Command2_Click()
Dim OK As Long
OK = SendMessage(Text1.hWnd, EM_CANUNDO, 0, 0&)
If OK = 0 Then
MsgBox "Nie można cofnąć zmian, których dokonałeś.", 16, "Error"
End If
OK = SendMessage(Text1.hWnd, EM_UNDO, 0, 0&)
End Sub

Komentarze

Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie.
Tylko zarejestrowani użytkownicy mogą pisać komentarze.

Powered by AkoComment 2.0!

< Poprzedni   Następny >

Menu główne
Start
Teoria
VB.NET
Api
Tips & Tricks
Warsztat
VBMagazine
Pliki
Forum
Literatura
Ankiety
Linki
Szukaj
Wyślij program
Napisz do nas
Redakcja
Logowanie
Login

Hasło

Zapamiętaj mnie
Nie pamiętasz hasła?
Nie masz konta? Załóż je sobie
Gościmy
Aktualnie jest 18 gości online
Statystyka
Użytkownicy: 11345
Newsy: 237
Odnośniki: 48
Odwiedzających: 4327656
Mambo is Free Software released under the GNU/GPL License.