elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ESPACIOS ENTRE TEXTBOX CON OTRO TEXTBOX Y LISTBOX CON OTRO LISTBOX
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ESPACIOS ENTRE TEXTBOX CON OTRO TEXTBOX Y LISTBOX CON OTRO LISTBOX  (Leído 375 veces)
ELFER

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ESPACIOS ENTRE TEXTBOX CON OTRO TEXTBOX Y LISTBOX CON OTRO LISTBOX
« en: 24 Junio 2021, 06:40 am »

HOLA ALGUIEN ME PUEDE AYUDAR ESTOY TRABAJANDO EN VISUAL BASIC 6.0

TENGO ESTE CODIGO

Printer.Print (Text33.Text); (Text22.Text)

LO QUE BUSCO ES QUE LA INFORMACION DE LOS TEXTBOX NO ESTEN JUNTAS SI NO QUE TENGAN UN ESPACIO ADECUADO 

EJEMPLO

TEXT33                       TEXT22




Y LO MISMO PERO CON LIST BOX



LISTBOX1                  LISTBOX2


GRACIAS SI ALGUIEN ME PUEDE AYUDAR


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 2.694


Ver Perfil
Re: ESPACIOS ENTRE TEXTBOX CON OTRO TEXTBOX Y LISTBOX CON OTRO LISTBOX
« Respuesta #1 en: 24 Junio 2021, 16:28 pm »

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'.
Código
  1. private txt as string
  2.  
  3. ' ...
  4.  
  5.  txt = Text33.Text & vbtab & Text22.Text  ' por ejemplo...
  6.  Printer.Print txt
  7.  ' ...
  8.  

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.
Código
  1.    dim BeginCols() as integer
  2.    dim AnchoCol as integer
  3.  
  4.    ' 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.
  5.    ' NOTA: Considera todas las columnas de igual tamaño, en otro caso modificar al gusto...
  6.    private sub InicializarImpresion(byval NumColumnas as byte)
  7.        dim j as integer, k as integer
  8.  
  9.        redim BeginCols(1 to numColumnas)
  10.  
  11.        AnchoCol  = ((printer.scalewidth - printer.scaleleftleft) \ numcolumnas)
  12.        BeginCols(1)= printer.scaleleftleft
  13.        for k= 2 to numcolumnas
  14.            BeginCols(k) = ((BeginCols(k-1) + AnchoCol )
  15.        next
  16.    end sub
  17.  

Código
  1.     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.
  2.     ...
  3.     call FormateareImprimir(Text33.Text, Text22.Text))  ' esto se debe invocar con cada línea con su par de textos...
  4.     ' ...
  5.  
  6.  
  7.    private function FormateareImprimir(byref Columna1 as string, byref Columna2 as string)
  8.        dim j as integer,  t as integer, txt as string
  9.  
  10.        t = printer.currenty
  11.        txt = FormatearPrn(columna1,AnchoCol-10)  ' -10 para que haya al menos siempre un espacio entre columnas.
  12.        printer.currentx = BeginCols(1)
  13.        Printer.Print txt
  14.  
  15.        txt = FormatearPrn(Columna2, AnchoCol-10)
  16.        printer.currentx = BeginCols(1): printer.currentY = t
  17.        Printer.Print txt
  18.  
  19.        ' saltamos a la siguiente línea...
  20.        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.
  21.    end function
  22.  
  23.    ' Recorta el texto si es preciso, para que no ocupe más del espacio destinado a la columna.
  24.    ' 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.
  25.    ' 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.
  26.    private function FormatearPrn(byref Texto as string, byval MaxAncho as integer) as string
  27.        dim w as integer, numchars as integer
  28.  
  29.        numchars = len(texto)
  30.        w = printer.textwidth(texto)
  31.        do while (w > Maxancho)
  32.            numchars = (numchars -1)
  33.            texto = left$(texto, numchars)
  34.            w = printer.textwidth(texto)
  35.        loop
  36.  
  37.        FormatearPrn = texto
  38.    end function
  39.  

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).


En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.754



Ver Perfil
Re: ESPACIOS ENTRE TEXTBOX CON OTRO TEXTBOX Y LISTBOX CON OTRO LISTBOX
« Respuesta #2 en: 24 Junio 2021, 18:36 pm »

HOLA ALGUIEN ME PUEDE AYUDAR ESTOY TRABAJANDO EN VISUAL BASIC 6.0

TENGO ESTE CODIGO

Printer.Print (Text33.Text); (Text22.Text)

LO QUE BUSCO ES QUE LA INFORMACION DE LOS TEXTBOX NO ESTEN JUNTAS SI NO QUE TENGAN UN ESPACIO ADECUADO 

EJEMPLO

TEXT33                       TEXT22

Y LO MISMO PERO CON LIST BOX

LISTBOX1                  LISTBOX2

GRACIAS SI ALGUIEN ME PUEDE AYUDAR

Saludos,

- Print puede utilizar el argumento Tab(n) para determinar un tabulado más preciso, por ejemplo primero puedes calcular o determinar el tamaño de tu texto más grande y a partir de él hacer la tabulación:

Código
  1. Private Sub Command1_Click()
  2.  Dim n As Integer
  3.  n = Len("12345678901234") + 2
  4.  
  5.  FontName = "Consolas"
  6.  Printer.Print Text1; Tab(n); Text2
  7.  Printer.Print "hola"; Tab(n); "nabucodonosor"
  8.  Printer.Print "columna1"; Tab(n); "col2"
  9.  Printer.Print "12345678901234"; Tab(n); "prado"
  10.  Printer.EndDoc
  11. End Sub
  12.  

Citar
Text1          Text2
hola           nabucodonosor
columna1       col2
12345678901234 prado

Por cierto, la tabulación por defecto es Tab(13)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
tomar de un textbox, cambiar y pegar en otro textbox
Programación Visual Basic
Nakp 9 3,841 Último mensaje 2 Septiembre 2006, 18:42 pm
por Nakp
Pasar listbox a textbox al hacer click en un valor del listbox
.NET (C#, VB.NET, ASP)
BrokerJoker 3 20,907 Último mensaje 13 Mayo 2012, 17:13 pm
por BrokerJoker
ListBox con TextBox
.NET (C#, VB.NET, ASP)
NetJava 6 2,314 Último mensaje 17 Enero 2013, 21:57 pm
por NetJava
Ayuda con ListBox y TextBox
Programación C/C++
Beaustyle 2 1,685 Último mensaje 16 Junio 2013, 15:58 pm
por aguml
Mover items seleccionados de ListBox e insertarlos en otro ListBox
Programación Visual Basic
Fran1946 2 1,356 Último mensaje 24 Octubre 2015, 01:28 am
por Fran1946
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines