** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Borrar controles
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Borrar controles

 Responder Responder
Autor
Mensaje
a.alf Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Octubre/2006
Localización: Castello España
Estado: Sin conexión
Puntos: 456
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita a.alf Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Borrar controles
    Enviado: 01/Febrero/2023 a las 13:36
Buenos días.

Estoy modificando un ejemplo de Bbyronlcl "Crear mover eliminar controles en tiempo ejecución", en vez de crear txtbox creo imágenes, en el ejemplo elimina el control que esta seleccionado, y yo necesitaría eliminar todos los creados.
Hay alguna manera de borrar todos los controles de un formulario mediante codigo vba?

Gracias.
Un saludo.

Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Febrero/2023 a las 14:01
Pues algo así como:

Dim Ctl As Control

For Each Ctl In me.Controls
   ...
   ...
Next
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
a.alf Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Octubre/2006
Localización: Castello España
Estado: Sin conexión
Puntos: 456
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita a.alf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Febrero/2023 a las 18:55
Hola Jesús, primero gracias por tu tiempo.
El siguiente código esta en un botón de un formulario "Mover controles" y los controles están en un subformulario "FormCtrls":
Private Sub btnEliminar_Click()
On Error GoTo Err_btnEliminar_Click

Dim strIdCtrl As String
Dim R As Long

    'Verificar si hay algún control seleccionado (resaltado)
    strIdCtrl = Nz(Me.lblIdControl.Caption, "")
    If Nz(strIdCtrl, "") = "" Then Exit Sub
    
    'Confirmar con el usuario
    R = MsgBox("¿Confirmas que deseas eliminar el control " & Me.lblTitulo.Caption & "?", _
    vbExclamation + vbYesNo, "Eliminar control")
    If R = vbNo Then Exit Sub
    
    'Eliminar control
    Me.Subformulario.SourceObject = ""
    Call EliminarControl(strIdCtrl)
    'Call ActualizarControlesEnFormulario
    Me.Subformulario.SourceObject = FormCtrls
    
    'reestablecer etiquetas
    Me.lblIdControl.Caption = ""
    Me.lblTitulo.Caption = ""
    Me.lblIngreso.Caption = ""
    Me.lblModificacion.Caption = ""

Exit_btnEliminar_Click:
    Exit Sub

Err_btnEliminar_Click:
    MsgBox Err.Description, vbCritical, "Nuevo control"
    Resume Exit_btnEliminar_Click
End Sub

y el siguiente codigo es el que hace la eliminacion del control seleccionado:

Sub EliminarControl(strIdCtrl)
Dim strSQL As String
    If CurrentProject.AllForms(FormCtrls).IsLoaded Then Exit Sub
    'eliminar control
    DoCmd.OpenForm FormCtrls, acDesign, , , , acHidden
    DeleteControl FormCtrls, strIdCtrl
    'eliminar procedimientos
    Call EliminarProcedimiento("Sub " & strIdCtrl & "_MouseDown")
    Call EliminarProcedimiento("Sub " & strIdCtrl & "_MouseUp")
    DoCmd.Close acForm, FormCtrls, acSaveYes
    'eliminar registro
    strSQL = _
    "DELETE Controles.IdControl " & _
    "FROM Controles " & _
    "WHERE (((Controles.IdControl)='" & strIdCtrl & "'));"
    CurrentDb.Execute strSQL
End Sub

Ahora mismo no veo donde poner el bucle para borrar el control, y aun menos como seleccionar el siguiente control para seguir borrando el resto de controles.

Gracias.
Un saludo.

Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 01/Febrero/2023 a las 19:24
Supongo que lanzarás un proceso que sea el que vaya a eliminar los controles ¿no?, ahí deberá estar.
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
a.alf Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Octubre/2006
Localización: Castello España
Estado: Sin conexión
Puntos: 456
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita a.alf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 10:20
Hola.
He creado un procedimiento  y al llamarlo meda error en la clausula "Me".
Sub EliminarControltot(strIdCtrl)
 Dim Ctl As Control
    If CurrentProject.AllForms(FormCtrls).IsLoaded Then Exit Sub
    'eliminar control
    DoCmd.OpenForm FormCtrls, acDesign, , , , acHidden
    For Each Ctl In Me.Controls
    DeleteControl FormCtrls, strIdCtrl
    DoCmd.Close acForm, FormCtrls, acSaveYes
    Next
End Sub
Esto es la imagen del error que me muestra:

Un saludo.

Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 13990
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 10:41
A ver con algo así:

    Dim Ctl As Control

    DoCmd.OpenForm Formulario, acDesign
    For Each Ctl In Forms(Formulario).Controls
        .....
    Next
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
pezuarco Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 04/Octubre/2008
Localización: Colombia
Estado: Sin conexión
Puntos: 405
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pezuarco Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 13:58
buen  diia  para  todos.....


me podría  indicar  el motivo  de Borrar Controles???.


gracias

Muchas veces lo hacemos dificil....deberiamos verlo sencillo....todo es facil... necesitas logica ..paciencia...sapiencia....
Arriba
a.alf Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Octubre/2006
Localización: Castello España
Estado: Sin conexión
Puntos: 456
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita a.alf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 19:02
Hola.
El motivo de borrar los controles es que utilizo la aplicación para calcular el ancho y alto de una placa de componentes de un cuadro eléctrico.
 Tengo un combo donde elijo el componente y lo inserto en una línea ( esto es el control que genero y es una imagen).Voy generando líneas de componentes, hasta que están todos situados, mas o menos donde nos interesan.
Una vez el diseño grafico esta completo, calculo la línea mas ancha y la suma de los altos de todas las líneas y saco un ancho y alto mínimo de la placa del armario a utilizar.
Una vez realizado e imprimido dicho calculo los datos y las imágenes generadas no me sirven de nada, y para hacer otro calculo tengo que borrar los controles (imagen) uno a uno.
Este es el motivo de borrarlos todos desde un botón o al cerrar el formulario.
Gracias.

Aqui dejo una imagen de la aplicación.


Gracias.

Un saludo.

Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1510
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 19:53
Solo un apunte: si no ha cambiado Access con los años, los formularios tienen un límite en cuanto al número de controles. Pero a diferencia de otros sistemas, aquí cuentan los controles que eliminas. Es decir, si agregas y borras muchos controles, llegará un momento en el que Access te dirá que ya no se pueden agregar más controles.

De la ayuda de Access:

[...] Número de controles y secciones que se pueden agregar a lo largo de la vida del formulario o informe: 754[...]

Si necesitas crear y borrar controles, quizá te sea más sencillo colocar 200 controles (por decir un número), y mostrarlos y ocultarlos dependiendo de los elementos eléctricos a montar en el cuadro. También puedes usar un formulario continuo, donde solo cuentan los controles de un registro.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1510
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita pitxiku Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 20:07
Otra cosa: como veo que en el pantallazo aparecen elementos de Schneider, ¿Has probado su software eDesign?

- https://www.se.com/es/es/product-range/42023146-edesign/
Arriba
a.alf Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 19/Octubre/2006
Localización: Castello España
Estado: Sin conexión
Puntos: 456
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita a.alf Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 02/Febrero/2023 a las 22:03
Buenas noches.
Pitxiku gracias por el apunte.

Creo que voy a cambiar el enfoque, insertare todos los controles necesarios e iré cargando las imágenes según mis necesidades.

El software eDesign, esta mas enfocado a electricidad de vivienda, y nosotros nos dedicamos a automatismos, con lo cual no se nos acopla.

Gracias a todos por el tiempo dedicado a ayudarme.
Se puede cerrar el hilo.



Un saludo.

Si alguien te regala su tiempo, agradecelo eternamente, ya que te está dando algo que nunca recuperará.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable