Cita:
|
conseguir ese efecto de deshacer/rehacer ilimitado, no restringido a solo texto
|
El hecho de ser "ilimitado" es simplemente una lista de Objetos que crea/destruye los elementos dinámicamente, no quiere decir nada más.
Deberías concretar más sobre qué quieres aplicar el Deshacer/Rehacer.
Si un objeto tiene un método para pintar una linea:
Linea( origenX, OrigenY, DestinoX, destinoY:integer)
Puedes guardar los parámetros perfectamente y crear un método UndoLinea que elimine la linea.
Cuando se use el método Linea para pintar, guardas en una variable de tipo puntero el método UndoLinea, y eso es lo que añades a las pilas.
Aqui tienes 2 funciones, suma y resta; en un momento determinado cogemos una de las funciones, la guardamos en una variable "sel", y despues la mandamos a ejecutar.
Código Delphi
[-]
type
Tseleccion = function (a,b:Integer):Integer;
function Suma(a,b:integer):integer ;
begin
Result := a+b;
end;
function Resta(a,b:integer):integer ;
begin
Result := a-b;
end;
procedure TForm1.Button1Click(Sender: TObject);
var sel:Tseleccion;
begin
sel := Suma;
ShowMessage(IntToStr(sel(3,5))); end;
Espero sea lo que pidas o al menos te dé alguna idea
Saludos