| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Mar 01 Sep, 2009 4:24 pm Asunto: AutoCreate Forms & Available Forms |
|
|
Hola amigos del foro
Quiciera hacer una pregunta del BCB 6. Cuando pinchamos en Project->Options->Forms, hay dos posibilidades de poner los forms una en Autocreate y otra en Available, no tengo bien claro para que sirven estas dos opciones, ni cuales son sus utilidades, solo he visto que cuando se usan formularios padre e hijo (MDI) los hijos se deben poner en Available, pero mas que esto no se.Podrian explicarme que utilidades tienen estas opciones, y se es conveniente usarlas?
Gracias y saludos _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
tronxx Lt JG


Registrado: 30 May 2003Mensajes: 56Ubicación: Merida, Yucatan, Mexico
|
Publicado: Mar 01 Sep, 2009 7:08 pm Asunto: |
|
|
Hola amigo, te voy a decir mi experiencia:
1.- Normalmente solo dejo en autocreate las formas que quiero que vea mi usuario automáticamente
2.- Pongo en available las formas que quiero que accesen por alguna otra forma como un menú o algo.
Puedes checar un programa completo desde este enlace:
[url] http://www.bastoexpress.com/FacturExpress/instalacion/instalar.html
[/url]
y podrás observar como uso las formas.
Gracias _________________ La caja decía, requiere Win95 o superior así que instalé Linux. |
|
| Volver arriba |
|
 |
ZHAX1 Master

Registrado: 09 Mar 2007Mensajes: 191
|
Publicado: Mie 02 Sep, 2009 7:09 am Asunto: |
|
|
si los pones en avaiable no se autocrean los formularios, los creas tu con new.
Saludos. |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 03 Sep, 2009 11:50 am Asunto: |
|
|
Hola amigos
muy agredecido de la respuesta de los dos, pero aun no me queda claro cuales son las ventajas de poner los formularios en autocreate o en available
gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 03 Sep, 2009 3:10 pm Asunto: |
|
|
Bien un poco largo de explicar que trataré de hacerlo lo mas sencillo.
Establecer todos los Form's en la parte Autocreate puede resultar un consumo excesivo de memoria ram, pues si pones todos los formularios "disponibles" para el usuario y este solo usa 2 o 3 como parte principal, quiere decir que los otros formularios que aún no se han usado, existen en la memoria de la computadora y "viven" literalmente desde que inicia el ejecutable hasta que este se muera o cierre.
El ponerlos en Available, significa que el programa reconoce que estos existen pero que aun no pueden ser usados, si no que deben ser creadas instancias a travez de la forma.
| Código: | TForm23 *formNo23 = new TForm23(this);
form23->Show(); // puede ser asi |
o bien puede ser
| Código: | TForm23 *formNo23 = new TForm23(this);
form23->ShowModal(); // mas efectiva para liberar memoria
delete form23; // |
Cuando existen varios Forms en la parte de Auto-create, el sistema debe elegir cual es el form que debe presentarse primero, si tienes 60 formularios dentro de Auto-create form, pues primero se deben crear los 60 formularios y posteriormente tu aplicación se ejecuta, cuando pasas los formularios que no deben crease de manera automatica a la parte de Available el consumo de memoria ram se optimiza y tu ejecutable tarda menos, consumes menos recursos de maquina y tu sistema se vuelve mas rápido, todo ello por que solo has puesto en Auto-create el o los formularios que deben iniciar primero.
En algunos casos o generalmente se usa que en la parte de Auto-create se establezcan:
- Modulos de Datos
- Programa Principal (Menú)
- Algún form que sea extricamente necesario mantenerlo "vivo" durante todo el programa
Y en la parte de Available todos aquelllos formularios que el programa requiera.
Espero que esta información te sea de útilidad y tu pregunta haya sido contestada.
Saludos!! _________________
 |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 03 Sep, 2009 4:23 pm Asunto: Agradecido |
|
|
Hola Cesar
Tremendamente agradecido con tu explicacion, gracias tambien a los amigos que me contestaron anteriormmente...
Cesar solo me quedan pequeñas dudas aca te dejo un pedazo de mi codigo, por si tienes la oportunidad de revisarlo e indicarme si lo hago bien o me falta algo me mandes sugerencias, gracias
en el Formulario principal, para hacer la llamada
| Código: | if (frmAgregar == NULL){
frmAgregar = new TfrmAgregar(this);
frmAgregar->Show();
} |
en el formulario que se creo al cerrar
| Código: | Action = caFree;
frmAgregar = NULL; |
como puedes ver Cesar lo que hice fue similar a como se hace en los formularios MDI, porque es lo que maso menos estuve viendo un tiempo, pero si no asi , por favor explicame.
mensje editado
Cesar ahora mismo intente ponerlo en ShowModal en ves de Show y me da un error que dice Can not make a visible window modal... que puede suceder?
gracias y saludos _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
tronxx Lt JG


Registrado: 30 May 2003Mensajes: 56Ubicación: Merida, Yucatan, Mexico
|
Publicado: Jue 03 Sep, 2009 6:35 pm Asunto: |
|
|
las MDI child no pueden ser modales. Yo creo un frame y hago una forma MDI y le pego el Frame, y cuando necesito que sea una vista Modal
creo una forma en tiempo de ejecución y le pego el frame
| Código: |
Tdlg_okcancel* Dlg_datos;
Dlg_datos = new Tdlg_okcancel (this);
Dlg_datos->AutoSize = false;
TFrame_datosemp *Frame_datosemp;
Frame_datosemp = new TFrame_datosemp(Dlg_datos);
Dlg_datos->Caption = "Datos del Empleado";
Dlg_datos->Width = pnl_datosemp->Width + 80;
Dlg_datos->Height = pnl_datosemp->Height + 100;
Frame_datosemp->Parent = Dlg_datos->Panel1;
Frame_datosemp->inicializa();
Frame_datosemp->edt_codvnd->Value = dm->qry_maxidvnd->FieldByName("clave")->AsInteger + 1;
if(Dlg_datos->ShowModal() == mrOk) {
// Aqui pones lo que tengas que poner
}
|
el dialg_okcancel es una forma que solo tiene
| Cita: |
______________________________
| panel1 |
|---------------------------------------- |
| [OK] [CANCEL] |
|_____________________________|
|
si quieres que te pase un ejemplo visita mi página http://www.batoexpress.com y mándame un correo tron_xx@hotmail.com _________________ La caja decía, requiere Win95 o superior así que instalé Linux. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 03 Sep, 2009 9:00 pm Asunto: |
|
|
Efectivamente los Form's tipo MDI child, no pueden mostrarse como ShowModal de la manera que lo estas haciendo, esto conlleva a que la propiedad Visible de tu form se encuentra en True.
Debes generar un analisis de tu software para determinar que Form's deben iniciar, que Form's deben crearse a petición del usuario y algo muy importante, debes indicar que Form's deben presentarse con ->ShowModal() ya que esta forma es muy util, para cuando se requiere la participación del usuario en una respuesta concreta y no se puede o debe continuar hasta que el usuario haya realizado una petición o algun movimiento que el sistema debe tratarlo solo. _________________
 |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Jue 03 Sep, 2009 9:43 pm Asunto: |
|
|
Gracias migos por responder
O me fui del tema o ando perdido.Hasta ahora yo no he dicho que estoy haciendo forms tipo MDIChild, solo le dije a Cesar que estaba mostrando los formularios que estaban en Available como indican en el foro que deben mostrarse los MDIChild, porque realmenete no se de que otra forma mostrarlos. Pero esos form que estan en Available los tengo en FormStyle=fsNormal no en MDIChild y la cuestion ahora que nos entendemos es: como puedo hacer para mostrar esos forms de tipo modal?
o es que al ponerlos en available ya se debe tratar con ellos como los de tipo MDI Child?
por favor orientenme, gracias _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Vie 04 Sep, 2009 6:36 am Asunto: |
|
|
Es correcto lo que me comentas, lo unico que nos ha llevado a los MDI-Child, es que cuando te aparece el mensaje que no pueden ser creados por que estan visibles , es por que tienen la propiedad visible a true, esa propiedad solo se establece de manera automatica a true, cuando han sido MDI-Child, por ello era el comentario anterior.
Pues solo eso, lo importante es que revises los formularios y verifiques aquellos que tienen la propiedad visible a true.
Saludos. _________________
 |
|
| Volver arriba |
|
 |
ifrit Master


Registrado: 12 Jun 2007Mensajes: 509Ubicación: La Habana, Cuba
|
Publicado: Vie 04 Sep, 2009 12:40 pm Asunto: |
|
|
gracias Cesar, ya entendi, muy agradecido , mis respetos _________________ Todos somos ignorantes, lo que no todos ignoramos lo mismo... |
|
| Volver arriba |
|
 |
|