De entrada señalar que VB6 tiene su foro específico:
https://foro.elhacker.net/programacion_visual_basic-b50.0/y... Guau... debes tener cero conocimientos de programación.
Lo que buscas, se llama de forma genérica, "manipulación de cadenas". Una de las funciones de ese tratamiento, se llama 'concatenar'.
private txt as string
' ...
txt = Text33.Text & vbtab & Text22.Text ' por ejemplo...
Printer.Print txt
' ...
El problema añadiendo un tabulador es que si bien separa horizontalmente un texto del otro, es dependiente del ancho de cada campo en particular, luego se verá una especie de columnas pero irregulares, no mantendrán la posición entre líneas. Incluso si un texto tiene justamente el mismo ancho que un número determinado de tabuladores, los dos textos quedarían unidos, luego quizás podría convenir añadir 2 espacios o bien su remplazo por sendos espacios. Con el uso de tabuladores, puede garantizarse columnas perfectas, si los textos apenas se diferencian en el ancho.
Otra de las funciones del tratamiento de cadenas es 'formatear' (dar formato), que básicamente lo que pretende es mantener un aspecto específico, el cual viene a depender de lo que pretenda el usuario, es un nombre muy genérico, porque hay infinidad de opciones. Con ello mantienen un control más estricto de 'las columnas', a cambio de algo más de código...
En tu caso vamos a suponer que requieres 2 columnas, por tanto el formateo consistirá en fijar que el ancho de un texto no sobrepase el otorgado al ancho de columna, para ello se cortará el texto si sobrepasa dicho ancho...
No suele ser deseable cortar un texto, pero si quieres mantener columnas el ancho del texto debe ceñirse al espacio de columna, o usar un papel extra ancho...
Primero, conviene crear una función que determine el punto donde comienza cada columna.
dim BeginCols() as integer
dim AnchoCol as integer
' Esta función crea un array donde almacena el punto se comienzo de cada columna. La función se diseña con un parámetro para que pueda ser invocado múltiples veces si hay necesidad de saltar entre diferente númeor de columnas en cualquier momento.
' NOTA: Considera todas las columnas de igual tamaño, en otro caso modificar al gusto...
private sub InicializarImpresion(byval NumColumnas as byte)
dim j as integer, k as integer
redim BeginCols(1 to numColumnas)
AnchoCol = ((printer.scalewidth - printer.scaleleftleft) \ numcolumnas)
BeginCols(1)= printer.scaleleftleft
for k= 2 to numcolumnas
BeginCols(k) = ((BeginCols(k-1) + AnchoCol )
next
end sub
call InicializarImpresion(2) ' esto se debería invocar cuando se pulsa el botón para imprimir... ...y cada vez que cambie el número de columnas.
...
call FormateareImprimir(Text33.Text, Text22.Text)) ' esto se debe invocar con cada línea con su par de textos...
' ...
private function FormateareImprimir(byref Columna1 as string, byref Columna2 as string)
dim j as integer, t as integer, txt as string
t = printer.currenty
txt = FormatearPrn(columna1,AnchoCol-10) ' -10 para que haya al menos siempre un espacio entre columnas.
printer.currentx = BeginCols(1)
Printer.Print txt
txt = FormatearPrn(Columna2, AnchoCol-10)
printer.currentx = BeginCols(1): printer.currentY = t
Printer.Print txt
' saltamos a la siguiente línea...
printer.currentY = (t + printer.textHeight("A") ' el alto de impresión para cualquier texto, es el alto de la fuente, sin importar el texto pasado excepto una cadena vacía.
end function
' Recorta el texto si es preciso, para que no ocupe más del espacio destinado a la columna.
' Mide la cadena si supera el ancho máximo concedido, va retirando un carácter en cada ciclo de un bucle hasta que cumpa la condición.
' NOTA: Si el tamaño de fuente o el número de columnas es ridículo (gigante), el texto podría tener 0 caracteres y genear error... Uno debe aprender a lidiar con su propia idiotez.
private function FormatearPrn(byref Texto as string, byval MaxAncho as integer) as string
dim w as integer, numchars as integer
numchars = len(texto)
w = printer.textwidth(texto)
do while (w > Maxancho)
numchars = (numchars -1)
texto = left$(texto, numchars)
w = printer.textwidth(texto)
loop
FormatearPrn = texto
end function
Esto es solo una aproximación rápida hacia tu objetivo, (seguramente) tendrás que 'trabajarlo' un poquito hasta que salga como tu quieres...
...y bueno ya tienes por donde tirar, aunque me temo que si estás tan verde que no sabes 'concatenar' todo esto te sonará a chino y tampoco sabrás por donde tirar, pero esto es lo normal cuando uno quiere correr sin saber andar (los tortazos contra el suelo, están garantizados).