Mostrar texto en columna?

Iniciado por LeandroA, 26 Agosto 2008, 06:30 AM

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

LeandroA

buenas tengo una duda que hace tiempo me viene acosando
Como puedo mostrar texto en columna dentro de un textbox,

muestro un ejemplo

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

APOKLIPTICO

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 (vb) [Seleccionar]
Private Function Tabular(Palabra As String, Espacio As Long, Optional AlignRight As Boolean) As String
    If AlignRight Then
        Tabular = Space(Espacio - Len(Palabra)) & vbTab & Palabra & vbTab
    Else
        Tabular = Palabra & Space(Espacio - Len(Palabra)) & vbTab
    End If
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
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

LeandroA

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