Control extensible formulario access, propiedad autoextensible

Antes que nada agradecer enormemente la ayuda y el apoyo que ofrecéis los sabios de este magnífico programa que me tiene totalmente enganchado.

Preparando el módulo de facturación de mi base de datos para mi actividad profesional me surge la necesidad de tener los controles del subformulario "DetallePresupuesto" con controles autoextensibles, de manera que cuando hay que preparar un presupuesto con un contenido más extenso el control donde se escribe el detalle del servicio se amplíe verticalmente de manera que todo el texto quede a la vista.

He buscado por multitud de páginas, me he bajado ejemplos del Búho, Emilio Sancha y otros ilustres, pero no doy con la tecla. Desconozco si hay código vba con el que se pueda establecer automáticamente la altura del control en función del texto que contenga, y me consta que no soy el único que lo ha preguntado, pero no doy con ello.

1 respuesta

Respuesta
1

Y no lo encontrará, porque las propiedades Autoextensible y Autocomprimible solo están disponibles al imprimir el formulario. Hay 2 alternativas

1. Programar el evento Al hacer clic del control y hacer un zoom, algo como:

Este sería el código:

Private Sub ctlCarpeta_Click()
  SendKeys "+{F2}"
End Sub

Aunque es simple no permite controlar el ingreso de caracteres no validos y la longitud del texto.

2. Crear un botón de comando al lado del control para abrir un formulario y pasarle el texto que haya en el momento para continuar digitando. Es la que utilizo en mis programas, por ejemplo:

La segunda opción requiere de bastante código VBA, porque se debe utilizar llamada a la API de Windows para copiar y pegar texto y funciones para controlar caracteres etc. Si le interesa el código solicite un ejemplo a [email protected] favor en el asunto anotar "Quiero el código Zoom".

Gracias Eduardo. La segunda opción es la que actualmente utilizo, pero me resulta más engorrosa, sobre todo cuando al abrir el listado de facturas el contenido de los detalles de cada servicio aparece limitado a una línea y para ver el contenido completo tengo que utilizar dicho botón.

La última alternativa es darle una altura fija de 3 líneas, pero estéticamente es menos agradable (en mi opinión).

Gracias de nuevo!

También puede cambiar el tamaño de la fuente y fijar unas 2 líneas ya es cuestión de gusto. Igualmente, puede programar el evento "Al activar registro" del formulario y calcular de acuerdo con el número de caracteres las líneas necesarias, si se excede el límite abrir el formualario para ver el texto.

Algo como

Private Sub Form_Current()
  Dim ctalineas As Integer
  ctalineas = Round(Len(Me.Cargo) / 8, 0)
  If ctalineas > 2 Then
    MsgBox "Se requieren más de 2 líneas", vbInformation, "Le informo"
  End If
End Sub

En el ejemplo fije el ancho a 8 caracteres usted lo debe ajustar de acuerdo con las necesidades, cambie el Msgbox por en nombre del formulario donde va a mostrar el texto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas