ACCESSoTOTAL / Dudas

En este repositorio resolvemos tus dudas sobre los proyectos que estás realizando en Access y VBA
1 stars 1 forks source link

MOSTRAR U OCULTAR COLUMNAS EN CUADRO DE LISTA #29

Open nito1972 opened 1 year ago

nito1972 commented 1 year ago

Hola Juanjo, una duda sobre ancho de columnas de un cuadro de lista. Tengo un formulario con dos cuadros de lista en el primero cargo los titulos de una tabla y en el segundo todo los datos. He creado un procedimiento para el primer cuadro de lista que en función del item que seleccione me oculta esa misma columna en el segundo cuadro de lista e inclusive puedo ocultar varias, para mostrar solo hay que desmarcar. El procedimiento es este:

Private Sub ListaTitulos_AfterUpdate() Dim X As Integer For X = 1 To ListaTitulos.ListCount - 1 If ListaTitulos.Selected(X) Then ancho = ancho & "0cm;" Else ancho = ancho & ";" End If Next Me.ListaResultados.columnWidths = ancho End Sub

`

Entonce la duda es la siguiente: Hay posibilidad que los anchos de columna se puedan determinar o igualar al ancho que dicho campo tiene en la propia tabla? Según el procedimiento que te adjunto siempre pone el mismo ancho y a veces hay campos que son mas anchos unos que otros. Como idea en Excel se haría asi: ancho = Int(ActiveSheet.Columns(i + 1).Width) + 5

Gif: aJuanjo13

Saludos y buen día

lunasoft2001 commented 1 year ago

La idea me parece intertesante. Deberías coger la propiedad ancho de columnas (que están todas juntas separadas por ; en un solo campo) y pasarle el valor correspondiente a cada columna. Tal vez sería bueno crear una función que devuelva el ancho de un campo de una tabla.

nito1972 commented 1 year ago

Hola Juanjo;

La dificultad y lo interesante es que los anchos vayan acorde a los campos mostrados u ocultados. Me explico: En la Tabla: Campo1=2cm Campo2=4cm Campo3=3 cm etc Entoces si yo oculto la el Campo1 (Columna0 del cuadro de lista) la primera columna tiene que tener el ancho 4cm por lo cual no puedo determinar los anchos porque no es fija la columna que voy a ocultar, puede ser la 1, 2 , 3 etc Con lo cual el ancho debe ser un dato que se esté actualizando a medida que vayamos mostrando u ocultando columnas. Pregunté a ChatGpt y me dan este procedimiento pero no funciona:

ancho = ancho & (DLookup("DisplayControlWidth", "MSysObjects", "Name='tbMayor'") + 5) & ";"

Y ya no sé por donde tirar. Si se te ocurre algo me comentas. Saludos