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