Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
Martin Pola
Člen
Avatar
Martin Pola:8.5.2016 16:36

Ahoj,
chci vás poprosit, jestli byste mi pomohli vyřešit následující problém...
Chci udělat funkcu Undo/Redo v a ze zadání mám dáno, že to má být přes stack...

děkuju moc za objasnění problému :)

Odpovědět 8.5.2016 16:36
Per Aspera Ad Astra
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:11.5.2016 3:36

Použij kolekci stack, co má v sobě c #. Stav komponent si ukládat celý do nějakýho jednoho modelu. Jedna jediná instance. Pro každé změně současný stav uloz na stack. Při tlačítku zpět pak jen výndas ze stacku předchozí stav a ten přiřadís do aktivního. Undo / redo je dokonce navrhovy vzor. Pomůže ti k tomu immutable state a nebo postsharp to má už v sobě

Nahoru Odpovědět 11.5.2016 3:36
In Smalltalk, everything is an object, In Clojure, everything is a list, In Javascript, everything is fucking mistake
Avatar
Martin Gabriel:11.5.2016 8:53

http://www.wpftutorial.net/UndoRedo.html
Tady je pěkně popsaný tutorial, jak na to. :)

Já to řeším stejně jako v tutorialu - mám dva stacky a každou UI změnu ukládám do UndoStacku. Je to hromada práce "navíc", protože pro každou změnu musíš implementovat i krok zpět, ale je to jednoduché a čitelné. :)
Výhodu dvou stacků vidím v tom, že pak můžeš přeskakovat mezi Undo/Redo a žádný ze stavů se Ti neztratí (pokud nepřekročíš nějaký sebou nastavený limit).

EDIT:
http://www.codeproject.com/…on-in-C-Part
Ještě tady je skvělý tutorial i s kódem. Tohle bude pro Tebe možná přijatelnější. ;)

Editováno 11.5.2016 8:56
Nahoru Odpovědět 11.5.2016 8:53
"Be the change you want to see in the world" - Michael Scofield
Avatar
Martin Pola
Člen
Avatar
Martin Pola:12.5.2016 11:18

Okej, děkuju moc! :)

Nahoru Odpovědět 12.5.2016 11:18
Per Aspera Ad Astra
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.