FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema destruyendo controles
Hola, tengo una aplicación en bcb6 que en un momento dado crea una serie de de controles tlabel y tcombobox dinamicamente, pero necesito también destruirlos dinamicamente, sin embargo el siguiente codigo no los destruye
(Los controles están metidos en un TPanel llamado PanelCustom) NumControles = PanelCustom->ControlCount; for(int i=0;i < NumControles ; i++){ PanelCustom->Controls[i]->Destroying(); } No hay manera, los controles no se destruyen. Necesito saber como se eliminan del todo controles a través del vector Controls[indice] o de que otra manera sería posible muchas gracias por adelantado un saludo |
#2
|
||||
|
||||
Hola,
No conozco prácticamente nada de C++ Builder, pero, en Delphi, el método que suele usarse para liberar objetos es "Free()", no "Destroying()", que, ahora mismo, es la primera vez que lo veo. Existe "Destroy", pero, no parece el mismo. Pero tal vez no puedas hacerme mucho caso, ya digo que de C++ Builder sé más bien poco. Otra cosa que sí que puede ser importante, es que cuando liberamos controles de un determinado contenedor, suele usarse un bucle "al revés", es decir, en Delphi, en lugar de:
... es menester utilizar este otro tipo de bucle:
Tal vez lo dicho pueda servirte de ayuda. O tal vez no. Veremos a ver. |
#3
|
|||
|
|||
Hola dec, gracias por contestar. Conozco el método free() pero cuando lo miro en la documentación del builder me pone que no lo invoque directamente.
Cuando lo intento con free() funciona pero me elimina un par de controles y entonces me da error como si no existiera el índice al que me refiero... voy a probar a eliiminar al revés, tal y como dices tu gracias, un saludo |
#4
|
||||
|
||||
Al menos en Delphi, Destroying es una propiedad Boolean que indica si el control se está destruyendo o no (en ningún caso destruye el control). La propiedad se usa normalmente en el desarrollo de componentes.
En la ayuda habrás visto que no se debe usar "Destroy", lo que debes usar es "free" (supongo ha sido un error de tecleo). El error de índices es lo comentado por dec. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Seguramente sencillo
Ya se que no tiene nada que ver, xo como no sabía donde meterme...hay alguna funcion en la libreria de C para pasar de alfanumerico,etc. a hexadecima?
l |
#6
|
|||
|
|||
Muchas gracias, teneis toda la razón del mundo
funciona perfectamente usando free()... el error me lo daba porque eliminaba ascendentemente en vez de al revés no caía en que al eliminar el primero de la lista (index 0) el index 1 pasa a ser el cero y así sucesivamente... al hacerlo descendente va de maravilla muchas gracias de nuevo un saludo |
#7
|
|||
|
|||
@Ary: La función que buscas es IntToHex
Formato: IntToHex(Valor,Dígitos) ejemplo: IntToHex(VariableEntera,2) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Controles ActiveX | senpiterno | Varios | 12 | 27-09-2004 20:14:47 |
controles bd o no? | walrus | Conexión con bases de datos | 1 | 04-08-2004 18:01:33 |
Parpadeo de controles | roman | Varios | 11 | 03-04-2004 07:56:59 |
Controles de un boton... | Tanix | Varios | 6 | 03-06-2003 09:56:08 |
Coleccion de Controles... | craven | OOP | 2 | 02-06-2003 17:09:33 |
|