FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Problemas con la creación de TTimer es tiempo de ejecución
Muy buenas a todos.
Estoy desarrollando una aplicación en el que una serie de elementos que vamos dando de alta hacen uso de los componentes TTimer. Mi problema es que a medida que voy dando de alta esos elementos necesito crearme un TTimer propio para ese elemento. Apriori parece que lo hace y le asigna una dirección de memoria al componente TTimer correspondiente y cambio la propiedad TTimer.Interval sin problemas, pero cuando lo habilito TTimer.enable:= true me da una excepción y me dice lo siguiente: 'Not enough timers available'. Esto sólo ocurre durante esa ejecución. Cuando vuelvo a ejecutar la aplicación y ese elemento que ya había sido dado de alta antes se carga en memoria, ya tiene reservado su timer y no me da problemas. Después de toda esta historia mi pregunta es: ¿Es que no se pueden crear timer en tiempo de ejecución? Espero vuestra ayuda. Muchas gracias!!! |
#2
|
|||
|
|||
Me sigo respondiendo un poco yo mismo y aunque sigo con dudas puede que le ayude a alguien mis conclusiones, aunque no soy un programador experto.
En la ayuda de Delphi viene que se puede crear los timer en tiempo de ejecución así que mi pregunta anterior ya está contestadas... pero ahora la pregunta es en qué estaba fallando antes... Pues bien sugiero una cosa a ver q responden los expertos. Al dar de alta un elemento como decía en mi primer mensaje hago lo siguiente:
En el form que he llamado TAgregarUnidadForm hago:
Nunca he sabido bien para q sirve el self que inserto en el Create. La verdad es que cuando comencé a programar lo vi en un ejemplo, lo usé y como funcionaba siempre lo hacía igual, pero ahora creo q sé para qué es. Si no me equivoco asocia el Timer creado con ese formulario y yo al liberarlo con el free pierdo el timer. ¿Algún experto me puede decir si lo q digo tiene sentido y es así? Creo q me servirá a mí y a muchos otros. Gracias... |
#3
|
||||
|
||||
Intento de solucion
yo soy de c++, pero creo que igual puede ayudar esto.
Hice un TTimer en tiempo de ejecucion de esta forma en la definicion de la clase de TForm1 en la parte public deberas definir Código:
TTimer *Timer1; y en la implementacion (por ej: en button1click) colocar Código:
Timer1=new TTimer(this); Timer1->Interval=1; Timer1->OnTimer=Timer1Timer; la segunda linea colocamos el intervalo, si colocas en 1 teoricamente tendras un llamado a "void __fastcall Form1::Timer1Timer(TObject *Sender)" cada 1 milisegundo, y si colocas 1000 tendras por cada segundo la tercera linea asignas el evento para este componente, este evento debe tener la forma de TNotifyEvent y sera llamado cada vez que se cumpla el tiempo definido en "Timer1->Interval" (Timer1.Interval en delphi) Última edición por grandmasterdari fecha: 14-04-2008 a las 14:28:22. |
#4
|
||||
|
||||
Hola vejerf, sobre la palabra clave Self, nos sirve para hacer referencia al objeto actual que en tu caso sería tu formulario. Cuando creas un componente en tiempo de ejecución debes asignarle el propietario de dicho componente en su constructor. Así como lo hiciste, donde el propietario de tu Timer sera tu formulario y con Seft haces referencia a dicho formulario
Sobre la liberación, cada vez que se crea un objeto es necesario liberar, pero como hemos creado un componente y le hemos asignado un padre, que en tu caso es el formulario, este formulario es el que se encarga de liberar todos sus componentes, por lo que ya no necesitas liberar tu Timer. Si estoy mal, ya nos corregiran. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
QuickReport y creacion de paginas en tiempo de ejecución | Torreblanca | Impresión | 2 | 19-12-2007 05:49:44 |
creacion de tabsheet del controlpage en tiempo de ejecucion | ercrizeporta | Varios | 6 | 01-03-2007 13:38:07 |
Creación de componentes en tiempo de ejecución | jymy788 | Varios | 2 | 27-01-2005 17:22:20 |
Creación de tabla en tiempo de ejecución | sledgehammer | Conexión con bases de datos | 3 | 16-09-2003 15:08:01 |
Creacion de componente en tiempo de ejecución | cone220 | OOP | 1 | 16-09-2003 03:47:16 |
|