Autor Tema: ¿Como volver al Formulario que lo llamó?  (Leído 2568 veces)

0 Usuarios y 1 Visitante están viendo este tema.

deejaykhali

  • Bit
  • Mensajes: 1
  • Reputación: +0/-0
    • Ver Perfil
¿Como volver al Formulario que lo llamó?
« en: Abril 09, 2014, 03:32:59 pm »
Buenas tardes, tengo  una pequeña duda ya que soy nuevo programando en Visual Basic 6.0 y mi pregunta es la siguiente:

  Tengo un proyecto con varios formularios (no son dinámicos) que funcionan a la perfeccion salvo a un pequeño detalle, hago llamados a un mismo formulario desde formularios distintos y me gustaría saber cual es la manera de volver al formulario que llamo al ultimo, he creado un botron “atrás” con los comandos Hide() y Show() pero solo se devuelve al formulario donde esta el comando pero cuando lo llamo desde otro formulario no vuelve a el sino al formulario donde esta el comando, como no se si me estoy explicando bien lo voy a reflejar en un pequeño código

  Asi lo tengo codificado:

Este es el formulario 1

Private Sub Cdm_Sieguiente1_Click()
Frm1.Hide
Frm3.Show
End Sub

Este es el botón atrás del formulario 3 para que vuelva al formulario 1

Private Sub CdmAtras3_Click()
Frm_3.Hide
Frm_1.Show
End Sub

Y este es otro formulario que también llama al  formulario 3

Private Sub Cdm_Sieguiente2_Click()
Frm2.Hide
Frm3.Show
End Sub

Mi Pregunta es: Como Hago para que el Formulario 3 vuelva al formulario 2 cuando  y no al formulario 1 cuando quien lo haya llamado sea el formulario 2?

De ante mano muchas gracias por la ayuda y la colaboracion

SKL

  • Administrador
  • Kilobyte
  • *****
  • Mensajes: 52
  • Reputación: +9/-2
  • GRIPE A
    • Ver Perfil
Re:¿Como volver al Formulario que lo llamó?
« Respuesta #1 en: Mayo 24, 2014, 11:13:12 pm »
Usa una variable publica en un modulo por ejemplo

Dim FormCall As String

En cada llamado llena la variable con el nombre del formulario osea:

FormCall = Me.Name

Hace un select en cada ventana y Listo....

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Re:¿Como volver al Formulario que lo llamó?
« Respuesta #2 en: Mayo 25, 2014, 08:35:10 am »
¿ Por alguna razon especial no utilizas el vbModal en el Show ?

Si para volver al formulario llamante debe cerrar el llamado es lo mas simple. Así Ocultas y Visualizas el Llamante y en el llamado sólo debes cerrar.

Formulario1
Form1.Hide
Form3.Show vbModal
Form1.Show

Formulario2
Form2.Hide
Form3.Show vbModal
Form2.Show

Formulario3
Unload Me

Saludos


Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:¿Como volver al Formulario que lo llamó?
« Respuesta #3 en: Mayo 25, 2014, 12:47:03 pm »
Estimado deejaykhali
 
Me da la impresión de lo que quieres desarrollar es un asisten, en tal sentido, lo que se haría es desde un formulario X invocar al formulario Y, quedando el formulario Y visible y el formulario X oculto y así sucesivamente hasta llegar al final del asisten. Si fuera ese el caso, entonces para cada uno de los formularios estás invocando innecesariamente al método Hide. Veamos porque, cuando estas en el formulario X he invocas al formulario Y, entonces, el formulario Y quedara delante del formulario X quedando, por lo tanto, el formulario X oculto.
 
Pero tú caso es particular, ya que quieres que se retorne siempre al último formulario que fue mostrado. Para ello tendrá que hacer uso de una variable de ámbito global g_IndexLastForm la que te servirá para recordar cual fue el último formulario que se mostró. Así mismo, necesitara de un procedimiento (o método) que ShowLastForm que se encargara de mostrar el último formulario en función a la variable g_IndexLastForm este procedimiento (o método) será invocado al hacer clic en el botón Atrás.
 
Te copio el código, para el caso de pruebas he cargado los 3 formularios es por ello que coloco un comentario en el procedimiento Sub Main
 
 
Código: [Seleccionar]
'*************************
'FORMULARIO 1
'*************************
Private Sub Cdm_Siguiente1_Click()
  g_IndexLastForm = 1
  Frm3.Show
End Sub
 
'*************************
'FORMULARIO 2:
'*************************
Private Sub Cdm_Siguiente2_Click()
  g_IndexLastForm = 2
  Frm3.Show
End Sub
 
Private Sub CdmAtras2_Click()
  ShowLastForm
End Sub
 
'*************************
FORMULARIO 3:
'*************************
Private Sub CdmAtras3_Click()
  ShowLastForm
End Sub
 
'*************************
'EN un MODULO:
'*************************
Public g_IndexLastForm As Long

Public Sub ShowLastForm()
  Select Case g_IndexLastForm
    Case 1: Frm1.Show
    Case 2: Frm2.Show
    Case 3: Frm3.Show
  End Select
End Sub

' En la barra de menu: Proyecto> Propiedades de XXXX> Pestaña General> Objeto inicial> selecciona  Sub Main
Public Sub Main()
  Frm1.Show
  Frm2.Show
  Frm3.Show
End Sub

 
Saludos desde algún lugar en Lima-Perú
 
« última modificación: Mayo 25, 2014, 01:36:23 pm por Albertomi »
Saludos, desde algún lugar de Lima-Perú