1

Konu: Edit Box'da Undo olabilir mi?

Merhaba,

EditBox'da hiç olmazsa bir düzeyli Undo (geri alma) mümkün mü?

İyi günler.

2

Re: Edit Box'da Undo olabilir mi?

Evet. Tablerevert()

3

Re: Edit Box'da Undo olabilir mi?

Teşekkürler.
Bir yöntem olabilir ama ben EditBox'ın içeriğini bir değişkende saklıyorum. Yani bir tablonun field'ına bağlamadım.
Bu durumda Undo nasıl yapabilirim?

4

Re: Edit Box'da Undo olabilir mi?

Degiskene yeniden yukle o zaman. Hatta N seviye undo/redo bile yapabilirsin, kontrole bir array ekleyip degerleri gotfocus/lostfocusta saklayarak.

5

Re: Edit Box'da Undo olabilir mi?

Bir sorun var; kullanıcıların benden istedikleri Undo, daha kontrolden (EditBox) çıkmadan yapılacak Undo.
Somutlaştırırsam; Bir kullanıcı arkadaş EditBox'a yazı yazıyorken (klinik bulgular) bir paragraf yazıyı seçip silmiş. Sildiklerini geri almak istemiş.
Bu nedenle daha kontrolde iken Undo yapılmasını sağlamak istiyorum.

6

Re: Edit Box'da Undo olabilir mi?

Esc

7

Re: Edit Box'da Undo olabilir mi?

ESC'in bir sorunu var: Eğer kontrolden (editbox) çıkmamışsanız o ana kadar yazdığınız herşeyi siliyor. Yani diyelim ki boş bir editbox var, birşeyler yazdınız daha çıkmadan ESC'e bastınız, gerialma yaparken herşeyi siliyor. Eğer lostfocus olmuşsa tekrar dönmüşseniz ESC bu kez de hiçbir etkide bulunmuyor.
Buna çözüm olarak bir seviyeli gerialma yapabilen basit bir rutin yazdım. İşe yarıyor. Paylaşmak istedim.
Inıt
This.AddProperty("UndoFlag",.T.)
This.AddProperty("Deger1","")
This.AddProperty("Deger2","")

InteractiveChange
IF This.UndoFlag
This.UndoFlag = .F.
    This.Deger1 = This.Deger2
    This.Deger2 = This.value
ELSE
   This.UndoFlag = .T.
   This.Deger1 = This.Deger2
   This.Deger2 = This.value
ENDIF

GotFocus
This.UndoFlag= .T.

* ESC ile gerialma.
KeyPress
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode = 27
   NODEFAULT
   This.Value = This.Deger1
   This.Deger2 = This.Deger1
ENDIF

8

Re: Edit Box'da Undo olabilir mi?

bence bunu esc tuşuna değil de başka bir tuşa assign etmek daha şık olabilir. ( Ctrl-Z gibi...)