Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2009
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
Showmodal no muestra

Hola a todos!
tengo el siguiente código.
Código:
 
program Project1;
uses
  Forms,
  uAvisos in 'uAvisos.pas' {fAvisos},
  auxiliares in 'auxiliares.pas';
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TfAvisos, fAvisos);
  Auxiliares.ejecutar;
  Application.Run;
end.
Código:
 
unit uAvisos;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;
type
  TfAvisos = class(TForm)
    lTexto: TLabel;
    bAceptar: TBitBtn;
    bCancelar: TBitBtn;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  fAvisos: TfAvisos;
implementation
{$R *.dfm}
 
procedure TfAvisos.FormShow(Sender: TObject);
begin
  lTexto.Caption := 'Espere...';
end;
end.
Código:
 
unit auxiliares;
interface
procedure ejecutar;
implementation
uses uAvisos, forms;
procedure ejecutar;
begin
  fAvisos.Show;
  fAvisos.Close;
  fAvisos.Visible := False;
  fAvisos.ShowModal;
end;
end.
Mi problema es el siguiente:
Tal como está el código, no me saca el form fAvisos. En cambio si solo dejo el fAvisos.Showmodal
Código:
 
unit auxiliares;
interface
procedure ejecutar;
implementation
uses uAvisos, forms;
procedure ejecutar;
begin
{  fAvisos.Show;
  fAvisos.Close;
  fAvisos.Visible := False;}
  fAvisos.ShowModal;
end;
end.
sí que me lo muestra. ¿Alguien sabe qué estoy haciendo mal?

Muchas gracias a todos.
Jon
Responder Con Cita
  #2  
Antiguo 26-01-2009
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,

Bueno. Tal parece que, si muestra un formulario, y acto seguido lo cierras... dependiendo de la velocidad del ordenador es posible que hasta ni veas el formulario en cuestión, pues todo ocurre muy rápidamente. Sin embargo, cuando muestras un formulario "modal", este permanecerá "visible" hasta que no lo cierres explícitamente, desde el propio formulario, por regla general. Es decir, no es posible hacer esto:

Código Delphi [-]
formulario.Show();
formulario.Close();

Porque la segunda instrucción se ejecutará acto seguido de la primera, con lo que el formulario será "visto y no visto".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 26-01-2009
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias por contestar dec!
El tema es que cuando le pongo showmodal después de hacer el show y el close, no me muestra el form. Yo entiendo que si hago un showmodal me debe presentar el form, haya pasado lo que haya pasado antes.
No se si me explico....
Un saludo y gracias.
Jon

PD: el show y el close lo hago en el programa original por otros motivos. Le muestro un mensaje tipo ?espere...' mientras hago un proceso que tarda un tiempo. Es más del tipo
Código:
unit auxiliares;
interface
procedure ejecutar;
implementation
uses uAvisos, forms;
procedure ejecutar;
begin
  fAvisos.Show;
  ProcesoQueTardaMucho;
  fAvisos.Close;
  fAvisos.Visible := False;
  fAvisos.ShowModal;
end;
end.

Última edición por jonmendi fecha: 26-01-2009 a las 18:16:27.
Responder Con Cita
  #4  
Antiguo 26-01-2009
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Probablemente porque le tienes el visible a False, por eso cuando ejecutas el show-close-hide-showmodal no te lo muestra...
Responder Con Cita
  #5  
Antiguo 26-01-2009
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias por contestar luisgutierrezb!
lo que ocurre es que al hacerle el show pone visible a true, y si luego vuelvo a intentar abrir con el showmodal me dice "Cannot make a visible window modal". Y claro, pues tampoco interesa .

Misterio, misterio,...

Un saludo y gracias.
jon
Responder Con Cita
  #6  
Antiguo 26-01-2009
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola jonmendi,
Por como lo veo, el problema se debe a el Show-Close. Si lo abres, y luego lo cierras no lo verás; o cuanto mucho notarás un efecto de una ventana que se abre y cierra rápidamente como comentaba Dec.

Ahora, si después de eso muestras modalmente la ventana, no recibirás el control del programa sino es hasta que se cierre dicha ventana.

Si la abres, luego no intentes abrirla con ShowModal. No se porqué debes mostrar la ventana dos veces: primero con Show y luego con ShowModal.

Si te explicases mejor, con mayores detalles podríamos comprender tus dudas y proponerte soluciones y/o alternativas. Por cierto, emplea las etiquetas DELPHI por favor.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 27-01-2009
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias Delphius!
en la unit avisos tengo todos los avisos que le salen al usuario (siempre que esté todo controlado ).

Nada más entrar al programa, le sale un "Espere mientras se cargan datos', pero nada más hacer ese proceso, quiero que se le cierre la ventana y le saque otra de un aviso de como ha ido la carga. Ese segundo mensaje sí quiero que lo conteste el usuario.

Eso es lo que hace el código:

Código:
 
unit auxiliares;
interface
procedure ejecutar;
implementation
uses uAvisos, forms;
procedure ejecutar;
begin
  uAvisos.tipo := 1;
  fAvisos.Show;
  ProcesoQueTardaMucho;
  fAvisos.Close;
  uAvisos.tipo := 2
  fAvisos.Visible := False;
  fAvisos.ShowModal;
end;
end.
En la unit Avisos voy definiendo los diferentes mensajes y al mostrarlo elijo un texto u otro, un tipo de letra, unos botones....

No sé si ahora está más claro.

Muchas gracias a todos.

Jon
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Intraweb y ShowModal PatrickM Internet 8 04-10-2018 22:52:18
email yahoo, no muestra contenido..muestra todo menos contenido. sakuragi Linux 5 29-02-2008 19:11:27
Showmodal desde MDI pfsoft Varios 1 26-07-2006 10:07:15
MDIChild y ShowModal Neia OOP 3 03-07-2005 16:50:08
Error con ShowModal el_barto Varios 7 04-06-2005 18:51:44


La franja horaria es GMT +2. Ahora son las 18:06:36.


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