![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Solución
Creo que la solución es mucho mas simple y que te permite pasar cualquier tipo de parámetro. Efectivamente pasa por conocer el funcionamiento de Builder con las VCL.
Existen dos tipos de formulario, los autocreados, por defecto, y los disponibles. Al definir un formulario, Builder lo asume como autocreado, de forma que no tenemos que llamar explícitamente al constructor para crearlo. Esto choca al programador en C++. En opciones del proyecto, podemos pasar un formulario autocreado a disponible, que quiere decir "no esta creado, solo definido y por tanto disponible" Este tipo, disponible, se comporta como cualquier objeto definido en C++. De hecho y según tu código, es así como tu quieres usarlo puesto que lo creas con un new y luego lo destruyes. Te aseguro que si lo defines como disponible, podrás pasar un int en el constructor. Saludos. Última edición por escafandra fecha: 17-02-2008 a las 22:11:28. |
|
#2
|
||||
|
||||
|
Pregunta de diseño:
¿es realmente necesario ese parámetro para la construcción de la ventana? - Si, sigue como vas. - No, crea una propiedad y la asignas después de crear la ventana. Ejemplo de un ProgressBar: podría pensarse que los límites (Max y Min) formase parte del constructor del componente, pero si te fijas, son propiedades. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#3
|
|||
|
|||
|
Hola a todos,
el formulario no se crea automaticamente al ejecutar la aplicacion, ya que solo dejo como formularios autocreados el main form. Respecto a si con un short da error la verdad es que no lo he probado pero es una buena idea aunque creo que pudiera dar el mismo resultado. De todas formas muchas gracias por las ideas, siempre entre todos sacaremos algo mas en claro que una sola mente. Un saludo |
|
#4
|
||||
|
||||
|
Cita:
De todas formas tu hablas de un Form1 (TForm1(TComponent* Owner, int x)), este por defecto, y según los denomina Builder, es el mainForm. Te comento esto porque ese siempre es autocreado. En este caso no tiene sentido el paso de parámetros en el constructor. Yo siempre les doy otros nombres mas personales... Repito, a mi con los formularios disponibles, no me pasa el error "Stack Overflow". Repasa toda la configuración de tu proyecto.... Saludos. |
|
#5
|
||||
|
||||
|
Al añadir un parámetro, te estas cargando toda la herencia. Además de hacer incompatible tu ventana con toda la VCL (de ahí el problema de autocreate Forms).
La ventana ya se podía crear sin tu parámetro "x", eso quiere decir, que no es realmente necesario modificar el constructor. Se debe crear una propiedad, todo lo demás son chapuzas, por mucho C++ que se use. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#6
|
||||
|
||||
|
No creo que te cargues la herencia al colocar un parámetro en un constructor de una clase VCL.
El hecho de que ese parámetro sea una propiedad, no cambia nada, de hecho cualquier elemento de la clase que, no sea una función, es una propiedad. En ocasiones ese parámetro, no tiene porqué almacenarse en ninguna variable de la clase, y por lo tanto deja de ser una propiedad. Estoy de acuerdo que posiblemente ese parámetro pueda pasarse fuera del constructor, pero eso no quiere decir que no pueda hacerlo como ha decidido. de hecho al hacerlo así se simplifica la sintaxis. Yo suelo programar un formulario que denomino TConfig al que le paso un parámetro en el constructor que es otra clase o estructura con los datos de la configuración de mi programa. Esta forma de abordar el problema me facilita mucho la tarea. Por otro lado es la forma de programar en C++, y aunque las VCL se salen un poco de la ortodoxia, no son incompatibles. Son formas diferentes de ver las cosas. Saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Stack overflow al reabrir una tabla | jzginez | Conexión con bases de datos | 1 | 24-04-2007 16:52:53 |
| Stack Overflow | agonzalez | Varios | 5 | 08-12-2006 22:26:46 |
| Stack Overflow | Mariana | Varios | 14 | 30-10-2003 11:37:47 |
| Pasar un parametro en la llamada a un form | apicito | OOP | 17 | 13-08-2003 12:30:45 |
|