Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2007
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Exclamation Abrir la misma ventana varias veces

Hola!!!

cómo lo dice el titulo de mi mensaje me gustaria conocer como se pueden abrir la misma ventana varias veces en tiempo de ejecución, siendo una independiente de la otra.


En otras palabras la idea sería abrir la ventana a tantas veces como el usuario lo desee.

Gracias
Responder Con Cita
  #2  
Antiguo 30-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Depende de lo que quieras conseguir, pero, una forma simple puede esta:

Código Delphi [-]
uses
  UOtherForm;

procedure TMainFrm.ShowOtherForm(Sender: TObject);
begin
  TOtherForm.Create(Self).Show();
end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 30-10-2007 a las 06:53:21.
Responder Con Cita
  #3  
Antiguo 30-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Otra forma más:
Código Delphi [-]
procedure TForm1.Button1Click(...)
var OF :TOtherForm;
begin
  OF := tOtherForm.Create(Application);
  OF.Show;
  OF.lo que sea ;
end;

El punto es usar una variable local "OF", dentro de la rutina puedes usarla para lo que quieras. Cuando salga del procedimiento, se pierde la variable OF, pero la ventana tendrá su ciclo de vida normal.

Si necesitas buscar alguna ventana, consulta el objeto "Screen" de delphi, donde se enumeran todas las ventanas creadas de tu aplicación.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 30-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Lepe
El punto es usar una variable local "OF", dentro de la rutina puedes usarla para lo que quieras.
Pero, sabes que también puede hacerse sin usar variable alguna, gracias a la magia del "with" de Delphi:

Código Delphi [-]
  with TOtherForm.Create(Self) do
  begin
    Top := 10;
    Left := 10;
    Show();
  end;

Pero, vamos, que, la magia del "with" llega hasta donde llega.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 30-10-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hola, subzero.

¿Cuántas ventanas quieres? ¿10, 100?

Código Delphi [-]
var
  n: integer;
begin
  for n:=1 to 10 do
   with TOtraVentana.Create(Self) do
     begin
     Caption:='Ventana '+IntToStr(n);
     Left:=10*n;
     Top:=10*n;
     Show;
     end;
end;

Pero tengo una duda: para liberarlas de la memoria basta con pulsar la X, pero, ¿y si las quiero eliminar por código, es suficiente llamar al método Close, o hay que hacer algo más?

Saludos.

Última edición por ixMike fecha: 30-10-2007 a las 13:55:01.
Responder Con Cita
  #6  
Antiguo 30-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Podrías buscar un formulario partiendo de "Screen.Forms", empero,... dándole un padre, como se da a los formularios, cuando el padre se libere se encargará de hacer lo propio con sus hijos. Pero, vamos,... como dije al principio, depende de cómo se vea el asunto, según lo que quiera conseguirse, podría optarse por varias soluciones, estoy seguro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 30-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
procedure TForm1.Button1(click)
var
   with TOtraVentana.Create(Self) do

Al crear la ventana así, estás diciendo que el dueño es "Self", y es equivalente a decir que será la ventana donde está el botón. Al cerrar la ventana de tipo TForm1, se cerrará todas las ventanas que has creado en ese bucle for.


También puedes crear la ventana así:
Código Delphi [-]
procedure TForm1.Button1(click)
var
   with TOtraVentana.Create(nil) do
En este caso asegúrate de poner action := cafree; en el evento OnClose de TOtraVentana, al cerrarla, se libera de RAM. En este caso, llamando por código al método Close, también se libera de RAM.

Por cierto dec, en tu mensaje anterior has dicho "padre" (que podría confundirse con la propiedad Parent), estoy seguro que has querido decir "dueño", (del parámetro AOwner).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #8  
Antiguo 30-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; llevas razón Lepe. Debería haber dicho "dueño" y no "padre", que no es lo mismo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 30-10-2007
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Smile

Gracias a todos... tan pronto como pueda voy a revisar... gracias por colaborarme.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
evitar ejecutar la misma aplicacion 2 veces noe API de Windows 13 26-05-2008 19:30:03
abrir html en la misma ventana del Brows cahosoft API de Windows 1 23-11-2005 21:32:53
Abrir varias veces el mismo form Phacko Varios 7 25-09-2004 05:22:01
Imprimir algo varias veces. aoiTo Impresión 0 20-07-2004 19:12:49
ejecutar aplicacion 2 veces en misma maquina maruenda Varios 1 07-02-2004 19:19:24


La franja horaria es GMT +2. Ahora son las 06:59:12.


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
Copyright 1996-2007 Club Delphi