Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Texbox Multilinea (AYUDA)

Iniciado por avalontm, 06 de Julio de 2015, 12:40:35 AM

« anterior - próximo »

avalontm

hola , alguien podria orientarme de como hacer que en un texto sea multi linea?

la idea seria que el texto no se salga de la region y que pudiera ser multilinea, y se si puede con scroll.

he estado batallando algunos dias y no logro poder crearlo :c

es par amostrar la informacion de la carta que aparece al lado izquierdo abajo de la carta grande

Hechelion

OMG, se ve estupendo el trabajo que estás haciendo, mis felicitaciones.

Sobre tu pregunta, la librería tiene las funciones FONT_SystemGetTextWidth y FONT_SystemGetTextHeight para determinar cuantos pixel va a utilizar determinado string y con eso ya puedes hacer rutinas para ajustar el texto.

acá te dejo el código que yo uso para ajustar el texto de forma horizontal (es para vb .net). Eso si, esta rutina no es recomendable llamarla en cada ciclo, lo mejor es llamarla solo una vez cuando cargues el texto que vas a mostrar, por ejemplo, cuando se haga clic sobre la carta.

    Public Function Ajustar_Texto(ByVal nCadena As String, ByVal nFont As Integer, ByVal nAncho As Integer) As String
        Dim resultado As String = ""
        Dim palabras() As String = Split(nCadena, " ") 'Generamos un array con cada palabra que contenga el texto
        Dim tempCadena As String = "" 'Almacena la cadena de texto temporal con la cual estamos trabajando

        If oGFX.FONT_SystemGetTextWidth(nFont, nCadena) > nAncho Then 'Comprobamos si el texto original es más grande que el ancho asignado, de ser así entramos en la rutina para recortar el ancho
            For Each palabra In palabras 'Recorremos todo el array de palabras que componen el texto a ajustar
                If (oGFX.FONT_SystemGetTextWidth(nFont, tempCadena) + oGFX.FONT_SystemGetTextWidth(nFont, palabra)) < nAncho Then 'Comprobamos cuando mide la lína temporal + la palabra que estamos agregando
                    'Si el tamaño es menor al ancho máximo, agregamos la palabra a la línca temporal
                    tempCadena = tempCadena & palabra & " "
                Else
                    'Si el tamaño es superior, entonces agregamos una núeva línea
                    resultado = resultado & tempCadena & vbCrLf
                    tempCadena = palabra
                End If
            Next
            resultado = resultado & tempCadena
        Else
            resultado = nCadena
        End If

        Return resultado
    End Function


Lamentablemente no he programado ninguna rutina para un ajuste vertical, pero lo que podrías hacer es con la función oGFX.FONT_SystemGetTextHeight es calcular cuando mide cada línea de texto y con eso calculas cuantas líneas puedes mostrar. Yo creo que con eso podrías programar la aparición de un ascensor pero si tienes problemas avisa por acá y veo si puedo programar un ejemplo.

Saludos.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.