[SOLUCIONADO] Inconveniente con Métodos de impresión en VB 6.0

Iniciado por Napsters, Marzo 01, 2013, 10:41:03 AM

Tema anterior - Siguiente tema

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

Marzo 01, 2013, 10:41:03 AM Ultima modificación: Septiembre 09, 2014, 08:47:18 PM por Expermicid
Hola a Todos! =D

Bueno como dice el titulo estoy con problemas a la hora de imprimir mi información.

El tema es que no encuentro la forma de darle el lugar correcto a la hora de usar la impresión, ya que tengo que hacer la muestra de 3 tablas y que vaya mostrando la información en diferentes partes del formulario.

y mi duda es la siguiente:

Es mejor hacer la muestra en el formulario(obviamente con una posición correcta) de la información o usar algún text box, list box,etc con barra de desplazamiento, para que quede mas prolijo a la hora de mostrar y no quedar superpuesto.

esta es prácticamente la codificación que uso, pero muestra siempre en la parte superior, yo en ese caso quisiera que mostrara o en la parte de abajo o bien si es mas conveniente dentro de un text box, etc.

                                                                                                                                  Saludos.  8) NaPsTeRs  8)
   

Código: vb
Private Sub BuscarDNI_Click()
With rsEmpleados
        dni1 = Val(Text1.Text)
        .MoveFirst
        .Find "Dni='" & dni1 & "'"
       If .EOF = True Then
             z = MsgBox("El Dni del Empleado no Existe", vbInformation, "Aviso")
             Text1.Text = ""
             Text1.SetFocus
                      Else
             MsgBox ("Encontrado")
             Busqueda.Print Tab(10); "---DNI---"; Spc(5); "----Ape y Nom----"; "---Estado---"; Spc(5); "--Motivo--"; Spc(5)
             Busqueda.Print Tab(10); !DNI; Spc(5); !ApyNom; Spc(5); !EstRev; Spc(5); !MotEstR;
                       
       End If       
End With


End Sub

No se si entendi bien, pero si tienes que mostrar una tabla porque no usas un listview?

Marzo 01, 2013, 11:29:20 AM #2 Ultima modificación: Marzo 01, 2013, 11:32:27 AM por ANTRAX
Yo antes de usar listview, usaria msghflexgrid. Te queda prolijo, ordenado, lo podes personalizar y es compatible con Win7

Saludos!


Marzo 01, 2013, 11:40:30 AM #3 Ultima modificación: Marzo 01, 2013, 11:43:20 AM por 79137913
HOLA!!!

Para hacer lo que quieres tenes que usar lo siguiente:

Código: vb

'Viendo tu codigo supongo que Busqueda es el nombre del form o picture donde queres imprimir si no es asi reemplaza donde pongo Busqueda y pone el nombre del objeto al cual quieras utilizar como destino de Print.
Busqueda.CurrentX = PosX 'Posicion x donde quieres que empiece a escribirse lo que hagas con print
Busqueda.CurrentY = PosY 'Posicion y donde quieres que empiece a escribirse lo que hagas con print
'Posx y Posy son variables donde pondras las coordenadas del sitio donde quieres que empiece a escribir el print.


Espero que te haya sido de ayuda ;)

P.D: Si es a modo experimental, esta bien que uses Print, yo usaria un listbox si es una lista simple, y si es una lista de varios conceptos (columnas) usaria un ListView. En caso que quieras saber como usar los controles nombrados crea otro tema con la duda y sera respondida

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola a todos!! y Gracias por su tiempo en ayudarme!! =D

Anteriormente se me había ocurrido usar Listview pero a preferencia del Profesor nos pidió que usáramos el método Print y prácticamente con poca explicación.

Si. Efectivamente es "Busqueda." lo que no me queda muy en claro es como medir las coordenadas, ya que intente usar el "CurrentX /CurrentY" pero no se como expresar la variable a dicha función.

que prácticamente me quedaba así :

Busqueda.CurrentX = (No se si tengo que dimensionar algo en particular o algún numero) y lo mismo con CurrentY


Y el otro inconveniente que surge a esto, es cuando clickeo el boton Buscar varias veces, vuelve a listar la misma información repetidas veces, hay alguna forma que solo me permita mostrar 1 sola ves la información y lo actualizo, que solo se agregue el dato nuevo sin necesidad de tener listado repetido?



                                                                                                                      Saludos.  8) NaPsTeRs  8)

HOLA!!!

CurrentX y CurrentY dependen de Form.Scalemode (En tu caso Busqueda.Scalemode).

Podes ponerlo (scalemode) en los siguientes modos:
Código: vb
Busqueda.ScaleMode = 1 'Twip
Busqueda.ScaleMode = 2 'Punto
Busqueda.ScaleMode = 3 'Pixel
Busqueda.ScaleMode = 4 'Caracter
Busqueda.ScaleMode = 5 'Pulgada
Busqueda.ScaleMode = 6 'Milimetro
Busqueda.ScaleMode = 7 'Centimetro


Se suele utilizar Pixel o Twip Pero para tu proyecto se te va a hacer mas facil con Milimetro o Centimetro.

Ahora lo voy a Explicar mas detallado:
Suponiendo que uses Scalemode=6
Y queres que tu texto se escriba a 4,3 centimetros del Tope del fomulario y a 2,1 Centimetros del margen izquierdo, tendras que colocar los Current asi:
Código: vb
CurrentX = 43
CurrentY = 21

Luego de que hagas el Print vas a ver que se coloco el texto a partir de los parametros indicados.

Para que no se imprima muchas veces una vez arriba de la otra te recomiendo usar Form.Clear (Busqueda.Clear en tu caso) lo cual va a quitar todos los print hechos hasta el momento.

Espero que tengas suerte y cualquier otra duda planteala sin mas ;)

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Marzo 01, 2013, 10:29:40 PM #6 Ultima modificación: Marzo 04, 2013, 11:37:57 AM por 79137913
Buenas!! Aquí estoy de vuelta.

Seguí los pasos tal cual yyy así quedo mi codificación

Código: vb
Private Sub BuscarDNI_Click()
    With rsEmpleados
        dni1 = Val(Text1.Text)
       
        .MoveFirst
        .Find "Dni='" & dni1 & "'"
       If .EOF = True Then
                        z = MsgBox("El Dni del Empleado no Existe", vbInformation, "Aviso")
                        Text1.Text = ""
                        Text1.SetFocus
                       Else
                       MsgBox ("Encontrado")
                       Busqueda.ScaleMode = 6
                       Busqueda.CurrentX = 60
                       Busqueda.CurrentY = 12
                       Busqueda.Print Tab(22); "--- DNI ---"; Spc(6); "---- APE Y NOM ----"; Spc(5); "--- ESTADO ---"; Spc(5); "-- MOTIVO --"; Spc(5)
                       Busqueda.Print Tab(22); , , , , , , , , , ,
                       Busqueda.Line (0, 19)-(Printer.ScaleWidth, 19)
                       Busqueda.Print Tab(20); !DNI; Spc(5); !ApyNom; Spc(5); !EstRev; Spc(10); !MotEstR;
                       
        End If
       
     End With

End Sub



Vi algo que me resulta raro al principio, al parecer las coordenadas estaba al revés. Que quiere decir? Cuando puse la parte del CurrentX/ CurrentY de acuerdo a lo que pusiste.

el CurrentX me tomaba como margen izquierdo y el Current Y el tope de formulario...tal ves dependa de algo del cual no tengo mucha idea y acabo de aprenderlo xD.


Hasta el momento va funcionando a la perfección =D



Intente ponerle color con mi sentencia (Busqueda.forecolor= vbRed) y no pasa nada. No se si tengo que agregar algo mas, desconozco si va "vbRed" o " &H000000FF&" agregando algo mas a ello.


MUCHAS GRACIAS NUEVAMENTE POR LA INCREÍBLE AYUDA =D.

                                                                                                                     Saludos.  8) NaPsTeRs  8)

Tu mensaje fue modificado por 79137913, debido a que no utilizaste las etiquetas CODE de geshi correspondientes, por favor tenelo en cuenta para tus otros post, en caso de reincidir en tu accionar se te notificara por MP y si no se corrige el problema seras notificado al staff del foro para reducir tu karma, en caso que tu karma sea cero seras expuesto al staff para que se plantee tu continuidad en el foro.-

HOLA!!!

Napsters:
Para entender como funciona forecolor con print hace un proyecto nuevo y en el form pone este codigo:
Código: vb
Private Sub Form_Load()
Me.Show
Me.ForeColor = vbBlue
Print "hola"
Me.ForeColor = vbRed
Print "hola"
Me.ForeColor = vbBlack
Print "hola"
Me.ForeColor = vbWhite
Print "hola"
Me.ForeColor = vbCyan
Print "hola"
Me.ForeColor = vbGreen
Print "hola"
Me.ForeColor = vbYellow
Print "hola"
End Sub


Vas a ver que al ejecutarlo aparece un hola de cada color.

Eso quiere decir que desde que se setea el forecolor, los siquientes print seran del color establecido, para cambiar el color simplemente volves a setear forecolor e imprimis de nuevo.

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta