Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Pilas en vb, o crear historial

Estas en el tema de Pilas en vb, o crear historial en el foro de Visual Basic clásico en Foros del Web. Buen dia. Veran tengo que realizar algo asi como un historial de los formularios que se van a briendo en una aplicacion, de forma que ...
  #1 (permalink)  
Antiguo 21/01/2011, 11:57
Ecj
 
Fecha de Ingreso: octubre-2008
Mensajes: 63
Antigüedad: 15 años, 6 meses
Puntos: 0
De acuerdo Pilas en vb, o crear historial

Buen dia.

Veran tengo que realizar algo asi como un historial de los formularios que se van a briendo en una aplicacion, de forma que cuando uno de los formularios sea cerrado, muestre el inmediatamente anterior a este y desde el cual fue abierto.

Quiero saber si existe una forma facil de realizarlo o que me recomiendan para lograrlo, he visto algo sobre pilas y creo que se adaptaria a esta necesidad pero no sé si existe en vb.

Les agradezco cualquier colaboracion.

EXITOS
  #2 (permalink)  
Antiguo 21/01/2011, 15:31
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Pilas en vb, o crear historial

Hola, en cierta ocasión analicé un sistema para hacerlo que aunque al final no llegué a utilizarlo creo recordar que me funcionaba.

Te digo como era por si quieres probarlo o intentarlo con este:

En un módulo, para ser accesible desde todos los formularios

Código vb:
Ver original
  1. Dim miPila As New Collection
  2.  
  3. Public Sub mpQuienLlama(Formulario As Form)
  4.   ' Añade a la pila el nombre del formulario que llama
  5.  miPila.Add Formulario, Str$(miPila.Count)
  6. End Sub
  7.  
  8. Public Function mpQuienLlamo(Optional Remove As Boolean = True) As Form
  9.   ' Devuelve el nombre del último formulario que llamó
  10.  ' Se puede pedir el nombre, sin eliminar de la coleccion. Para Maximizar
  11.  Set mpQuienLlamo = miPila.Item(Str$(miPila.Count - 1))
  12.   If Remove Then miPila.Remove (Str$(miPila.Count - 1))
  13. End Function

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 22/01/2011, 04:04
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Pilas en vb, o crear historial

Yo había pensado en un simple listbox oculto, ya que siempre que cierres un formulario y lo borres de la lista, los demás se juntan para rellenar el espacio y siempre queda claro a que formulario hay que ir cuando cierras uno de ellos (menos el primero, que no tiene antecesor (o predecesor o lo que sea), aunque se puede usar el segundo si existe). De este modo no estás limitado a cerrarlos empezando por el último.

No sé si tu método permite eso, erbuson, ni si habrá quedado claro a qué me refiero.
De todas formas tendré que leer un poco sobre las colecciones esas a ver si algún día me facilitan la existencia

Saludos.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #4 (permalink)  
Antiguo 22/01/2011, 09:59
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Pilas en vb, o crear historial

Hola pkj, efectivamente tienes razon en el tema del ListBox, lo que pasa es que el ListBox es un objeto que tiene que pertenecer a un formulario y entonces para que cada uno de ellos al cerrarse, devuelva el control al anterior, tiene que tener acceso a este listbox y no deja de ser un engorro, por esta razón inicialmente lo había pensado y lo descarté.

De este modo la Pila es una coleccion accesible desde cualquiera de los formularios.

Por otra parte el tema de la Pila, es que por lo general suele utilizar lo que se denomina el metodo LIFO (Last Input First Output) el ultimo en entrar será el primero en salir.

Y por la pregunta yo entendí que quería hacerlo así aunque realmente releyéndola puede interpretarse que no necesariamente ha de ser así.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 22/01/2011, 11:02
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Pilas en vb, o crear historial

Tienes razón. Para usar un ListBox habría que dejarlo oculto en el formulario principal y este no debe cerrarse, claro.

Mi idea era incluir algo como un:
Public Lista As ListBox
dentro de un módulo.
Sin embargo parece ser complicado cuando lo intentas.

Además creo que he leído que eliminando un elemento de la colección los demás se reindexan solos, de modo que quizá tu método podría tener el mismo resultado que con un listbox si lo retocas.

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: historial, pilas, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.