Ir al contenido


Foto

Ventanas Modadels


  • Por favor identifícate para responder
13 respuestas en este tema

#1 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 25 abril 2012 - 06:46

Hola:
Estoy quereindo hacer una pantalla de consulta con uniGui, por lo tanto tengo un FormPrincipal, desde un menu abor otra venta, que me mostrara el estado de cta cte de un cliente, y en esta ventana puse un boton que me lleva a otra ventana para buscar el cliente. En el modo normal uso Form..Show y para la centana de busqueda la llamo como ShowModal. Cuando cierro la ventana de busqueda, guardo en una propiedad del form el codigo del cliente, se cierra y en la pantalla de listado muestro los mov del cliente. Una pregunta, en uniGui, el concepto de Modal y no Modal es lo mismo que en VCL ? Pues si ejecuto esto en Win funciona como lo esperado, pero desde un navegador, abre todas las ventasn el buecado levanta los cliente pero al salir del buscador (pantalla modal) la otra no hace nada. no levanat los datos.


delphi
  1. procedure TuniFormCtaCteVta.UniButton1Click(Sender: TObject);
  2. begin
  3.   uniFormBuscadorCliente.ShowModal;
  4.     begin
  5.       DMMain.CDSCtaCte.Close;
  6.       DMMain.CDSCtaCte.Params.ParamByName('codigo').Value:=uniFormBuscadorCliente.Codigo;
  7.       DMMain.CDSCtaCte.Open;
  8.     end;
  9. end;


  • 0

#2 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 25 abril 2012 - 08:14

Existe un demo que creo podría ayudar a entender este funcionamiento para lo que deseas realizar, se encuentra en el directorio de instalación de uniGUI llamado Dialogs Anonymous Callback en la carpeta de instalación por defualt: C:\Users\Public\Documents\FMSoft\Framework\uniGUI\Demos\, indicanos si es de utilidad de lo contrario para poder ofrecer alguna otra alternativa para lo que buscas.

Saludos.
  • 0

#3 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 25 abril 2012 - 08:47

Reconsiderando el ejemplo que te mencioné anteriormente, te adjunto un demo que acabo de hacer para ver si es lo que buscas hacer.

Espero haber comprendido tu problema.  :)


Saludos

Archivos adjuntos


  • 0

#4 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 25 abril 2012 - 11:05

Hola fredyc:
Si hace lo que yo quiero, eso esta solucionado, pero el tema es asi. En general, cuando abro una pantalla como estas de busqueda, guaro en una propiedad del formulario el codigo o id del objeto buscado. El cual lo leo despues de cerrar la pantalla moda, luego ese dato como paramtero de la sigiente busqueda. Lo que veo es que en el formato web, las propiedades publicas no son tomdadas en cuenta:


delphi
  1. type
  2.   TuniFormBuscadorCliente = class(TUniForm)
  3.     UniPanel1: TUniPanel;
  4.     UniDBGrid1: TUniDBGrid;
  5.     uniEdDatos: TUniEdit;
  6.     btOk: TUniBitBtn;
  7.     btCancel: TUniBitBtn;
  8.     procedure UniFormCreate(Sender: TObject);
  9.     procedure uniEdDatosKeyPress(Sender: TObject; var Key: Char);
  10.     procedure btOkClick(Sender: TObject);
  11.     procedure btCancelClick(Sender: TObject);
  12.   private
  13.     { Private declarations }
  14.     FCodigo:String;
  15.   public
  16.     { Public declarations }
  17.   published
  18.     property Codigo:String read FCodigo write FCodigo ;
  19.   end;
  20.  
  21. function uniFormBuscadorCliente: TuniFormBuscadorCliente;



cuando retorno del buscador no me devuelve nada, por lo cual no me deja hacer la siguiente consulta. Algo que si hace en VCL, pero en web no. La question es como se declara una property o no se puede?.

Luis
  • 0

#5 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 25 abril 2012 - 12:05

:), creo ya haber entendido, la implementación me parace correcta para una aplicación de escritorio, dado que para mantener esta variable que buscas es necesario mantener en memoria la form, muy probablemente tengas problemas de rendimiento posteriormente considerando el número de usuarios; te recomendaria hacer lo mismo pero desde la form principal donde colocas esta misma variable y accedes a ella. Ya lo he probado y funciona con uniGUI como lo planteaste.

Saludos
  • 0

#6 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 25 abril 2012 - 07:07

Master:
Bienm, pero no te comprendi como solucionarlo.... y como solucionas lo del tema de los user.....

Luis
  • 0

#7 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 25 abril 2012 - 07:29

Master:
Bienm, pero no te comprendi como solucionarlo.... y como solucionas lo del tema de los user.....

Luis


Te adjunto el mismo proyecto anterior, solo pon atención en la form donde se supone buscamos algun dato, la variable o dato que captures ahí, podrás a volverlo a recuperar, del mismo modo como mencionabas, pero esta vez en la form principal.

Espero te ayude, saludos.

saludos

Archivos adjuntos


  • 0

#8 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 25 abril 2012 - 08:04

haaaaaaaaaaaaaa....... Ok entiendo usar una var global y llamarla.... de paso te pregunto.... y es algo que no vi en los ejemplos.... los form se pueden crear en tiempo de ejecucion? , tiene sentido? en el formato de VCL yo uso permanentemente esto:


delphi
  1. procedure TFMenu.FacturasVtaCCExecute(Sender: TObject);
  2. begin
  3.   if not (Assigned(FormCpbte_2)) then
  4.     FormCpbte_2 := TFormCpbte_2.Create(Application);
  5.   FormCpbte_2.Show;
  6. end;



cuando cierro el form hago :



delphi
  1. procedure TFormRubro_2.FormClose(Sender: TObject;
  2.   var Action: TCloseAction);
  3. begin
  4.   Action:=caFree;
  5.   inherited;
  6. end;
  7.  
  8. procedure TFormRubro_2.FormDestroy(Sender: TObject);
  9. begin
  10.   inherited;
  11.   FormRubro_2:=nil;
  12. end;



veo que aca no puedo puede ser??? los form no se destruyen...

Luis
  • 0

#9 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 25 abril 2012 - 08:46

Muy bien, la forma correcta de crear un Form en uniGUI es lo siguiente, notarás una diferencia en el Owner del Create:



delphi
  1. procedure TMainForm.UniButton1Click(Sender: TObject);
  2. var
  3.   AppForm: TAppUniForm;
  4. begin
  5.   AppForm:= TAppUniForm.Create(uniApplication);  <-- Checa el Owner
  6.   AppForm.Show;
  7. end;



y cerrar correctamente nuestra form sería algo como



delphi
  1. procedure TAppUniForm.UniFormClose(Sender: TObject; var Action: TCloseAction);
  2. begin
  3.   inherited;
  4.   Action:=caFree;
  5. end;




El sentido de crear forms en tiempo de ejecución, toma mucha importancia cuando administramos los recursos en este caso de un servidor, podrá notar o monitorear las diferencias en el monitor de recursos de uniGUI cuando trabajas de uno u otro modo, aunque hay veces que se puede justificar una form que probablemente solo baste ocultar para continuar ya que su uso es continuo.

Hay que notar que un equipo(servidor uniGUI) cargará con prácticamente la carga de trabajo y administración de nuestra aplicación.

Solo es comentario que en lo personal tomo muy en cuenta para este tipo y mayoría de mis proyectos.

Saludos
  • 0

#10 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 25 abril 2012 - 09:33

ok ok... despues del close, hay que hacer algo en el destroy? pues si lo llamo de nuevo, la variable puede estar cargada.... o estoy diciendo pavadas..... y esto no es valido?



delphi
  1. procedure TFMenu.FacturasVtaCCExecute(Sender: TObject);
  2. begin
  3.   if not (Assigned(FormCpbte_2)) then
  4.     FormCpbte_2 := TFormCpbte_2.Create(uniApplication);
  5.   FormCpbte_2.Show;
  6. end;



Luis Roldan
Mar del Plata
Argentina

  • 0

#11 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 26 abril 2012 - 08:43

Correcto, no esta esta realizando la validación correctamente para verificar la creación previa de la form, debe haber alguna alternativa, ya levante la pregunta en el foro oficial, esperemos saber la respuesta pronto.

Saludos


  • 0

#12 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 26 abril 2012 - 10:12

Aquí el enlace de la pregunta y la respuesta estimado Luis;

http://forums.unigui..._8607#entry8607

Ha mi entender este detalle de: saber si o no tenemos la instancia de una form creada, tenemos que llevarlo manualmente en algun tipo de registro o array como lo indica en el MainForm ó MainModule, depende de tu ingenio; esto resulta muy lógico dado que buscamos una instancia especifica de una sesión de un determinado equipo y no de aplicación principal como pasaría en una aplicación de escritorio común.

No parece complicado y va a razón más o menos del problema que ya habíamos tratado de tu variable.


Saludos.
  • 0

#13 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 26 abril 2012 - 09:48

Estimado amigo..:
para terminar, y pensando un poco , vale la pena hacer como en una aplicacion de escritorio, crear dinamicamente y cerrar y destruyendo form? pues la apl. correria del lado del cliente, no?, es decir se consume los recursos del que esta al otro lado de la web.... seria asi?... con este criterio que se me ocurre ahora, no me implica nada tener todos los form ya creados.... diferente en una apl de escritorio no?

Luis Roldan
Mar del Plata
Argentina
  • 0

#14 fredycc

fredycc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 874 mensajes
  • LocationOaxaca, México

Escrito 27 abril 2012 - 07:23

Como mencionara nuestro estimago egostar, depende, depende Luis; a mi parecer no debes nunca perder de vista el rendimiento de tu servidor uniGUI (o cualquier otra aplicación) a través de /server: http://prime.fmsoft....demo.dll/server, si notas en la pantalla de resources podrá notar la memoria consumida en tu servidor de X número de sesiones activas; podrás si tu tiempo te lo permite, checar las diferencias entre crear/eliminar y volver a crear una form u objeto notando la cantidad de memoria consumida en tu server y es que es de bien saber que hay cuestiones que puedes delegar al cliente(browser) y otras que en definitiva están del lado del server.

También es bueno saber que uniGUI permite compilar para 64 bits en XE2 lo que trae grandes ventajas incluyendo mayor acceso a la memoria.

Espero haberme explicado, saludos


  • 0




IP.Board spam blocked by CleanTalk.