Imprimir texto en pantalla con API

delarioja
04 de Marzo del 2008
Me gustaria poder imprimir texto en un Form como con el control label, pero con una funcion. Saben si hay alguna API que lo haga. A diferencia de la funcion Print, quisiera una que imprima en un recuadro determinado, con limites.
Muchas gracias.

delarioja
04 de Marzo del 2008
Hola Gabriel:
El procedimiento que me mandas no imprime texto. Como lo harias para que imprima texto en un recuadro determinado.

Gabriel
04 de Marzo del 2008
Tendrías que jugar un poco con el print, por ejemplo:

Printer.FontName = "Times New Roman"
Printer.FontItalic = True
Printer.FontSize = 8
Printer.FontUnderline = False
'Aca viene lo que a vos te interesa en particular
Printer.CurrentY = 100
Printer.CurrentX = 5500
Printer.Print "hola"

tené en cuenta que tanto Printer.CurrentY como Printer.CurrentX tienen que estar dentro del recuadro que creastes.
Te puse otras propiedades para que juegues con ellas, existen muchas más con las que podes jugar, yo te recomiendo que te crees pu propio modulo de impresión para que te facilite el trabajo solo llamando a funciones o procedimientos que te resuelvan el posicionamiento, el control de fin de hoja, la impresión de imagenes o encabezados, etc.

Suerte.
Gabriel.

delarioja
04 de Marzo del 2008
No hay ninguna API???

El Gato
04 de Marzo del 2008
No entiendo que queres hacer???
eso que te contestaron antes esta bueno, a parte con el label podes hacer de todo

expresate mejor para que te puedan ayudar

delarioja
04 de Marzo del 2008
En una pantalla, tipo grid, tengo que imprimir texto en cada celda. Con Labels se necesita crear una matriz de objetos labels suficientes y es un poco engorroso.
En vez de objetos, mejor con alguna funcion que imprime y ya està.
Pero la funcion debe de ser bastante rapida, sino al hacer scroll queda muy mal. Mejor alguna funcion API o en C. Que opinan?
Gracias.

Gabriel
04 de Marzo del 2008
yo tengo esto casero, si te sirve......

Llamado
Call PrintBox(26, 35, 175, 10, 3)


Public Sub PrintBox(intX1 As Integer, intY1 As Integer, intXLenght As Integer, intYLenght As Integer, intLineWidth As Integer, Optional FillColor)

Dim intX2 As Integer, intY2 As Integer
Dim intPreWidth As Integer
Dim lngFillColor As Long
Dim intFillStyle As Integer


If Not IsMissing(FillColor) Then

lngFillColor = Printer.FillColor
intFillStyle = Printer.FillStyle

Printer.FillColor = FillColor
Printer.FillStyle = vbFSSolid
End If

intX2 = intX1 + intXLenght
intY2 = intY1 + intYLenght

intPreWidth = Printer.DrawWidth

Printer.DrawWidth = intLineWidth

Printer.Line (intX1, intY1)-(intX2, intY2), , B

Printer.DrawWidth = intPreWidth

If Not IsMissing(FillColor) Then
Printer.FillColor = lngFillColor
Printer.FillStyle = intFillStyle
End If


End Sub