Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2005
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Poder: 23
lucasarts_18 Va por buen camino
Hola:

Código Delphi [-]
  
procedure TForm1.Button1Click(Sender: TObject);
begin
   if (Form2 <> nil) and not (Form2.Visible = true)  then
   begin
     Form2.Create(Self);
     Form2.Show;
   end;
end;

Saludos.
Responder Con Cita
  #2  
Antiguo 01-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Je, je. Es curioso. Vi el mensaje de lucasarts_18 en el mail y entré para indicar que algo está incorrecto y pues me percato que desde el ejemplo que yo puse está mal

La comparación no puede ser

Código Delphi [-]
if frm1 <> nil then

sino alrevés:

Código Delphi [-]
if frm1 = nil then

// Saludos
Responder Con Cita
  #3  
Antiguo 01-07-2005
uper uper is offline
Miembro
 
Registrado: abr 2004
Posts: 296
Poder: 23
uper Va por buen camino
muy bien pero, si cierro la ventana segunda ya no se vuelve a cargar, debo de cerrar la primer ventana y solo a si me vuleve a abrir la segunda ventana, el codigo corregido es este:
if frm2 <> nil thenbegin frm2 := Tfrm2 .Create(Self); frm2 .Show;end;
frm1 pricipal ventana
frm2 segunda ventana
gracias
Responder Con Cita
  #4  
Antiguo 01-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A ver. Creo que ya nos liamos.

El código que pones no es correcto según la aclaración que hice en el último mensaje.

En frm1, para abrir el segundo formulario pones:


Código Delphi [-]
if frm2 = nil then
begin
  frm2 := Tfrm2.Create(Self);
end;

frm2.Show;

En el evento OnClose del segundo formulario pones:


Código Delphi [-]
procedure Tfrm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  frm2 := nil;
end;

Si el segundo formulario está abierto entonces frm2 es distinto de nil y la condición en el primer código evita que se cree de nuevo.

Cuando cierras el segundo formulario, la asignación Action := caFree hace que el formulario se destruya y la asignación frm2 := nil vuelve a poner a nil la variable con la que te refieres al formulario. Entonces, cuando vuelves a intentar abrirlo, la condición (frm2 = nil) es ahora cierta y se vuelve a crear.

En cualquiera de los dos casos el formulario se muestra. Si ya existía, frm2.Show garantiza que se ponga al frente en caso de haber estado oculto por otra ventana.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 04:58:31.


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