Destruir Qrlabels creados en tiempo de ejecucion
Mi problema es q creo los label en tiempo de ejecucion, algo asi:
y cuando cierro el informe y vuelvo a realizar otro claro pues se duplica label1,label2, segun el nº d campos, y ahi me da error, me dice: Cita:
he probado en el onclose del fom q alberga el quicrep, hay alguna manera de saber cuando se cerró? Tambien he probado, en el boton donde llamo a QuickRep2.Preview, tras esto hacer:
el error: raised exception class EListError whit message 'list index of boun(7)' deciros q el 7 creo q es el valor de i en ese momento, es decir el elemento q deberia destruirse ( sino e suna coincidencia ) Saludos y espero me puedan ayudar Saludos |
Hola,
Podrías utilizar un objeto "TList" o "TObjectList" que instanciaras en una variable "global", o que estuviera dentro del "formulario de reportes" (nunca usé uno), es decir, suponiendo que su declaración fuera similar a un formulario normal y corriente, algo así:
Eso te permitiría ir creando instancias de "TQrLabel" e ir añadiendo sus referencias al objeto "TList" o "TObjectList". Al cerrarse el formulario o cuando estimaras más conveniente sería cuestión de liberar el objeto de marras. Ahora mismo no recuerdo si con "TList" basta con liberar dicho objeto o hay que "recorrer" la lista y liberar cada una de los objetos que contiene. Lo mismo te digo para "TObjectList". Tendrás que investigar o algún compañero nos sacará de dudas. Por otro lado, el error que refieres más arriba es bastante común, y es que, en estos casos en que recorremos los componentes de un formulario, por ejemplo, y vamos liberando algunos de ellos (dependiendo de X condición), hemos de iterar por dichos elementos con un bucle al revés que como suele hacerse, es decir, algo así:
|
ok Dec, muchas gracias por tu ayuda , asi ya sale lo que queria:
Pero aun asi, he de aprender a utilizar un objeto "TList", ya q nunca lo he hecho :eek: Saludos |
Hola,
Cita:
|
La verdad es q una vez q funciona asi, asi se queda :D pero digamos q lo tengo pendiente pues he leido ya varios hilos relacionados, tendre q buscar primero un buen libro, manual o hilo en el q se entre en detalle.
Segun se seleccione en un groupbox (lleno de checkbox) los campos que se quieren mostrar en un dbgird (junto con sus datos obviamente) con el nº de campos seleccionados sera el nº de columnas del quickrep, y ya te digo lei que para eso era mejor Tlist pero dandole vueltas encontre otra forma, jejjje veremos a ver si en un futuro no es un problema, Saludos y gracias |
Hola,
Bueno. Piensa que la descripción de la clase "TList" dice así: Cita:
Cita:
De todos modos, parece que "TObjectList" pone la cosa todavía un poco más interesante: Cita:
|
Es que... con un TObjectList sería muchiiiiisimo más facil, Sin necesidad de bucles, y pudiendo destruirlos y crearlos a voluntad:
Saludos |
La franja horaria es GMT +2. Ahora son las 19:34:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi