¿Como adaptar editbox al alto del texto que contiene?

Hola, mi pregunta es la siguiente, ¿Es posible hacer que un editbox se adapta al texto que contiene?, me explico, estoy haciendo una aplicación en VFP de mensajería interna para una pequeña empresa; pero el problema que ellos me lo piden para que cada texto que envíe el usuario aparezca como "bocadillo" pero necesito que la editbox que utilizo para mostrar los mensajes se adapte al alto (height) del texto que contiene, osea que el texto de ese mensaje sea legible completamente. Gracias

Respuesta
1

Espero poder ayudarte:

.

En tu caso yo utilizaría para mostrar los mensajes que te llegan (que son de solo lectura porque es lo que te envían) en lugar de un editBox, un label. Y es porque el label tiene dos propiedades que te van a ser de mucha utilidad en tu caso; autosize y wordwrap.

.

Con estas propiedades y un pequeño truco vas a hacer bien fácil lo que necesitas, te explico:

.

Pone el label donde quieras con el alto de una línea y con el ancho que quieras y fíjate cuanto te da de ancho (supone que te da 300). Establecé la propiedad en autosize en .t. (se va a achicar el ancho, no te preocupes) y la propiedad wordWrap en .t.

.

Ahora, como lo que quieres cambiar es solo el alto y no el ancho haces así cada vez que cambias el valor de tu label (te doy un ejemplo con un código que podría ir en un botón):

.

thisform.label1.caption='Esta es una linea que tiene muchos caracteres para ver como funciona el label y se expande pero solo horizontalmente por el formulario.'

thisform.label1.width=300  && Aca lo que hacemos es poner fijo el ancho porque la propiedad es autosize

.

Lo que podrías hacer también es que el formulario se alargue con el cambio de label, así:

.

thisform.height=thisform.label1.top+thisform.label1.height 

.

Como consejo te diría que te fijes en la propiedad anchor de todos los objetos de tu form que acompañan a tu label así se mueven cuando el form se agranda y achica. Por ejemplo si en la esquina inferior izquierda tienes un botón, establecele la propiedad anchor a 12 así baja junto con movimiento del label.

.

Espero haberte podido ayudar. Christian de Keystone

www.keystone.com.ar

Hola Christian, muchas gracias por responder.

Veras lo intente con el label, pero como comprenderás este objeto tiene un límite de caracteres y esto me dificulta, por esa razón decidí utilizar el editbox.

Ya tengo solucionado el problema y me quedo de maravilla.

Adjunto Imagen de como me quedó.

1 respuesta más de otro experto

Respuesta
1

Un placer.

Lo que solicitas se puede hacer pero podrias tener algunas complicaciones referente al tipo de formato de fuente que uses en la escritura del text.

El editbox contiene la propiedad Height que es perfectamente modificable en tiempo de ejecucion.

No obstante, el problema que veo es el tipo de fuente del text. Si usaras el mismo tipo de letra siempre.. podrias medir una proporcion segun el tamaño del caracter. Por ejemplo: si usas siempre arial... podes configurar que al cambiar el tamaño de letra, tambien cambie el height del edit. Y como es el mismo tipo de letra no hay kilombo porque lo podes medir directamente. Por ejemplo:

Inserta un editbox en algun form y colocale de height inicial 23. Tipo de letra arial.

Inserta 4 commandbuttos ycolocale en caption coloca el tamaño de la letra que le vas a asignar al edit (10, 12, 14, 16).

En el evento click de cada uno respectivamente, coloca asi:

En el boton para tamaño 10

THISFORM.Edit1.FontSize = 10
THISFORM.Edit1.Height = 25

Tamaño 12

THISFORM.Edit1.FontSize = 12
THISFORM.Edit1.Height = 28

Tamaño 14

THISFORM.Edit1.FontSize = 14
THISFORM.Edit1.Height = 30

TAMAÑO 16

THISFORM.Edit1.FontSize = 16
THISFORM.Edit1.Height = 32

Y proba. Solo seria medir la proporcion del text para cada tamaño y listo. Asignas el height del edit. Al ser limitados los numeros de tamaño del text, el trabajo es realmente sencillo sin ninguna complicacion.

Avisame cualquier cosa!

Desde Managua, Nicaragua!

ravenn :D :D :D

Hola ravenn.

Veras a lo que me refiero es a que si en el editbox tengo "El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice" y el editbox tiene por ancho 200, yo pueda saber de alguna manera cuanto de alto necesita el editbox para que muestre completamente el texto sin necesidad de que el usuario tenga que desplazar el editbox.

Saludos

En ese caso, podrías contar la cantidad de caracteres o mejor dicho.. la longitud de la cadena "El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice" y asignarle cierta condición. Por ejemplo... si la longitud sobre pasa los 30 espacios o caracteres, ahí aplicas el estiramiento del control editbox.. algo así:

LOCAL lnLong, lnText

LnText = "El sabio no dice todo lo que piensa, pero siempre piensa todo lo que dice"

lnLong = LEN(ALLTRIM(lnText))

**--Si es mayor a 30

IF lnLong > 30

       thisform.editbox1.height = 100

       thisform.editbox1.width = 200

             **--Si es menor, regresa a su tamaño por defecto

            ELSE

                      **--Aqui ajusta las medidas.

ENDIF

THISFORM. Refresh

**--//

Proba y me avisas!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas