Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Forma creada ? (https://www.clubdelphi.com/foros/showthread.php?t=14026)

karocs 07-09-2004 21:05:50

Forma creada ?
 
Saludos

Como se puede preguntar en delphi si ya ha sido creada un Form.

Gracias de antemano

delphi.com.ar 08-09-2004 00:55:17

No es la misma pregunta, pero creo que el resultado te puede servir:http://www.clubdelphi.com/foros/show...56&postcount=2

Saludos!

karocs 08-09-2004 16:59:11

Forma creada ?
 
Saludos

gracias por tu respuesta, creo que voy a tratar con la primera solucion,
pero tengo una preguntita porque debo borrar el valor al cerrar la forma (OnClose), no seria mejor crearla una sola vez hasta que se deje de utilizar la aplicacion, o que me sugieres ?

muchas gracias de nuevo ;)

delphi.com.ar 08-09-2004 17:44:18

Cita:

Empezado por karocs
gracias por tu respuesta, creo que voy a tratar con la primera solucion, pero tengo una preguntita porque debo borrar el valor al cerrar la forma (OnClose), no seria mejor crearla una sola vez hasta que se deje de utilizar la aplicacion, o que me sugieres ?

Si la creas una sola vez, no tendrías problemas... pero si el form puede crearse mas de una vez, entonces necesitarás limpiar el valor para saber si no esta creada.

karocs 08-09-2004 19:41:45

Forma creada ?
 
Saludos ...


Bueno yo utilizo un menu y cuando quiero abrir una forma la creo en el item del menu.
Es que no quiero crearlas todas al iniciar la aplicacion porque son muchas y hay forms con muchos componenente y quiero que al cargar la aplicacion no se haga tan lenta

no se si lo estoy haciendo de la forma incorrecta

gracias...

jachguate 09-09-2004 00:03:12

Cita:

Empezado por karocs
Bueno yo utilizo un menu y cuando quiero abrir una forma la creo en el item del menu.
Es que no quiero crearlas todas al iniciar la aplicacion porque son muchas y hay forms con muchos componenente y quiero que al cargar la aplicacion no se haga tan lenta

no se si lo estoy haciendo de la forma incorrecta

gracias...

Me parece lo mas apropiado. Muchos optamos por destruir regularmente una forma tan pronto sea cerrada, también para mantener el mas bajo consumo de memoria posible. Claro que si es una forma que se espera el usuario abrirá y cerrará muchas veces, yo prefiero dejarla creada, sacrificando memoria por desempeño.

Hasta luego.

;)

Sick boy 18-06-2006 11:07:34

Se que ha pasado mucho tiempo, pero esta es mi pequeña gotita.

Creo que en algun caso, esto puede ser util, sobre todo si creamos el formulario una sola vez.

Código Delphi [-]
if assigned(nombre_form) then 
.....

Sabiendo si la variable esta asignada, podemos saber si el form esta creado.

Lo que dice delphi.com.ar en su hilo es muy correcto, pero a mi esta solución "rapida" me ha servido varias veces sin ningun problema

roman 19-06-2006 03:41:02

El problema es que esta solución rápida sólo servirá la primera vez que quieras abrir el formulario. Por ello es que Federico menciona

Cita:

Empezado por delphi.com.ar
Si la creas una sola vez, no tendrías problemas... pero si el form puede crearse mas de una vez, entonces necesitarás limpiar el valor para saber si no esta creada.

// Saludos

Sick boy 19-06-2006 15:06:18

Hola Roman,

la verdad es que yo mismo me di cuenta, por eso digo:
Cita:

Creo que en algun caso, esto puede ser util, sobre todo si creamos el formulario una sola vez.
Si el formulario puede crearse varias veces, no sirve, pero hay muchos casos en los que el formulario solo se crea una vez (al menos en mis aplicaciones) y en esos casos me sirve.

Como la pregunta es como saber si el form ya esta creado, con lo que puse puedes saber si esta creado al menos una vez.
Si se necesita controlar la existencia de otros forms, se me ocurre que tambien puedes usar un tag en el formulario.

Por ejemplo, si se quieren tener abiertos 4 forms iguales, y quieres que solo se puedan crear cuatro, y que si se cierra el 3, cuando crees el siguiente formulario sea el 3 (y no el 5), puedes preguntar antes de crearles si existen los formularios con un tag del 1 al cuatro. Vaya lio, no se si he podido explicarlo.

Codigo de delphi.com.ar modificado para identificar un tag. Supongo que sabemos el nombre del form, y se lo pasamos junto con el id que necesitamos.
Código Delphi [-]
function CheckForm(nombre:string,id:integer): boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to Screen.FormCount -1 do
    if ((Screen.Forms[i].name=nombre) and  (Screen.Forms[i].tag=id)) Then
    begin
      Result := True;
      Screen.Forms[i].BringToFront;
      Break;
    end;
end;

Seguro que hay otras muchas formas de hacer esto mismo, a mi se me ocurrió esta, si sabeis como mejorarla o algun problema que no he visto, seria bueno comentarlo.

saludos


La franja horaria es GMT +2. Ahora son las 17:09:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi