Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2010
jogagua jogagua is offline
Miembro
 
Registrado: dic 2008
Posts: 14
Poder: 0
jogagua Va por buen camino
Smile Trabajar Listas con Datos Modificados y Eliminados ( Deshacer y Rehacer)

Buenos días amigos foreros... espero me puedan ayudar con este problema mas bien de ideas que enfrento en este momento...

verán, estoy realizando un programa al estilo del Paint, donde se puedan dibujar lineas, puntos, etiquetas, círculos, etc..., para ello dibujo en el canvas de una TImage. Trabajo para ello con un arreglo definido asi:

Objetos : array[1..Nmax] of Obj // donde Obj está definido así:
Obj= record
Tipo:byte; // donde 1=Punto 2=Etiqueta 3=Recta etc
Color, Grueso de Linea, etc....

Bueno, hasta allí todo bien, simplemente al agregar por ejemplo un punto, después de hacer clic este se añade a Objetos[NObjetos] con todos los datos. Hasta allí fino...

Luego se me ocurrió añadirle los típicos botones: Deshacer y Rehacer, para lo cual cree otro arreglo igual a Objetos[] pero llamado Cambios[], entonces:

Tengo un PosCambios que es la posición donde me encuentro actualmente, un NCambios, que son los cambios hechos hasta el momento (Ncambios>=PosCambios) y NObjetos que son los Objetos que ya dejo fijos y que los botones de Deshacer y Rehacer no tocan: funciona de la siguiente manera:

Al agregar un objeto( por ejemplo un punto) éste se agrega a Cambios[NCambios], si NCambios es mayor a un máximo que fijé (por ejemplo 10) en maxCambios, entonces guardo Cambios[1] (1er valor) en Objetos[NObjetos] (previamente aumento NObjetos) y en Cambios[NCambios] pongo el nuevo punto. Por asi decirlo tengo unos objetos que quedaron fijos (Objetos[]) y otros que son los ultimos cambios hechos (Cambios[])...

Entonces al Dibujar en pantalla, dibujo todos los valores de Objetos[] y dibujo desde el 1ero hasta PosCambios de Cambios[]. Con los botones de Deshacer y Rehacer o que hago es que varío PosCambios y por lo tanto no me dibuja los cambios hechos despues de la posicion donde me encuentre por asi decirlo...

Hasta allí todo bien, funcionando de mil maravillas, pero quiero poder eliminar y modificar los objetos, cosa que de por sí no es dificil, pues con hacer un clic en pantalla puedo saber sobre cual objeto hago click mas cerca (distancias) para seleccionarlo y modificarlo o eliminarlo, pero quiero que estas modificaciones o eliminaciones queden guardadas en la lista de Cambios de alguna manera para que las pueda Rehacer o Deshacer, y esto es precisamente lo que no logro pensar como hacer...

En realidad si pensé una forma para trabajar con los eliminados, el problema es con los modificados... No se si me complique demasiado, que es lo que me parece, espero sus consejos sobre otro método a utilizar o como modificar el que tengo para que funcione....

Uyy¡¡ como me extendí, lo lamento, solo que quería tratar de no dejar cabos sueltos.... espero que tengan paciencia para leerlo y contentarme

Desde ya muchas Gracias...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
¿bases de datos listas? JXJ Firebird e Interbase 4 18-06-2010 12:42:43
Registros modificados en un TClientDataSet Cecilio Conexión con bases de datos 0 06-10-2008 22:21:32
Manejo de Multi-Listas (listas de listas) DelphiRat OOP 4 03-07-2006 19:42:58
Recuperar Datos Eliminados agova Tablas planas 1 22-04-2005 01:18:10
Fichero *.pas perdido ¿ se puede rehacer? mainau Varios 3 29-03-2004 12:52:46


La franja horaria es GMT +2. Ahora son las 16:38:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi