• Domingo 22 de Diciembre de 2024, 08:54

Autor Tema:  Deshacer  (Leído 1509 veces)

tyron

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Deshacer
« en: Sábado 23 de Abril de 2005, 12:58 »
0
Hola, ¿como puedo deshacer una accion realizada en una caja de texto? Por ejemplo, el bloc de notas, escribes algo y puedes deshacer lo escrito, o borrar algo, y deshacer el borrado. Tengo este codigo:

Declaración de la función API y las constantes:
Código: Text
  1. Private Declare Function SendMessage Lib "User" (ByVal hWnd _
  2.          As Long, ByVal wMsg As Long, ByVal wParam As Long, _
  3.          lParam As Long) As Long
  4.  
  5.          Const WM_USER = &H400
  6.          Const EM_CANUNDO = WM_USER + 22
  7.          Const EM_EMPTYUNDOBUFFER = WM_USER + 29
  8.          Const EM_UNDO = WM_USER + 23
  9.  

Botón Undo:
Código: Text
  1. Dim ok As Long
  2. ok = SendMessage(Text1.hWnd, EM_UNDO, 0, 0&)
  3. ok = SendMessage(Text1.hWnd, EM_EMPTYUNDOBUFFER, 0, 0&)
  4.  

Botón Redo:
Código: Text
  1. Dim ok As Long
  2. ok = SendMessage(Text1.hWnd, EM_CANUNDO, 0, 0&)
  3. If ok = 0 Then
  4.      MsgBox "No puedo deshacer los cambios", 16, "Error"
  5. End If
  6. ok = SendMessage(Text1.hWnd, EM_UNDO, 0, 0&)
  7.  

Previamente he realizado cambios de todo tipo en la caja de texo para luego poder probar el codigo (obvio), pero no funciona. ¿Me falta algo? ¿Esta mal este codigo? o ¿Hay alguna otra manera de realizar lo que quiero?
Un saludo y gracias de antemano.

_vgt_

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Deshacer
« Respuesta #1 en: Jueves 28 de Abril de 2005, 23:23 »
0
mmmm, xk no haces un vector con x ejemplo 10 elementos y vas introduciendo  lo ultimo k escriba el usuario en la caja de texto y si kiere deshacer pues vas reemplazando con lo k tengas en el vector ... cutre pero efectivo ... y funciona xk si mal no recuerdo un compi de clase lo hizo y le funcionaba de cojones :-)

Saludos

 :hola:

OtRa CoSa No pErO "PLaNeS B" ...  xDDDD
...solo los perdedores alegan haber hexo lo k han podido...

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Deshacer
« Respuesta #2 en: Miércoles 4 de Mayo de 2005, 16:25 »
0
Hola.

Seguro que mediante funciones del api no hay problemas, pero he aquí una forma simpática de deshacer:

Código: Text
  1.  
  2.     Text1.SetFocus
  3.     SendKeys "^Z"
  4.  
  5.  

Suerte.

_vgt_

  • Miembro activo
  • **
  • Mensajes: 76
    • Ver Perfil
Re: Deshacer
« Respuesta #3 en: Miércoles 4 de Mayo de 2005, 23:17 »
0
joeee Brroz eres lo máximo!!!!  :o nunca se me hubiera ocurrido eso... es un lujo saber k estas x aki !!!   :)

Saludos y me apunto eso xk desde luego es cantidad de ingenioso !!!   :hola:
...solo los perdedores alegan haber hexo lo k han podido...