PDA

Ver la Versión Completa : Cambiar Formulario Principal en Unigui


Neeruu
07-03-2013, 14:33:02
Hola a todos...

Estoy desarrollando una aplicación en Unigui, y por esas cosas de la vida, necesito que mi formulario principal (el que se abre primero) sea otro... o sea necesito cambiar mi formulario principal...

Donde puedo realizar esto?

Aclaro que todos los formularios que tiene mi aplicación son del tipo Aplication Form...
Esto esta bien? o solo el principal debería de ser Aplication Form y los demas del tipo Free Form?

Saluda Atte Neeruu!!!:)

fremen
01-04-2013, 23:56:07
Hola

Es un poco complicado darte una solución usando TUniForm, lo mejor es usar Frame.

Deja el formulario principal vació y cuando sepas que Frame debes mostrar, créalo y asocialo al formulario principal.

Neeruu
03-04-2013, 00:20:37
Y aunque sea complicado... podrías explicar como se puede hacer?

fremen
03-04-2013, 02:06:07
Hola

Mi respuesta fue un poco precipitada, no se puede cambiar el formulario de inicio una vez que el ejecutable esta arrancado (o la dll). Se puede cambiar mientras se ejecutan las secciones initialization de las unidades, pero una vez ejecutado dichas secciones no se puede hacer.

El problema está en esta línea:

initialization
RegisterMainFormClass(TMainForm);

Inicialmente pensé que no era necesario llamar a RegisterMainFormClass en la sección Initialización de la unidad, de hay que te dijera que si que se podía, pero una vez que me he puesto a hacer pruebas, he visto que estaba equivocado.

Neeruu
03-04-2013, 07:09:40
Hola

Mi respuesta fue un poco precipitada, no se puede cambiar el formulario de inicio una vez que el ejecutable esta arrancado (o la dll). Se puede cambiar mientras se ejecutan las secciones initialization de las unidades, pero una vez ejecutado dichas secciones no se puede hacer.


Podrías explicarme a que te refieres con:


Se puede cambiar mientras se ejecutan las secciones initialization de las unidades, pero una vez ejecutado dichas secciones no se puede hacer

fremen
04-04-2013, 02:31:48
Unigui sabe cual es el formulario principal a través de esta sentencia:

RegisterMainFormClass(UNA_CLASE_HEREDADA_DE_TUniForm);

Dicha sentencia debe de ser llamada en alguna sección initialization. Una vez arrancado el "sistema", dicha sentencia ya no funciona y Unigui devuelve una excepción cuando intenta arrancar el formulario principal.

Por ejemplo.


Var
ArrancaForm1: Boolean; // Es una variable global

...
unit 1
...
type
TFormulario1 = Class(TuniForm)
...

initialization
if ArrancaForm1 then
RegisterMainFormClass(TFormulario1);
end.
...
unit 2
...
type
TFormulario2 = Class(TuniForm)
...

initialization
if not ArrancaForm1 then
RegisterMainFormClass(TFormulario2);
end.


De esta forma puedes cambiar el formulario principal, pero SOLO en el arranque del sistema. Si existiera UnRegisterMainFormClass, seguramente se podría hacer en cualquier momento, pero Unigui no incorpora dicha funciona.

Espero haberme explicado :)

Neeruu
05-04-2013, 00:32:47
No lo probé pero pregunto....

Si esta linea es la encargada de registrar la ventana principal


RegisterMainFormClass(TFormulario1);


No seria suficiente poner acá el formulario que quiero que se abra como principal en tiempo de diseño y listo?

fremen
05-04-2013, 00:58:46
En tiempo de diseño lo puedes hacer, pero que sentido tiene ?? lo interesante es hacerlo en tiempo de ejecución.

Neeruu
05-04-2013, 01:07:21
jajajaja....

En realidad mi pregunta surgió porque empece por una parte del proyecto.... luego mi formulario principal cambio y no supe como hacer para que mi nuevo formulario principal se muestre primero....

fremen
05-04-2013, 12:31:43
La próxima vez di eso en el primer mensaje y no tenemos que estar como el ratón y el gato :) :)

:)

ASAPLTDA
30-04-2013, 18:02:53
Hola a todos...
Aclaro que todos los formularios que tiene mi aplicación son del tipo Aplication Form...
Esto esta bien? o solo el principal debería de ser Aplication Form y los demas del tipo Free Form?
Saluda Atte Neeruu!!!:)

Hola nos podrias explicar la diferencia entre ambas?
Gracias