La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1178 - PROBLEMAS AL IMPRIMIR UN FORMULARIO
Autor:  Daniel Boero
Estoy empezando a desarrollar en VB 6, y me he encontrado con algunas dudas, aquí va una:
Uso un FrmMain MDI con menúes pull-down.
En un determinado momento muestro un formulario como MDI Child dentro del Main,(este formulario es de gran tamaño ya que representa a una hoja Legal), una vez que el operador lo desea presiona un boton de un toolbar en el FrMain y por medio del printForm efectúa la impresión del formulario. Cuando va a realizar la impresión del mismo carga otra copia del Formulario a imprimir y la muestra sobre el original y lo hace desplazado unos centimetros sobre el anterior, quedando "apilado" sobre la copia original en la pantalla.
Si se hace Frm Unload se descarga la copia del mismo... Por qué sucede?
Lo que sucede es que cuando quiero imprimir el formulario que está dentro del Main, aparece sin que yo lo desee otra copia textual del formulario arriba del anterior y lo hace un poco desplazada sobre el anterior quedando como apilada....
Para imprimir uso xxxx.printForm
Alguien puede ayudarme?
Muchas Gracias

  Respuesta:  Gonzalo Antonio Silva Brito
Prueba solo con la sentencia printform,es decir colocar esta sentencia en una de las funciones que se realizan por medio del editor de menu, asi solo saldra el contenido del formulario y no creara ninguna copia adicional
ejemplo:
1-.crea una barra de menu
2-.Coloca como caption Imprimir
3-.Como Name de la funcion Coloca Imp
4-.Luego Aceptar
5-.realiza un clip en el Nombre de la barra (Imprimir)
6-.Coloca el Siguiente codigo
Private Imp_click()
PrintForm
End Sub

  Respuesta:  Xavi Silva
Hay varias causas que puedan producirse para que se te cierren ambos formularios:
1. Por que la variable que defines para abrir el segundo formulario se encuentra dentro del primero, a lo cual si cierras el primero de ellos, el segundo se cierra porque se destruye su instancia.
2. Por que creas el segundo desde una función que tiene variables no estáticas y al terminar la función se pierde el valor de la variable.

Para solucionar el problema puedes crear una matriz de objetos frm, de los cuales han de estar definidos en un módulo de código, y a continuación cierras uno u otro usando siempre un valor de esta array.

Espero haberte ayudado.
Si no es este tu problema, tendrás que proporcionarme más datos.