Temas activadosTemas activados  Lista de Usuarios del ForoLista de Usuarios  CalendarioCalendario  Búsqueda en el ForoBúsqueda  AyudaAyuda
  RegistrarRegistrar  ConectarConectar
Página anterior             ** NORMAS DEL FORO **            Página siguiente
Access y VBA
 Foro de Access y VBA > Access y VBA > Access y VBA
Icono de mensaje Tema: Borrar controles Enviar mensaje Enviar mensaje
Página  de 2 Siguiente >>
Autor Mensaje
a.alf
Colaborador
Colaborador
Avatar

Agregado: 19/Octubre/2006
Lugar: Castello España
Estado: Desconectado
Mensajes: 441
 Responderbullet 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á.
IP IP conectada
Mihura
Administrador
Administrador
Avatar

Agregado: 06/Mayo/2005
Lugar: En la dehesa
Estado: Desconectado
Mensajes: 9723
 Responderbullet 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
IP IP conectada
a.alf
Colaborador
Colaborador
Avatar

Agregado: 19/Octubre/2006
Lugar: Castello España
Estado: Desconectado
Mensajes: 441
 Responderbullet 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á.
IP IP conectada
Mihura
Administrador
Administrador
Avatar

Agregado: 06/Mayo/2005
Lugar: En la dehesa
Estado: Desconectado
Mensajes: 9723
 Responderbullet 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
IP IP conectada
a.alf
Colaborador
Colaborador
Avatar

Agregado: 19/Octubre/2006
Lugar: Castello España
Estado: Desconectado
Mensajes: 441
 Responderbullet 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á.
IP IP conectada
Mihura
Administrador
Administrador
Avatar

Agregado: 06/Mayo/2005
Lugar: En la dehesa
Estado: Desconectado
Mensajes: 9723
 Responderbullet 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
IP IP conectada
pezuarco
Asiduo
Asiduo
Avatar

Agregado: 04/Octubre/2008
Lugar: Colombia
Estado: Desconectado
Mensajes: 309
 Responderbullet 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....
IP IP conectada
a.alf
Colaborador
Colaborador
Avatar

Agregado: 19/Octubre/2006
Lugar: Castello España
Estado: Desconectado
Mensajes: 441
 Responderbullet 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á.
IP IP conectada
pitxiku
Colaborador
Colaborador
Avatar

Agregado: 27/Septiembre/2017
Lugar: En mi casa
Estado: Desconectado
Mensajes: 653
 Responderbullet 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.
IP IP conectada
pitxiku
Colaborador
Colaborador
Avatar

Agregado: 27/Septiembre/2017
Lugar: En mi casa
Estado: Desconectado
Mensajes: 653
 Responderbullet 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/
IP IP conectada
Foro de Access y VBA > Access y VBA > Access y VBA
Página  de 2 Siguiente >>
Enviar mensaje
Versión para imprimir Versión para imprimir

Seleccione Foro
no puedes enviar nuevos Temas al Foro
no puedes responder a los Temas de este Foro
no puedes borrar los mensajes en este Foro
no puedes editar los mensajes de este Foro
no puedes crear encuesta en este Foro
no puedes votar en encuesta en este Foro

Bulletin Board Software by Web Wiz Forums version 8.06
Copyright ©2001-2006 Web Wiz Guide
NORMAS DEL FORO