Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: LeandroA en 26 Agosto 2008, 06:30 am



Título: Mostrar texto en columna?
Publicado por: LeandroA en 26 Agosto 2008, 06:30 am
buenas tengo una duda que hace tiempo me viene acosando
Como puedo mostrar texto en columna dentro de un textbox,

muestro un ejemplo
Código:
Dim sResult As String

Private Sub Form_Load()
    Me.AutoRedraw = True

    AddData "Rosario", "2.80", "Estacional"
    AddData "Santa Fe", "3.13", "Crece"
    AddData "Corrientes", "4.22", "Baja"
    AddData "Formosa", "4.44", "Crece"
    AddData "Posadas", "5.30", "Baja"
    AddData "Iguazú", "13.50", "Crece"
    AddData "Andresito", "0.82", "Baja"
    AddData "Villa Constitución", "2.35", "Crece"
   
   
   
    Debug.Print sResult
    Me.Print sResult
   
End Sub

Private Sub AddData(D1 As String, D2 As String, D3 As String)
    sResult = sResult & Tabular(D1, 25) & Tabular(D2, 6, True) & Space(10) & Tabular(D3, 10) & vbCrLf
End Sub

'Private Sub AddData(D1 As String, D2 As String, D3 As String)
'    sResult = sResult & D1 & vbTab & vbTab & D2 & vbTab & D3 & vbCrLf
'End Sub


Private Function Tabular(Palabra As String, Espacio As Long, Optional AlignRight As Boolean) As String
    If AlignRight Then
        Tabular = Space(Espacio - Len(Palabra)) & Palabra
    Else
        Tabular = Palabra & Space(Espacio - Len(Palabra))
    End If
End Function

bien si prueban el ejemplo veran que en la ventana de inmediato se muestra correctamente pero al mostrar estos datos en un textbox o con la funcion me.print se desalinean.
si uso la segunda funcion  AddData (La que esta comentada) pues bien surge un problema con respecto al ultimo items (Villa Constitución) ya que este es mas largo que los superiores o en el primer items que al ser muy corto la tabulacion no se nota, entonces como se cuando deberia aplicar un doble o triple tab o ninguno?

Saludos ;)


Título: Re: Mostrar texto en columna?
Publicado por: APOKLIPTICO en 27 Agosto 2008, 00:00 am
Tu problema es que estas usando pocos tabs para alinear el texto, pero el tema es que la "longitud" del texto, no se cuenta con la cantidad de caracteres, sino con la longitud propiamente dicha. X ejemplo, en la palabra "rosario", que tiene 7 caracteres, tenes que agregar un tab extra, pero en la palabra "formosa", si le agregas uno mas, se te desalinea...
Esto en cuanto a la segunda funcion AddData.
En la primera, esa es la que tenes que usar, pero haciendole un par de modificaciones a la funcion Tabular:

Código
  1. Private Function Tabular(Palabra As String, Espacio As Long, Optional AlignRight As Boolean) As String
  2.    If AlignRight Then
  3.        Tabular = Space(Espacio - Len(Palabra)) & vbTab & Palabra & vbTab
  4.    Else
  5.        Tabular = Palabra & Space(Espacio - Len(Palabra)) & vbTab
  6.    End If
  7. End Function

A mi me quedo todo ordenadito, espero que te funcione a vos tambien, pero xq no usas mejor ListBox o varios Textbox?, o incluso varios Label...

Espero que te sirva
Un abrazo
APOKLIPTICO


Título: Re: Mostrar texto en columna?
Publicado por: LeandroA en 27 Agosto 2008, 00:47 am
Hola Gracias si en el formulario se alinea, pero en un textbox no, pero no importa ya esta solucionado,en otro foro me dieron la solucion, que es utilizar una font de caracteres fijos por ejemplo "Courrier"

Saludos