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 28-06-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Pantalla de login minimizada no restaura

No se si le ha pasado a alguien, pero me trae un poco de cabeza.
Tengo un splash screen que hace también la función de identificar al usuario que quiere acceder al programa. El problema es que si pulso el icono de la barra de tareas de la aplicación, el programa se minimiza (como debe de ser). Lo que me vuelve loco es que luego no consigo que vuelva a restaurarse y aparezca en pantalla para aceptar o cancelar el acceso, y tengo que cerrarla con el administrador de tareas.

Código Delphi [-]
  Application.Initialize;

  FSplash := TFSplash.Create(Application);

  Application.CreateForm(TDatos, Datos);

  if FSplash.showModal = mrOk then
   begin
    Application.CreateForm(TDataMerge, DataMerge);
    Application.CreateForm(TInformes, Informes);
    Application.CreateForm(TFPrincipal, FPrincipal);
    Application.Run;
   end
  else
   begin
    Datos.Destroy;
    FreeAndNil(FSplash);
    Application.Terminate;
   end;

¿Puede ser que ocurra porque no ha pasado por Application.Run? Una vez iniciada la aplicación y mostrado el formulario principal todo funciona correctamente, es solo mientras se muestra el formulario de entrada.
Este funcionamiento me ha surgido en w7, no he probado en otros sistemas.

P.D. Acabo de encontrar que hay que poner

Código Delphi [-]
Application.MainFormOnTaskbar := True;

pero esto lo que hace es que la aplicación no aparece en la barra de tareas, y tampoco deseo eso.

Gracias anticipadas,
__________________
http://www.gestionportable.com
Responder Con Cita
  #2  
Antiguo 28-06-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pacopepin.

Acabo de hacer una prueba en otro equipo con W7 y de este modo funciona como esperas:
Código Delphi [-]
...
begin
  Application.Initialize;
  with TFSPlash.Create(nil) do
  try
    if ShowModal = mrOK then
    begin
      //...
      Application.CreateForm(TFPrincipal, FPrincipal);
      Application.Run;
    end;
  finally
    Free;
  end;
end.
(Con Delphi 7)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 29-06-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Muchas gracias, ecfisa. Mañana lo pruebo y ya te contaré.
__________________
http://www.gestionportable.com
Responder Con Cita
  #4  
Antiguo 30-06-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
pacopenin,

Cita:
Empezado por pacopenin
...Tengo un Splash Screen...si pulso el icono de la barra de tareas de la aplicación..se minimiza..luego no consigo que vuelva a restaurarse...
Te pregunto: ¿Que versión de Delphi utilizas?.

Te comento:

1- El código comentado en los Msg #1 y #2 funciona correctamente en Delphi 7 y Delphi 2006.

2- En Delphi 2010 los códigos comentados no funcionan, si se minimiza el Form Modal (De cualquier forma) este no puede restaurarse haciendo click en el toolbar de aplicaciones de Windows, para ello debe usarse un Task Manager para restaurar nuevamente el Form, este comportamiento es análogo en Windows XP, Windows Vista y Windows 7.

3- Un Workaround al problema es redéfinir el método CreateParams para cambiar el comportamiento del Form Modal en el toolBar al momento de minimizarse, con lo cual se logra la siguiente funcionalidad:

a- Si se hace click sobre el icono de la aplicación en el toolBar mientras se muestra el Form Modal, la aplicación no será minimizada.

b- Si se minimiza el Form Modal por medio de los controles del Form (BorderIcons), este podrá ser restaurado al hacer click en el icono de la aplicación en el toolbar.

Revisa este código:
Código Delphi [-]
program Project1;

uses
  SysUtils,
  Controls,
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin

  Application.Initialize;

  Form1 := TForm1.Create(Application);

  if Form1.ShowModal = mrOk then
  begin
     Application.CreateForm(TForm2, Form2);
     Application.CreateForm(TForm3, Form3);
     Application.Run;
  end
  else
  begin
     Application.Terminate;
  end;

end.
El código anterior muestra un Form Modal que permite el acceso o salida de la aplicación, siendo análogo en funcionalidad al mostrado en los Msg #1 y #2.

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  protected
     // Permite modificar el comportamiento del método virtual CreateParams.
     procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Modifica el comportamiento del método virtual CreateParams.
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
  begin
    ExStyle := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopWindow;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ModalResult := mrOk;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ModalResult := mrAbort;
end;

end.
El código anterior modifica el comportamiento del Form Modal al ser minimizado al toolbar por medio de un override al método CreateParams, con lo cual se logra poder minimizar y restaurar la aplicación del toolbar de Windows si esta activo el Form Modal.

Revisa este link:
Cita:
A more powerful Delphi Form : http://delphi.about.com/od/formsdialogs/l/aa073101a.htm
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-06-2013 a las 04:43:39.
Responder Con Cita
  #5  
Antiguo 01-07-2013
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Gracias a los dos.

ecfisa, probé lo que me comentas y no me ha funcionado, hace lo mismo que mi código (al menos en mis tests).

nlsgarcia utilizo d2009, pero también lo probé con d2007 y el resultado era el mismo.
El código que propones lo que hace es que evita que se minimice la aplicación al pulsar el icono del programa en la barra de tareas. En principio me sirve como solución. Otro efecto que no me gusta (pero sería un mal menor) es que se duplica el icono (aparece el de la aplicación y el del splash-form).

A veces cosas aparentemente triviales te hacen dar vueltas y vueltas y perder tiempo precioso que no tienes....

Gracias de nuevo a los dos.

Saludos,
__________________
http://www.gestionportable.com
Responder Con Cita
  #6  
Antiguo 01-07-2013
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿es windows vista o W7?
Si es así, una vez minimizada la splash, da doble clic en el icono de la barra de tareas.

Ni con NormalizeTopMost ni RestoreTopMost he podido solucionar ese tema, también me traía de cabeza y al final lo dejamos por imposible.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Problema con login y pantalla principal.. verito_83mdq OOP 6 07-01-2011 23:38:33
Pantalla login mrnovice MySQL 2 21-10-2008 18:22:20
como regresar a la pantalla de login personalizada al tener un error dbexpress Arturo Conexión con bases de datos 3 19-08-2006 20:46:32
Pantalla Login enecumene OOP 5 04-07-2006 01:52:30


La franja horaria es GMT +2. Ahora son las 08:15:10.


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