Jump to content


Photo

Creacion de ventanas en Radus


  • Please log in to reply
9 replies to this topic

#1 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 posts

Posted 26 March 2012 - 06:49 PM

Hola:

Mi Nombre es Luis Roldan, de Mar del Plata, Argentina.
Soy integrante del club de delphi y hace poco me inscribi aqui y este es mi primer mensaje.
Uso como herramienta D2007 e Interbase. Ahora compre DXE2. El tema de ahora es que estoy haciendo una aplicacion que es una extencion de una prog. escrito en D5 y lo estoy haciendo en Radus. Por ahora todo bien, algunos contratiempos pero los fui superando sin problema. Bien, ahora lo que no puedo hacer es dentro de una ventana secundaria , abrir otra ventana, la cual me muestre de una tabla datos para insertar en la ventana principal. Es decir un buscador. Cuando intento hacer la apertura, esta no se abre. La pregunta es se puede abrir una ventana, que ya fue llamada de otro formulario, otra ventana? se entiende?

Gracias

Luis Roldan
Mar del Plata
Argentina
  • 0

#2 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 26 March 2012 - 08:09 PM

Hola
Bienvenido amigo chaja.
Pronto vendrán los que saben de Radus, paciencia. (y)
Saludos
  • 0

#3 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 27 March 2012 - 06:28 AM

Faltaría saber como abres las dos ventanas, tanto la que si te funciona como la que no.

El problema creo que viene de usar Form.ShowModal en lugar de Form.Show o Form.ShowModalNonBlocking, prueba con las dos formas a ver si consigues que te funcione, pero si haces un .ShowModal, hasta que no se cierre esa ventana no hay nada que hacer.
  • 0

#4 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 posts

Posted 27 March 2012 - 09:25 AM

Master:
bueno gracias por tu tiempo. Te cuento que desde lel form principal llamo a la pantalla secundaria asi:


delphi
  1. procedure TRaFormPrincipal.btContratistasClick(Sender: TObject);
  2. begin
  3.   Application.CreateForm(TRaFormContratistas, RaFormContratistas); // removed from FormsDynamicExe.dpr
  4.   //fmForm2.wForm2.Left := wForm1.Left + 40;
  5.   //fmForm2.wForm2.Top := wForm1.Top + 40;
  6.   RaFormContratistas.WContratista.Show;
  7.  
  8. // RaFormContratistas:=TRaFormContratistas.Create(Self);
  9. // RaFormContratistas.WContratista.Show;
  10. end;



luego dentro de esta ventana llamo a la otra asi


delphi
  1. procedure TRaFormContratistas.btBuscarClick(Sender: TObject);
  2. begin
  3.   Application.CreateForm(TRaFormBuscador, RaFormBuscador); // removed from FormsDynamicExe.dpr
  4.   //fmForm2.wForm2.Left := wForm1.Left + 40;
  5.   //fmForm2.wForm2.Top := wForm1.Top + 40;
  6.   RaFormBuscador.WBuscadorContratistas.Show;
  7. end;



en las propiedades de ambos formulario la opcion Modal es False.


Luis Roldan
Mar del Plata
Argentina

  • 0

#5 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 27 March 2012 - 12:47 PM

¿Que tipos de componentes estas usando? Ya sabes que hay tres: RaExt (con ventanas), RaSt (para moviles) o RaVCL (mismos componentes que la VCL).

Te lo digo porque en los RaSt para moviles creo que solo podia existir un Form, así que tras un form.create debes "matar" al form origen, por lo que se pierden las variables locales y sueles necesitar de una unidad tipo DataModule compartida por todos tus forms (antes de llamar el primer form, en la propia aplicacion, creas un form datamodule y le asignas una variable definida a nivel de proyecto -todo esto es editando el codigo del proyecto- de forma que desde cualquier form exista una variable "base" con tu datamodule) donde almacenes estas variables para que se "pasen" de un form a otro el estado de la aplicación.

Los otros dos tipos de componentes son mas tipo ventanas, y te permiten tener varios forms en pantalla, pero en ese caso, el último form.show quizás debería ser un form.showmodalnonblocking; para que no se pueda abandonar el form de busqueda sin cerrarlo antes.
  • 0

#6 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 27 March 2012 - 12:54 PM

Por cierto, es muy aconsejable echarle un vistazo a fondo a los ejemplos que se instalan con raudus, en ellos se ve como se hace un close de un form justo tras cambiar a otro form.show en según que ejemplos. Es de aquí de donde he aprendido como hacer las cosas en raudus sin mucho probar. La verdad es que los ejemplos son bastantes instructivos y la fuente principal de información sobre el uso "correcto" de raudus, aparte de la wiki que tiene algunos consejos adicionales, claro.

En especial, si utilizas RaVCL (que no creo, RaExt es más completo a fecha de hoy) mirate el ejemplo de la base de datos de peces, permite compilar para windows o como aplicacion raudus.
  • 0

#7 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 posts

Posted 27 March 2012 - 09:32 PM

Los otros dos tipos de componentes son mas tipo ventanas, y te permiten tener varios forms en pantalla, pero en ese caso, el último form.show quizás debería ser un form.showmodalnonblocking; para que no se pueda abandonar el form de busqueda sin cerrarlo antes.


He estado mirando y el comando form.showmodalnonblocking no me aparece como opcion estoy usando las ext.

Luis
  • 0

#8 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 28 March 2012 - 04:08 AM

Lo que necesitas lo he encontrado mirando en el ejemplo "C:\Archivos de programa\raudus\03-crossplataform\25-FormsHidden"

Si miras, cada Form es como si "ocupase todo el navegador" y por eso lleva dentro un TRaExtWindow con los componentes de verdad pegados dentro: Este RaExtWindows sería la ventanita que tu quieres mostrar o ocultar, NO es el Form completo el que hace el show (piensa en el form como algo que ocupa todo tu navegador, no puedes mostrar 2 forms a la vez en un navegador).

Fijate que cada form lleva dentro como primer componenete pegado esto:

TfmForm2 = class(TRaForm)
  wForm2: TRaExtWindow;

Asi, tras crear un Form2 del tipo TfmForm2, lo que haces no es Form2.Show, haces un Form2.wForm2.Show, de esta forma:



delphi
  1. procedure TfmForm1.RaExtButton1Click(Sender: TObject);
  2. var fmForm2: TfmForm2;
  3. begin
  4.   Application.CreateForm(TfmForm2, fmForm2);
  5.   fmForm2.Modal:= true;
  6.   fmForm2.wForm2.Left := wForm1.Left + 40;
  7.   fmForm2.wForm2.Top := wForm1.Top + 40;
  8.   fmForm2.wForm2.Show;



De todas formas, si tu form2 es una ventanita de busqueda, no tienes que dejar que el usuario "salga" de esta ventana hasta que no termine de buscar, asi que el form2 debería tener la propiedad "Modal" puesta a true. Con esto mas el código de arriba creo que ya te debería funcionar a la perfección.

Te repito que todo lo que quieras hacer con raudus esta mostrado en algún ejemplo, abrelos todos, uno a uno, compila y mira lo que hace, aprenderas mucho y tendras recursos para solucionar cosas como esta que te surjan (y ahorraras mucho tiempo a la larga).
  • 0

#9 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 posts

Posted 28 March 2012 - 09:36 AM

Ok:
ahora si vos qures hacer una tercera ventana? no te deja , al menos no lo pude hacer.....

Luis Roldan
  • 0

#10 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1092 posts
  • LocationMurcia, España

Posted 01 April 2012 - 02:30 PM

Solo dices que "no te deja" pero no das detalles... eso no es mucho con lo que poder ayudarte, intenta dar siempre todos los detalles si quieres que se te pueda ayudar (y perdón por el tirón de orejas).

El sistema que te puse arriba sirve para abrir todas las ventanas que quieras una detrás de otra, pero fíjate que mi código hace la segunda ventana modal antes de mostrarla, y eso quiere decir que hasta que esa ventana no se cierre, no se puede abrir ni pasar el control a ninguna otra ventana. La añadí pensando que eso es lo que querías al ser una ventana de busqueda, pero si no era eso, elimina esa linea y podrás seguir abriendo otras ventanas sin cerrar esta antes.

También puede estar pasándote que intentes crear una segunda ventana con el mismo nombre de objeto -el segundo parámetro al crearla- y eso también te daría un error de que ya existe un objeto con ese nombre (el mensaje de error nos habría dado la clave).

Si esto no te ayuda, tendrás que dar un poco más de información sobre porqué no te deja (a mis clientes de toda la vida les suelo responder a eso ¿esta tu ordenador encendido? anque mis socios dicen que es poco profesional, pero no puedo resistirme algunas veces  :D)
  • 0




IP.Board spam blocked by CleanTalk.